请问各位谁知道达内培训 北京html55培训如何,急急急?

更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
收藏成功,可进入
查看所有收藏列表
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
用爱奇艺APP或微信扫一扫,在手机上继续观看
当前播放时间:
一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
html5培训多少钱
正在检测客户端...
您尚未安装客户端,正在为您下载...安装完成后点击按钮即可下载
, 可在设置中重新打开噢!
30秒后自动关闭
html5培训多少钱">html5培训多少钱
请选择打赏金额:
播放量12.7万
播放量数据:快去看看谁在和你一起看视频吧~
更多数据:
Copyright (C) 2017
All Rights Reserved
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
正在为您下载爱奇艺客户端安装后即可快速下载海量视频
正在为您下载爱奇艺客户端安装后即可免费观看1080P视频
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制¥详询¥详询
上课地点:北京海淀区宝盛北里西区**号
1、零基础入门
本课程从基础入门,适合想涉足前端开发的小白学习;
2、有基础进阶
本课程结合非常丰富的实战项目授课,也适合有基础的同学进阶学习。
1、在线直播授课
整个课程是以在线授课的形式进行,学员有问题可以即时反馈,解决独自看视频容易碰壁的烦恼;
2、高清视频录制
所有课程内容都会录制成高清视频,便于学员回顾和加强所学过的知识点。不担心落下一些课程内容;
3、课后及时答疑
“超强责任心”教学团队享誉行业内外,线上、线下解答你学习上的疑问,让你体会到高品质的增值服务;
4、无忧学习承诺
为了让学员能够无后顾之忧,用心体验精品课程内容,千锋承诺做到7天无条件退款。
HTML5大型讲师团队只有千锋能提供
只为更优秀的你
第1阶段 前端页面重构
(一)PC端页面重构
01、HTML基础02、CSS基础03、CSS核心属性04、盒模型05、页面重构及文本溢出的相关属性讲解06、元素类型07、定位,锚点,透明详解及应用08、图片整合 CSS Sprites(CSS精灵)09、宽高自适应10、浏览器兼容11、表单、表格的高级、CSS统筹12、PC端页面重构项目实战
(二)移动端页面重构
13、HTML5基础14、CSS3选择器15、弹性盒模型16、CSS3 媒体查询17、CSS3渐变及2D转换18、CSS3 3D转换及CSS3动画19、移动端布局基础知识与设备适配20、移动端页面重构项目实战
第二阶段 JavaScript高级程序设计
(三)JavaScript基础
21、JS基本语法22、逻辑分支和循环语句23、函数及作用域24、数组和排序25、String和内置对象26、BOM27、DOM28、Event事件(上)29、Event事件(下)30、Cookie31、正则及表单验证32、在线答疑(上)33、在线答疑(下)
(四)JavaScript进阶
34、ES5和ES635、运动(上)36、运动(下)37、面向对象编程38、贪吃蛇游戏39、设计模式40、移动端布局基础知识与设备适配41、移动端页面重构项目实战
第三阶段&PC端全栈项目开发
(五)jQuery库
40、jQuery基础41、jQuery高级
(六)前端工程化与模块化
42、Gulp与Sass43、Git与SVN44、RequireJS模块化
(七)前后端合作
45、Ajax(上)46、Ajax(下)和Promise47、前端安全及项目开发流程
第四阶段 移动端项目开发
(八)NodeJS基础
48、NodeJS基础(上)49、NodeJS基础(下)
(九)MongoDB数据库
50、MongoDB使用
(十)Express EJS项目实战
51、Express EJS基础52、项目实战(上)53、项目实战(下)
(十一)Socket
54、Socket,WebSocket,Socket.io55、应用Socket技术的项目实战56、在线答疑(上)57、在线答疑(下)
第五阶段 混合(Hybrid,ReactNative)开发
(十二)Touch端WebApps开发
58、Canvas59、本地存储与多媒体60、微场景开发61、M站开发(上)62、M站开发(下)63、在线答疑(上)64、在线答疑(下)
(十三)React
65、Webpack(上)66、Webpack(下)67、React基础(上)68、React基础(中)69、React基础(下)70、Flux与Redux(上)71、Flux与Redux(下)72、Antd 组件库介绍及使用73、React项目实战(一)74、React项目实战(二)75、React项目实战(三)76、React项目实战(四)
(十四)Vue.js
77、Vue.js基础(上)78、Vue.js基础(中)79、Vue.js基础(下)80、Vue.js动画81、Vue.js路由82、Vue.js单文件组件83、Vuex84、MintUI组件库介绍与使用85、Element.ui组件库介绍与使用86、Vue.js项目实战(一)87、Vue.js项目实战(二)88、Vue.js项目实战(三)89、Vue.js项目实战(四)
(十五)AngularJS
90、AngularJS基础(上)91、AngularJS基础(中)92、AngularJS基础(上)93、NgRoute与ui-router94、ionic组件库介绍与使用(上)95、ionic组件库介绍与使用(下)96、AngularJS项目实战(一)97、AngularJS项目实战(二)98、AngularJS项目实战(三)99、AngularJS项目实战(四)100、在线答疑(上)101、在线答疑(下)
(十六)微信小程序
102、初识微信小程序103、小程序框架介绍104、小程序组件105、复杂API介绍106、小程序项目实战(上)107、小程序项目实战(中)108、小程序项目实战(下)
第六阶段 WebApp后端系统开发
109、了解原生APP与混合开发110、phonegap/cordorva111、Mui与H5 (上)112、Mui与H5 (下)113、微信公众号开发(上)114、微信公众号开发(下)115、在线答疑(上)116、在线答疑(下)
全部评价( 0 )
好评( 0+ )
中评( 0+ )
差评( 0+ )
联系电话:
所在区域:
学习内容:
我们将对您的信息严格保密!
他们都在学
热门培训专业
人气学校推荐
最新教育资讯一个学期前我也和楼主差不多不知道这些都是啥,一个学期之后差不多都弄懂了,来讲讲自己的理解吧 & & 因为接触的时间不是很长,有错误的地方欢迎指正~&br&&br&首先要知道网站访问大概是什么个过程:&br&假设你在浏览器地址栏输入这个问题的地址&br&&div class=&highlight&&&pre&&code class=&language-text&&/question/
&/code&&/pre&&/div&访问过程和下图差不多,浏览器和服务器交流,服务器和数据库交流(有时候数据库就在服务器那台机子上)&br&&br&&figure&&img data-rawheight=&591& data-rawwidth=&842& src=&/581ae59a16e_b.jpg& class=&origin_image zh-lightbox-thumb& width=&842& data-original=&/581ae59a16e_r.jpg&&&/figure&&br&&b&HTML 与 CSS&/b&&br&你家电脑拿到一个 html (就是上图 HTTP 响应的 body 里的内容)之后,就会对它进行解析渲染。HTML 就是一种标记语言。类比一下,大家在论坛上经常会用一些代码来添加富文本内容,举一些栗子:&br&&ul&&li&&div class=&highlight&&&pre&&code class=&language-text&&[img]图片地址[/img]
&/code&&/pre&&/div&
用来贴图&/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&[url]超链接[/url]
&/code&&/pre&&/div&
用来贴地址&/li&&li&&div class=&highlight&&&pre&&code class=&language-text&&[del]呵呵[/del]
&/code&&/pre&&/div&
表示标签里的文字应该被删掉(默认添加删除线效果)&/li&&/ul&这种&b&论坛代码&/b&也是一种标记语言,HTML 的作用就和它差不多。服务器返回给你的html文件里面,写的是一些代码,大概是这样的:&br&&figure&&img data-rawheight=&384& data-rawwidth=&511& src=&/def15af96af6_b.jpg& class=&origin_image zh-lightbox-thumb& width=&511& data-original=&/def15af96af6_r.jpg&&&/figure&浏览器拿到这些代码之后,分析一下给你渲染好页面显示出来,如果不用css,效果是这样的,按照浏览器默认的样式显示出列表、图片、超链接、输入框、按钮等等:&br&&figure&&img data-rawheight=&362& data-rawwidth=&330& src=&/8df8c13db4c5_b.jpg& class=&content_image& width=&330&&&/figure&&br&是不是觉得默认样式有点看瞎狗眼呢……所以很多时候我们需要自定义样式,现行通用的规定样式的语言是CSS,我们可以用它写一些定义样式的代码,然后在 html 文件里用一个&link&标签把这些规定样式的 CSS 代码与表达内容语义的 HTML 代码关联起来,然后你就能看到一个符合人类正常审美的页面了:&br&&figure&&img data-rawheight=&296& data-rawwidth=&662& src=&/09c5fafc7cc4_b.jpg& class=&origin_image zh-lightbox-thumb& width=&662& data-original=&/09c5fafc7cc4_r.jpg&&&/figure&&br&CSS 代码的格式基本是&br&&div class=&highlight&&&pre&&code class=&language-text&&属性:值
&/code&&/pre&&/div&比如知乎顶上那个蓝色的导航条,它的 CSS 大约是这样的&br&&figure&&img data-rawheight=&256& data-rawwidth=&408& src=&/3f351f51aff2be4742b1_b.jpg& class=&content_image& width=&408&&&/figure&&br&第一个属性对应的代码翻译成人话,就是它的位置(position)应该是不动(fixed)的,浏览器会兢兢业业地去实现这段代码要求实现的效果,
所以你在页面上翻来翻去顶上那个导航条都会死死地黏在窗口顶部不跟着滚动。&br&再拿里面的其他几个属性做栗子解释一下就是:&br&&ul&&li&left 和 top
为零指明这个导航条要紧贴着窗口的左上角&/li&&li&width 和 height 指定这个导航条的宽和高&/li&&li&background
指明这个导航条的背景是一种渐变的蓝色&/li&&/ul&浏览器就会根据这些 CSS 代码,“画”出对应的样式。&br&&br&&b&HTML 5 与 XHTML&/b&&br&像人的语言一样,网络上的网页里的 HTML 代码也不一定是标准的,好比有时候你发音不太标准,别人会去猜测你说的到底是什么一样,有些时候前端程序猿不小心写错了 HTML,浏览器也会试图猜测他们原来想写的是什么,做对应的渲染,而猜是要有一个常识做依据的。加上有些浏览器支持一些标签,有一些又不支持,以及其他混乱的情况,为了防止大家鸡同鸭讲,我们需要对 HTML 代码里能有什么标签,标签怎么写,标签可以有什么属性这些东西有一定的共识,建立一个通行的标准,HTML5 就是其中一个比较新的标准。这个标准新加了很多可以用的标签和属性,然后各大浏览器也吭哧吭哧按这个标准去实现了很多这些新加的标签和属性,本来前端程序员要写一堆代码去实现的效果,现在浏览器都给你实现好了,只要写两三行,调用一下浏览器给你实现的部分就能搞定,简单愉快,所以很多人都在热情地推广这个标准~(当然新标准也不可能是完美的,总会有一些问题,怕跑题这里按下不表~)&br&&br&至于 XHTML,就是 HTML 的近亲 XML 和 HTML 自己的杂交品种,对语法要求比较严格,并且为了兼容 XML,在语法上与 HTML 有一些不同~&br&&br&&b&JavaScript 与浏览器脚本&/b&&br&有了表示内容和语义的 HTML,规定样式的 CSS,得到的是一个静态的页面,没什么动画(其实用 CSS 还是可以有一些动画的,不过这个跑题了),按 F5 才会刷新数据,都 21世纪了,这么呆板单调的网页怎么能展现我大智人种族的创造性口胡!于是我们有了 Javascript(JS) 来给页面添加一些动态的效果,比如知乎问题的标签,鼠标移上去会弹出一个小窗口,这个就是 JS 实现的效果啦。&br&&br&&figure&&img data-rawheight=&274& data-rawwidth=&532& src=&/dcb4e911b7ee1e363213_b.jpg& class=&origin_image zh-lightbox-thumb& width=&532& data-original=&/dcb4e911b7ee1e363213_r.jpg&&&/figure&&br&浏览器都会帮你实现一些 JS 可以用的工具(函数,对象什么的),你只要写一些 JS 的代码,保存在 xxx.js 里,在 html 文件中用
&script& 关联进来就可以用了,像上图这个效果应该就包括了 &br&&ol&&li&鼠标悬停到标签上时创建一个新的 &div& 小窗口 &br&&/li&&li& 用 JS
向知乎服务器发送一个请求,得到这个小窗口应该显示的数据,放在这个小窗口里(这就是所谓的AJAX,不用刷新就能与服务器进行交互,更新页面的一小部分~)&/li&&/ol&浏览器拿到这样的代码,就会解析并实现出相应的效果,楼主问的浏览器脚本,指的就是这样子的代码。其实用来写浏览器脚本的,也不是非得JavaScript 不可,当年还为到底用什么语言写这种代码有过一段战火纷飞的时期,但现在尘埃落定,各大浏览器都默认了:请用
JS 写这些动态效果的代码给我解析~&br&&br&以上就是前端部分的内容,下面简述一下后端的东西吧& &&br&&br&&b&Web Server 和 Web Services&/b&&br&浏览器给服务器发一个请求,服务器不是一看就知道怎么响应的。首先这些请求和响应要有一个通用的写法,也就是要有一个协议,常用的是 HTTP 协议。&br&像最前面的图,服务器的响应写了一个状态码 200 OK ,是 HTTP 协议里约定俗成的一个东西,服务器写 200 OK 在响应里,表示“你请求的这个东西我有”,如果是404 Not Found,就是“你请求的这个东西我这里没有”。&br&HTTP 响应里还包括很多东西,比如 Content-type 表示服务器发过来的文件类型是什么(文本?动画?图片?音频?),这样发过去了人家浏览器好知道怎么展示给用户看。人家服务器怎么知道按协议要写什么东西进去呢,这就是 Web Server 干活的时候了。&br&&br&形象化一下HTTP响应,大概就长这样:&br&&figure&&img data-rawheight=&351& data-rawwidth=&284& src=&/73fc01d295c7e015c1d80_b.jpg& class=&content_image& width=&284&&&/figure&&br&再上个锤子,浏览器和服务器之间请求响应的过程大致是长这样的,右下角的那些东西就是由 Web Server 生成的(服务器脚本可以做一些改动,但这些一般是 Web Server 的份内活):&br&&figure&&img data-rawheight=&349& data-rawwidth=&1364& src=&/2fdad81d11618addfbdf65_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1364& data-original=&/2fdad81d11618addfbdf65_r.jpg&&&/figure&&br&&br&再比如说很多时候你访问一个网站,浏览器里输的地址并没有写明你请求的文件,比如这个问题的地址是:&div class=&highlight&&&pre&&code class=&language-text&&/question/
&/code&&/pre&&/div&但知乎的服务器其实返回了一个html给你,服务器怎么知道这个地址对应要返回什么样的 html 代码给你的?也是 Web Server 干的活。&br&&br&除了浏览器输地址敲回车这种赤裸裸的访问,客户端与服务器的交互还有很多种,比如:&br&&ul&&li&前面提到的用 JS 完成的 AJAX,有点像浏览器和服务器之间的悄悄话~&/li&&/ul&还有其他应用软件与服务器的交互,比如:&br&&ul&&li&微信、QQ 与腾讯的服务器的交互&/li&&li&网游客户端与网游公司服务器的交互&/li&&li&搜索引擎用来搜集网页信息的程序(爬虫)与各种各样的网站服务器的交互&br&&/li&&li&只要你知道用什么地址访问、怎样访问人家的服务器,并且有相应权限,你也可以自己写一些程序去和他们的服务器交互(比如用&a class=& wrap external& href=&///?target=http%3A///wiki/%25E5%25BE%25AE%25E5%258D%259AAPI& target=&_blank& rel=&nofollow noreferrer&&微博API - 新浪微博API&i class=&icon-external&&&/i&&/a&获取微博,开发第三方应用或者做数据分析)。&/li&&/ul&从这些栗子里可以看出,客户端与服务器的交互的主体、客体、载体是五花八门的:&br&&ul&&li&服务器可以是大型机也可以是个人电脑,只要能跑相应的程序就行&/li&&li&客户端像前面举的栗子里一样,可以是各种软件,而且这些软件不一定运行在个人电脑上,也可以是手机、平板、智能穿戴设备等等&/li&&li&有时候不是传生成好的 HTML 或者其他服务器上已经有的文件,而是传输经过一定逻辑处理后生成的字符串或者其他各种封装好的数据&/li&&/ul&像前面提到的 HTML 需要有一定标准一样,为了防止混乱和鸡同鸭讲,我们又需要先对这些机器需要怎么交互达成一定共识,再让它们进行交流。人与人之间通信,需要先有一种大家都认识的写法(比如简体字/繁体字)和一种彼此都懂的语言(比如普通话/广东话)。要让这些形形色色的机器能够通过网络进行交互,我们就需要指明一种协议(比如 HTTP/HTTPS)和一种数据封装格式(比如 HTML/XML),Web Server 提供的 Web Service,指的就是这种协议+格式的交流体系。不过 Web Service 的生态系统和 HTML 的标准不一样,用户可以选择的协议和数据封装格式更多,普通的网站访问用的 HTTP + HTML 只是其中一种,一些封闭系统内的交流还可以自己定义一个协议和格式来用(比如 QQ)。&br&&br&Web Service 传输的数据再经由本地客户端(浏览器、QQ/微信,网游客户端等)的分析渲染,就能够以普通人能够理解的形式展现出来。此外还有一些 Web Service 并不是为普通用户设计的,像前面提到的微博API,是用来给程序猿进行二次开发的~ &br&&br&除了提供 Web Service, Web Server 还会兼顾很多功能,包括提供缓存,平衡负载,这样在访问量比较大的时候能有有条不紊地接客。常见的现成的 Web Server 有开源的 Apache、Nginx和微软的IIS,你也可以用一些工具(比如 Node.js )自己定制一个。因为 Web Server 需要比较好的性能,所以投产时用的 Web Server 通常是C/C++/Java写的,但是其实很多语言都可以写,而且配合上语言底层的优化和好的模型,其他语言写的 Web Server也可以有不错的表现。&br&&br&&b&PHP ,服务器脚本,Web Framework&/b&&br&开头那张图里服务器接到请求之后可以给访客发送对应的文件,但21世纪的服务器怎么可能只会“接请求-发文件”这么弱智的一招呢,人家还可以处理你上传来的文件的!还可以接受你发过来的各种请求,去操作服务器本地的文件or数据库的!要干这些事,自然服务器那边也少不了要有代码了,这些代码就是服务器脚本。前面说的 Web Service 传输的数据,主要也是由服务器脚本生成,再交由 Web Server ,按照某种协议套好整个响应的格式,返回给客户端的。&br&&br&同一个网址,每个人看到的页面不一定是一样的,比如知乎首页的网址都是&br&&div class=&highlight&&&pre&&code class=&language-text&&/
&/code&&/pre&&/div&但是没登陆和登陆之后看到的东西不一样,登陆之后每个人看到的导航栏的用户信息,关注的动态,都不一样。服务器脚本可以对这些不同的状态,生成不同的页面,交给 Web Server 返回给浏览器。&br&知乎的主页给大家看到的 html 整体来说是差不多的,都有导航栏,左边是关注的动态,右边是广告和边栏,每一块的整体构造大同小异,只是一些地方内容有所区别。服务器脚本就是利用已知的数据,在这些因人而异的地方填入相应的内容,生成给每个人看的页面。&br&比如我的主页,导航栏右边的头像和名字跟别人看到的不一样,就是因为这块地方有一个放图片的&img&标签和一个写名字的&span&标签,服务器脚本在查询本地的数据之后给我返回的页面里&img&的标签填了我头像的图片链接,&span&标签里填了我的名字,给别人的页面就填其他链接、其他名字,这样每个人看到的页面就不一样了。&br&&figure&&img data-rawheight=&56& data-rawwidth=&597& src=&/500c9bdd6bf249eec5b084_b.jpg& class=&origin_image zh-lightbox-thumb& width=&597& data-original=&/500c9bdd6bf249eec5b084_r.jpg&&&/figure&&br&&figure&&img data-rawheight=&93& data-rawwidth=&559& src=&/11f27dccc90da76a1ac3c2_b.jpg& class=&origin_image zh-lightbox-thumb& width=&559& data-original=&/11f27dccc90da76a1ac3c2_r.jpg&&&/figure&&br&PHP 就是一种常见的用来写服务器脚本的语言,其实只要是能拿来写大家传输数据的通用接口(CGI)的语言都可以用来写服务器脚本(也就是说几乎所有编程语言都可以写 = =b),只是因为现成工具的丰富程度和专攻程度不一样,所以有一些语言在写服务器端脚本的时候会比较热门。&br&&br&为了方便,我们在写服务器脚本的时候,通常还会用个同语言写的 Web Framework 来处理各种细节,防御一些常见的攻击,提供跨站认证(比如用已有的微博账号注册其他网站)的接口,利用cookie处理登陆状态和用户设置,生成网页模版之类的。如果你用 C# 或者 Visual Basic 写服务器脚本,就可以用 &a href=&///?target=http%3A//ASP.NET& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&ASP.NET&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 这个框架实现这些功能,帮你省点麻烦。不过现在不少人是反过来为了一个好用的 Web Framework 去选择它对应的服务器脚本语言的。&br&&br&&b&一个普通网站访问的过程&/b&&br&简单概括一下,对于我们普通的网站访问,涉及到的技术就是:&br&&ol&&li&用户操作浏览器访问,浏览器向服务器发出一个 HTTP 请求;&/li&&li&服务器接收到 HTTP 请求,Web Server 进行相应的初步处理,使用服务器脚本生成页面;&/li&&li&服务器脚本(利用Web Framework)调用本地和客户端传来的数据,生成页面;&/li&&li&Web Server 将生成的页面作为 HTTP 响应的 body,根据不同的处理结果生成 HTTP header,发回给客户端;&/li&&li&客户端(浏览器)接收到 HTTP 响应,通常第一个请求得到的 HTTP 响应的 body 里是 HTML 代码,于是对 HTML 代码开始解析;&/li&&li&解析过程中遇到引用的服务器上的资源(额外的 CSS、JS代码,图片、音视频,附件等),再向 Web Server 发送请求,Web Server 找到对应的文件,发送回来;&/li&&li&浏览器解析 HTML 包含的内容,用得到的 CSS 代码进行外观上的进一步渲染,JS 代码也可能会对外观进行一定的处理;&/li&&li&用户与页面交互(点击,悬停等等)时,JS 代码对此作出一定的反应,添加特效与动画;&/li&&li&交互的过程中可能需要向服务器索取或提交额外的数据(局部的刷新,类似微博的新消息通知),一般不是跳转就是通过 JS 代码(响应某个动作或者定时)向 Web Server 发送请求,Web Server 再用服务器脚本进行处理(生成资源or写入数据之类的),把资源返回给客户端,客户端用得到的资源来实现动态效果或其他改变。&/li&&/ol&注意这只是小网站里比较常见的模型,大网站为了解决规模问题还会有很多处理,每个环节都会有一些细微的差异,中间还会使用各种各样的工具减轻服务器的压力,提高效率,方便日常维护~&br&&br&&b&延伸阅读&/b& —— &b&那些看花眼的名词&/b&&br&为了方便调试,很多 Web Framework 会自带一个简单的 Web Server,或者有些 Web Server 会自带一个简单的 Web
Framework ,实际部署到服务器上开放使用的时候为了性能或者安全等多方面的考虑,可以把内置的 Web Server 换成其他的,比如
Apache 或者 Nginx (举个栗子,知乎用的是 Tornado 做 Framework,Server 换成了 Nginx,见&a class=&internal& href=&/question/&&知乎使用了哪些框架和开源库?&/a&)。如果是开源的东西,还可以在遵守开源协议的前提下自己改一下再用~&br&&br&因为后端不像前端已经有 HTML + CSS + JS 这样的既定事实标准,服务器脚本与 Web Framework
的选择很多,所以新手会听到很多眼花缭乱的技术名词的地方多在这里~
举一些栗子,早年常见的服务器端语言有:&br&&ul&&li&开源的 PHP&/li&&li&Sun 公司的 JSP 中使用的 Java&/li&&li&微软的 ASP 中使用的 VBScript&/li&&/ul&现在在这方面的应用热起来的语言有&br&&ul&&li& Python,对应常见的 Framework 包括知乎和Quora有用到的 Tornado(其实是自带 Framework 的 Web Server),社区很成熟的 Django (用户包括 Instagram、Pinterest)等&/li&&li&Ruby,一般都用 Rails 这个 Framework,用户包括 Github、早期的 Twitter 等&br&&/li&&li&逆天的 JavaScript,有了 Node.js 这个平台,Web Server、服务器脚本和浏览器脚本全都可以用
JavaScript 来写……Node.js上最常用的 Framework是Express&br&&/li&&li&微软家的则跟着 &a href=&///?target=http%3A//ASP.NET& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&ASP.NET&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 转移到了C# 或者 Visual Basic&/li&&li&Erlang,擅长大规模的并发,不少游戏公司拿来写服务器,靠几十个工程师支撑几亿用户的WhatsApp也是用的这个~&/li&&/ul&几种常见的架构包括:&br&&ul&&li&LAMP = Linux + Apache + MySQL + PHP(P还可能是Python或Perl。有时候L会改成W=Windows。),也就是服务器上的操作系统是 Linux,Web Server 用 Apache,数据库用 MySQL,服务器脚本用 PHP,这些都是开源技术,网站起步时用起来的成本会比较低,所以是普通网站里非常常见的架构(虽然对于发展得很大的网站会遇到很多瓶颈),Facebook就是这种,淘宝也曾经是。&/li&&li&J2EE,Java 世界的架构,通常是企业用的(银行、大型公司,.etc),比较常见地还会搭配一种 UNIX 做操作系统,Apache 做 Web Server,Tomcat 转换 JSP 到 Java 给服务器程序用(其实它也自带 Web Server),Oracle 数据库等等。不一定拿来建站,常常用来提供企业里的各种需要用到网络的业务。我们学校教务系统就是用J2EE做的=。= 淘宝现在也是从LAMP转型到了这个。&br&&/li&&li&&a href=&///?target=http%3A//ASP.NET& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&ASP.NET&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,微软家的架构,通常会搭配 Windows Server 操作系统,SQL Server 数据库,IIS 做 Web Server。StackOverflow和京东(曾经)就是这个架构。&/li&&li&神奇的MEAN架构,MongoDB做数据库,Express做 Web Framework,Angular 做前端的 JavaScript 框架,Node.js 用于编写 Web Server。神奇之处在于这几个东西的语言都是 JavaScript (MongoDB的实现不是,但与外界沟通用的语言是)。因为是比较新的架构,还有待时间的考验,不过被很多人(尤其是靠 JavaScript 吃饭的前端程序猿们)热切关注。&/li&&li&一般来说重点不在技术而且在乎成本的新网站比较喜欢用 LAMP,重视安全稳定和速度的企业和机构喜欢 J2EE,想省事的网站喜欢 &a href=&///?target=http%3A//ASP.NET& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&ASP.NET&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,比较 Geek 的网站和创业公司喜欢折腾各种 Python、Ruby、Node.js世界的东西,Google 这样现成的技术都解决不了需求的超大型网站就自己折腾解决方案。&br&&/li&&/ul&虽然可以用的语言和所属体系五花八门,其实服务器端程序要做的事情本质上都差不多的,就好比自然世界中要表达“吃过了没”这句话的意思,你可以用各种各样的语言在各种各样的场景里表达出来~
一个学期前我也和楼主差不多不知道这些都是啥,一个学期之后差不多都弄懂了,来讲讲自己的理解吧 & & 因为接触的时间不是很长,有错误的地方欢迎指正~ 首先要知道网站访问大概是什么个过程: 假设你在浏览器地址栏输入这个问题的地址 /…
额。。最高票答案没答到点子上,最后怎么跑到Nodejs上去了。。Websocket只是协议而已。。&br&我一个个来回答吧&br&&br&&b&一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)&/b&&br&首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充可以通过这样一张图理解&br&&figure&&img src=&/ec133b0e6d7e6d0e194b4c_b.jpg& data-rawwidth=&374& data-rawheight=&133& class=&content_image& width=&374&&&/figure&有交集,但是并不是全部。&br&另外Html5是指的一系列新的API,或者说新规范,新技术。Http协议本身只有1.0和1.1,而且跟Html本身没有直接关系。。&br&通俗来说,你可以用HTTP&b&协议&/b&传输非Html&b&数据&/b&,就是这样=。=&br&再简单来说,&b&层级不一样&/b&。&br&&br&&b&二、Websocket是什么样的协议,具体有什么优点&/b&&br&首先,Websocket是一个&b&持久化&/b&的协议,相对于HTTP这种&b&非持久&/b&的协议来说。&br&简单的举个例子吧,用目前应用比较广泛的PHP生命周期来解释。&br&1) HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么&b&在&/b&HTTP1.0&b&中&/b&,这次HTTP请求就结束了。&br&在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。&br&但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是&b&被动&/b&的,不能主动发起。&br&&br&&b&教练,你BB了这么多,跟Websocket有什么关系呢?&/b&&br&_(:з」∠)_好吧,我正准备说Websocket呢。。&br&首先Websocket是基于HTTP协议的,或者说&b&借用&/b&了HTTP的协议来完成一部分握手。&br&在握手阶段是一样的&br&-------以下涉及专业技术内容,不想看的可以跳过lol:,或者只看加黑内容--------&br&首先我们来看个典型的Websocket握手(借用Wikipedia的。。)&br&&div class=&highlight&&&pre&&code class=&language-text&&GET /chat HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
&/code&&/pre&&/div&熟悉HTTP的童鞋可能发现了,这段类似HTTP协议的握手请求中,多了几个东西。&br&我会顺便讲解下作用。&br&&div class=&highlight&&&pre&&code class=&language-text&&Upgrade: websocket
Connection: Upgrade
&/code&&/pre&&/div&这个就是Websocket的核心了,告诉Apache、Nginx等服务器:&b&注意啦,窝发起的是Websocket协议,快点帮我找到对应的助理处理~不是那个老土的HTTP。&/b&&br&&div class=&highlight&&&pre&&code class=&language-text&&Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
&/code&&/pre&&/div&首先,Sec-WebSocket-Key 是一个Base64 encode的值,这个是浏览器随机生成的,告诉服务器:&b&泥煤,不要忽悠窝,我要验证尼是不是真的是Websocket助理。&/b&&br&然后,Sec_WebSocket-Protocol 是一个用户定义的字符串,用来区分同URL下,不同的服务所需要的协议。简单理解:&b&今晚我要服务A,别搞错啦~&/b&&br&最后,Sec-WebSocket-Version 是告诉服务器所使用的Websocket Draft(协议版本),在最初的时候,Websocket协议还在 Draft 阶段,各种奇奇怪怪的协议都有,而且还有很多期奇奇怪怪不同的东西,什么Firefox和Chrome用的不是一个版本之类的,当初Websocket协议太多可是一个大难题。。不过现在还好,已经定下来啦~大家都使用的一个东西~ 脱水:&b&服务员,我要的是13岁的噢→_→&/b&&br&&br&然后服务器会返回下列东西,表示已经接受到请求, 成功建立Websocket啦!&br&&div class=&highlight&&&pre&&code class=&language-text&&HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
&/code&&/pre&&/div&这里开始就是HTTP最后负责的区域了,告诉客户,我已经成功切换协议啦~&br&&div class=&highlight&&&pre&&code class=&language-text&&Upgrade: websocket
Connection: Upgrade
&/code&&/pre&&/div&依然是固定的,告诉客户端即将升级的是Websocket协议,而不是mozillasocket,lurnarsocket或者shitsocket。&br&然后,Sec-WebSocket-Accept 这个则是经过服务器确认,并且加密过后的 Sec-WebSocket-Key。服务器:&b&好啦好啦,知道啦,给你看我的ID CARD来证明行了吧。。&/b&&br&后面的,Sec-WebSocket-Protocol 则是表示最终使用的协议。&br&&br&至此,HTTP已经完成它所有工作了,接下来就是完全按照Websocket协议进行了。&br&具体的协议就不在这阐述了。&br&------------------技术解析部分完毕------------------&br&&br&&figure&&img src=&/afe119b52eedabc2dfa9661_b.jpg& data-rawwidth=&161& data-rawheight=&187& class=&content_image& width=&161&&&/figure&你TMD又BBB了这么久,那到底Websocket有什么鬼用,http long poll,或者ajax轮询不都可以实现实时信息传递么。&br&&figure&&img src=&/edb1ed826e264_b.jpg& data-rawwidth=&176& data-rawheight=&193& class=&content_image& width=&176&&&/figure&&br&&br&好好好,年轻人,那我们来讲一讲Websocket有什么用。&br&来给你吃点胡(苏)萝(丹)卜(红)&br&&figure&&img src=&/31ddf0cfbeecefb5f1ff_b.jpg& data-rawwidth=&53& data-rawheight=&65& class=&content_image& width=&53&&&/figure&&b&三、Websocket的作用&/b&&br&在讲Websocket之前,我就顺带着讲下 long poll 和 ajax轮询 的原理。&br&首先是 ajax轮询 ,ajax轮询 的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。&br&场景再现:&br&客户端:啦啦啦,有没有新信息(Request)&br&服务端:没有(Response)&br&客户端:啦啦啦,有没有新信息(Request)&br&服务端:没有。。(Response)&br&客户端:啦啦啦,有没有新信息(Request)&br&服务端:你好烦啊,没有啊。。(Response)&br&客户端:啦啦啦,有没有新消息(Request)&br&服务端:好啦好啦,有啦给你。(Response)&br&客户端:啦啦啦,有没有新消息(Request)&br&服务端:。。。。。没。。。。没。。。没有(Response) ---- loop&br&&br&long poll &br&long poll 其实原理跟 ajax轮询 差不多,都是采用轮询的方式,不过采取的是阻塞模型(一直打电话,没收到就不挂电话),也就是说,客户端发起连接后,如果没消息,就一直不返回Response给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。&br&场景再现&br&客户端:啦啦啦,有没有新信息,没有的话就等有了才返回给我吧(Request)&br&服务端:额。。
等待到有消息的时候。。来 给你(Response)&br&客户端:啦啦啦,有没有新信息,没有的话就等有了才返回给我吧(Request) -loop&br&&br&从上面可以看出其实这两种方式,都是在不断地建立HTTP连接,然后等待服务端处理,可以体现HTTP协议的另外一个特点,&b&被动性&/b&。&br&何为被动性呢,其实就是,服务端不能主动联系客户端,只能有客户端发起。&br&简单地说就是,服务器是一个很懒的冰箱(这是个梗)(不会、不能主动发起连接),但是上司有命令,如果有客户来,不管多么累都要好好接待。&br&&br&说完这个,我们再来说一说上面的缺陷(原谅我废话这么多吧OAQ)&br&从上面很容易看出来,不管怎么样,上面这两种都是非常消耗资源的。&br&ajax轮询 需要服务器有很快的处理速度和资源。(速度)&br&long poll 需要有很高的并发,也就是说同时接待客户的能力。(场地大小)&br&所以ajax轮询 和long poll 都有可能发生这种情况。&br&&br&&b&客户端:啦啦啦啦,有新信息么?&/b&&br&&b&服务端:月线正忙,请稍后再试(503 Server Unavailable)&/b&&br&&b&客户端:。。。。好吧,啦啦啦,有新信息么?&/b&&br&&b&服务端:月线正忙,请稍后再试(503 Server Unavailable)&br&&/b&&br&&b&客户端:&/b&&figure&&img src=&/7c0cf075c7ee4cc6cf52fc10_b.jpg& data-rawwidth=&143& data-rawheight=&50& class=&content_image& width=&143&&&/figure&&br&&b&然后服务端在一旁忙的要死:冰箱,我要更多的冰箱!更多。。更多。。(我错了。。这又是梗。。)&/b&&br&&br&--------------------------&br&&b&言归正传,我们来说Websocket吧&/b&&br&通过上面这个例子,我们可以看出,这两种方式都不是最好的方式,需要很多资源。&br&一种需要更快的速度,一种需要更多的'电话'。这两种都会导致'电话'的需求越来越高。&br&哦对了,忘记说了HTTP还是一个无状态协议。(感谢评论区的各位指出OAQ)&br&通俗的说就是,服务器因为每天要接待太多客户了,是个&b&健忘鬼&/b&,你一挂电话,他就把你的东西全忘光了,把你的东西全丢掉了。你第二次还得再告诉服务器一遍。&br&&br&所以在这种情况下出现了,Websocket出现了。&br&他解决了HTTP的这几个难题。&br&首先,&b&被动性&/b&,当服务器完成协议升级后(HTTP-&Websocket),服务端就可以主动推送信息给客户端啦。&br&所以上面的情景可以做如下修改。&br&客户端:啦啦啦,我要建立Websocket协议,需要的服务:chat,Websocket协议版本:17(HTTP Request)&br&服务端:ok,确认,已升级为Websocket协议(HTTP Protocols Switched)&br&客户端:麻烦你有信息的时候推送给我噢。。&br&服务端:ok,有的时候会告诉你的。&br&服务端:balabalabalabala&br&服务端:balabalabalabala&br&服务端:哈哈哈哈哈啊哈哈哈哈&br&服务端:笑死我了哈哈哈哈哈哈哈&br&&br&就变成了这样,只需要经过&b&一次HTTP请求&/b&,就可以做到源源不断的信息传送了。(在程序设计中,这种设计叫做回调,即:你有信息了再来通知我,而不是我傻乎乎的每次跑来问你)&br&这样的协议解决了上面同步有延迟,而且还非常消耗资源的这种情况。&br&那么为什么他会解决服务器上消耗资源的问题呢?&br&其实我们所用的程序是要经过两层代理的,即&b&HTTP协议在Nginx等服务器的解析下&/b&,然后再传送给相应的&b&Handler(PHP等)&/b&来处理。&br&简单地说,我们有一个非常快速的接&b&线员(Nginx)&/b&,他负责把问题转交给相应的&b&客服(Handler)&/b&。&br&本身&b&接线员基本上速度是足够的&/b&,但是每次都卡在&b&客服(Handler)&/b&了,老有&b&客服&/b&处理速度太慢。,导致客服不够。&br&Websocket就解决了这样一个难题,建立后,可以直接跟接线员建立持&b&久连接&/b&,有信息的时候客服想办法通知接线员,然后&b&接线员&/b&在统一转交给客户。&br&这样就可以解决客服处理速度过慢的问题了。&br&&br&同时,在传统的方式上,要不断的建立,关闭HTTP协议,由于HTTP是非状态性的,每次都要&b&重新传输identity info(鉴别信息)&/b&,来告诉服务端你是谁。&br&虽然接线员很快速,但是每次都要听这么一堆,效率也会有所下降的,同时还得不断把这些信息转交给客服,不但浪费客服的&b&处理时间&/b&,而且还会在网路传输中消耗&b&过多的流量/时间。&/b&&br&但是Websocket只需要&b&一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中&/b&,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求,这样就解决了接线员要反复解析HTTP协议,还要查看identity info的信息。&br&同时由&b&客户主动询问&/b&,转换为&b&服务器(推送)有信息的时候就发送(当然客户端还是等主动发送信息过来的。。)&/b&,没有信息的时候就交给接线员(Nginx),不需要占用本身速度就慢的&b&客服(Handler)&/b&了&br&--------------------&br&至于怎么在不支持Websocket的客户端上使用Websocket。。答案是:&b&不能&/b&&br&但是可以通过上面说的 long poll 和 ajax 轮询来 &b&模拟出类似的效果&/b&&br&-----&br&_(:з」∠)_两天写了两篇科普类文章。。好累OAQ,求赞。。&br&对啦,如果有错误,欢迎大家在底下留言指出噢~
额。。最高票答案没答到点子上,最后怎么跑到Nodejs上去了。。Websocket只是协议而已。。 我一个个来回答吧 一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算) 首先HTTP…
本人已投身于全新行业全新领域,既跟Flash没关系,也跟HTML5没关系,所以关于这类的技术问题,请大家不要再邀请我去回答。&br&&br&---------这是一条更新线(2017.2)---------我特别不喜欢挖坟,但是有3个原因看到这个问题不得不答:&br&1. 我曾经从事了15年的Flash和HTML相关工作,我经历过。这是鄙人的亲身经历,1999年开始接触Flash技术,2000年向Macromedia提交了Flash AS1的Math相关算法而成为beta tester,2003年是Macromedia Flash的dev volunteer, 2004年成为Macromedia在中国的第一个技术员工,2005年,Adobe并购Macromedia结束,进入Adobe做工程师,2008成为Flash Video与Flash Media Server的大客户技术经理,2009年成为Flash Platform Evangelist,2014年离开Adobe前,除了Flash,也参与了Adobe HTML5系列技术工具的相关工作。&br&2. 我现在是一家做HTML5技术公司白鹭引擎的技术合伙人,管理这家公司的研发团队,每天的工作都跟HTML5的Web技术相关。&br&3. 这个时间点回答这个问题貌似最好,因为一切答案正在浮出水面。&br&&br&好了,回到答题本身。&br&&br&&p&我本人对于Flash和HTML5两个技术领域的观点判断大致如下:&/p&&ul&&li&Flash已经走入软件生命周期的末期,但它仍颇具价值。&/li&&li&Flash不论当初多么辉煌,在它的生命周期里从未真正赢得移动领域。&/li&&li&HTML5已经重回轨道,未来取胜的关键则在移动领域。&/li&&li&虽然HTML5已经重回轨道,但要达到高度完善的技术普及状态,它必须进行几方面的突破。&/li&&/ul&&br&&p&Flash已经走入软件生命周期的末期,是的,万物皆有始终,更何况Flash。日到今日,Flash已经有21岁。21岁对于一个人而言,正属风华绝代之年,但是在软件领域里,存活21年实在算的上是一个老家伙了。说到衰落,必然要提崛起。21年的过程中,Flash经历了三次成功高峰,分别是1999年的网络动画时代,2005年的Flash Video时代与2008年的Web Game时代。这三次互联网领域的高峰,全部都被Flash赶上(不得不说命好运也好),并且这三次成功,引领了Flash在生命周期中的一次又一次产品形态上的变化。&/p&&br&&p&Flash Animation的流行引领了Flash的第一次成功,1999年,借着第一波互联网.com的热潮,由于当时HTML技术功能上的羸弱,大量被人所称道的Banner,动画,MTV都是借助Flash创作而来,这些充满神奇的交互效果充斥了每个网站,Flash在网页动画创作领域开始快速崛起。我当时的雇主美国Macromedia公司旗下的Flash,Dreamweaver和Fireworks被国人亲切的叫做网页三剑客,当时我主要泡闪客帝国(前身是边城浪子的回声资讯)和蓝色理想这两个Flash开发者聚集的论坛。2004年,借助着前几年Flash所取得的成绩,Macromedia公司被Adobe公司以34亿美金收购。2005年,Flash有史以来最重要的版本之一Flash 8(codename:8 ball)登场,这一版本里集成了2个最重要的功能,其中一个功能引领了后来YouTube和优酷土豆视频网站的成功,就是Flash Player里集成了Sorenson Spark H.263(VP6)的视频解码功能,而另一个功能为以后Flash可以创作更精彩的Web Game埋下伏笔,就是Bitmap和Bitmapdata位图操作的实现。2008年,Flash又“幸运”的赶上了社交游戏的浪潮,随着Zynga和Facebook的大获成功,Flash在社交游戏的技术领域独领风骚,之后的Stage3D技术又让Flash彻底统治PC网页游戏领域。在Flash最为巅峰的这么多年内,任何其他类似的技术都没有在与Flash竞争上胜出,期间也出现过若干“Flash Killer”,包括Silverlight,JavaFX,Lazslo和Unity Player。作为胜出者Flash自然有他的缘由,就是独一无二高度统一的Flash Player,强大的内容设计开发工作流,多年积累而成的强大的社区生态。&/p&&br&&p&水满则溢,月盈而亏。Flash开始走下坡路业界都认为是从苹果乔布斯的那篇檄文而起。没错,那篇檄文是Flash开始走下坡路的开始,后续的一系列对Flash的不利消息又接踵而来,都给Flash造成了沉重的打击。我这里给各位总结一下Flash由盛转衰的几个重要事件。它们分别是:&/p&&ul&&li&苹果iOS不支持Flash Player.&/li&&li&MACOSX系统不提供面向Flash Player的视频硬件解码能力调用。&/li&&li&Adobe Flash Player所建立的Open Screen Project(OSP)计划的推进不佳被终止。&/li&&li&Adobe宣布裁撤Flex团队,终止Flash Builder开发计划,并将Flex项目捐给Apache,这间接促成了Google AngularJS的大获成功,因为AngularJS的作者就是Flex的核心科学家。&/li&&li&Adobe不再开发Android系统的Flash Player后续版本。&/li&&li&Adobe宣布终止开发了80%的ActionScript4.0和AVM3.0项目。&/li&&li&Adobe终止了Stage3D的后续开发工作。&/li&&li&Adobe终止AIR SDK的ANE(Adobe Native Extension)和内置Webkit的开发维护。&/li&&li&Adobe裁撤整个中国研发中心,其中有很多工程师原属于Flash团队,其中包括Flash Player,Stage3D,CrossBridge(原Alchemy),骨骼动画以及Platform Evangelism。(很有趣,其中一部分工程师后来加入了Egret团队)&/li&&li&FireFox曾默认关闭Flash内容显示。(修正:Firefox是因为Flash的一个0-day漏洞默认关闭了Flash内容,在修复后,又重新开启。来源:&a href=&///?target=http%3A///article/firefox-now-blocks-all-versions-of-flash-player-by-default/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Firefox now blocks all versions of Flash Player by default&i class=&icon-external&&&/i&&/a&)&/li&&li&Google Chrome停用NPAPI的支持,并关闭PPAPI Flash Player的硬件加速。&/li&&li&Google Chrome将Flash内容默认关闭。(修正:Google Chrome宣布将智能化选择性的关闭Flash内容的显示。来源:&a href=&///?target=http%3A///article/amazon-ditches-flash-ads-amid-ad-industry-push-towards-html5-ads/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/article/amazo&/span&&span class=&invisible&&n-ditches-flash-ads-amid-ad-industry-push-towards-html5-ads/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)&/li&&/ul&&p&可以说是一系列的坏消息,如果合在一起看,那简直是坏的不能再坏的消息了,其中很多的决策来自于Adobe自己,这有充分的理由让我们相信,Flash这个平台型的技术已经进入了最后的生命周期。但Flash给Web进化带来了很多有价值的推动。&/p&&br&&p&首先,在Flash最为鼎盛的时期,来自Adobe的官方统计,全球有将近200万的Flash开发者,这个群体不同于其他语言的开发者,可以说他们是一个独特的开发者群体,我们可以理解他们才是真正的“Full Stack”工程师,会开发游戏,会制作动画,会创作富媒体应用,甚至很多人还兼修美术,烹饪和刺绣。从2010年Flash开始走下坡路,这些Flash开发者陆续转型,他们成为了后来众多应用和游戏公司的中坚力量,目前市场上大量的Unity,Cocos的手游开发者,Egret Engine社区里近一半的HTML5开发者,甚至是大量的AngularJS和JQueryMobile的开发者,都来自于原来的Flash社区。&/p&&br&&p&其次,Flash开发生态为HTML5标准的进化带来了大量有借鉴价值的范本模型。Adobe通过Flash Professional工具开放了JSFL扩展;支持了JQuery Mobile和WebGL的输出,甚至于矢量绘图的动画都支持CreateJS的导出;Adobe将全球最流行的骨骼动画项目之一DragonBones转给了Egret继续原生和HTML5版本的开发工作;Flex项目的主程成为了Google AngularJS的作者;曾经流行的Flash游戏框架Flixel的作者后来又参与创作了HTML5游戏框架Phaser;被Adobe捐助给Mozilla组织的AVM2虚拟机的源码间接驱动了IonMonkey,SpiderMonkey项目中GC的更新换代和Flash转换HTML5项目Shumway的流行;Adobe的ActionScript3.0的语法方式被Egret Engine团队在HTML5的引擎产品设计上所借鉴;Stage3D项目后续促成了Away3D和Minko等原Flash3D项目完美转型HTML5技术领域。还有很多HTML5相关的视频和音频项目在过去几年的发展中大量的融合了Flash相关的媒体库来提供更多的功能支持,当今大量的HTML5 Video Player都是从原来的Flash领域变换而来。这一切都是Flash技术带给当今HTML5领域的财富。现实是很多人并未看到这些,看到的是当Apple宣布iOS不支持Flash技术开始,有些所谓的“专家”和“专业媒体”将Flash营造成HTML5的头号死敌的话题博取业界的更多眼球,其实他们并不关心Flash和HTML5为Web领域真正带来了什么,也不关心谁赢谁输,他们唯一关心的就是自己的知名度和访问量。&/p&&br&&p&接下来说说第二个观点,Flash从未真正赢得过移动领域。在开始这段之前,推荐各位在知乎看看我回答的这篇帖子“iOS不支持Flash的真实原因是什么?”&a href=&/question//answer/& class=&internal&&iOS 不支持 Flash 的真实原因是什么? - 知乎用户的回答&/a&。下面则是更多事实可以证明Flash一路走来,赢得了PC,丢掉了移动市场:&/p&&br&&p&1.在2004年,Flash跟中国移动对接动画标准一事,当时Flash Lite进入中移动动画标准评测流程之前,已经有两家利用Flash Player 6 SDK泄露的源码而做了山寨Flash播放器的公司在跟中移动对接了,一家韩国公司,一家中国公司,而且接触中移动的时间已经不短。Macromedia虽然是Flash官方,但是最后一个进场,而且当时中移动已经初定一家山寨Flash的产品成为标准,称之为MFlash。虽然中移动知道Macromedia是Flash的官方,技术更强,也乐意重新在中移动定制的功能机上使用Flash Lite标准,但是由于Macromedia坚持要求中移动承诺植入FL的设备总数,并按照单台1美金收取授权费。因为中移动是大公司,多少人挤破头想和中移动合作,但是Macromedia这家美国公司偏偏坚持成为标准,每台设备要收1美金。结果可想而知,Flash第一次错过了中国最大的移动运营商,很不幸的是,主导Flash播放器收取设备授权费的这个美国人跟着Macromedia一同进了Adobe,还被提升成为全球业务的高级总监,不幸的事情再次发生就自然而然了。&/p&&br&&p&2.Nokia当年太有钱了,这家公司带头支持了内置Flash Lite,也带头支付给Adobe了Flash的设备授权费用。这一行径使得Adobe坚持认为Flash在移动设备上能收取费用且必须收取费用,不论是任何厂商,都不例外。一刀切的收费策略也自然引发了当年很多大大小小手机厂商的不满,当然,这个Adobe CEO可能不知道,只有我们这些处在一线的员工才了解。但是这条线的决策当时由上面说到的那个美国人来负责时,KPI自然也是以能为公司贡献多少利润来衡量团队业绩的唯一标准。所以,只看眼前利益,不花大力气培养移动生态成了Flash错过移动市场的另一个主因。&/p&&br&&p&3.当年Adobe对于Flash播放器的源码访问已经到了无比严苛的地步,只有在美国注册且有实体研发的公司才能通过clean room的方式获取Flash Player的源代码进行移动设备的定制,其他硬件公司都必须通过引入Adobe授权的第三方Porting Partner的机制来获取定制后的Binary Build。这个流程简单描述就是,如果我是一家中国的手机公司,有植入Flash播放器的需求,而且愿意付费,那我要跟Adobe授权的一家Porting公司签协议,这家Porting公司注册在美国,研发在印度......印度,你懂的,然后印度人来中国找我,了解我的设备(&i&这里还有一个大问题,就是即使签署保密协议,但这家Porting Flash的公司必然知道我将来要发布到市场的新手机的所有硬件规格,妈蛋啊,我新手机保密还未上市就都让别人全知道了,有可能这家知道我的手机规格的公司还在为我的竞争对手做porting!虽然有了保密协议,好吧,就当是完全保密吧。&/i&),然后评估是否可以移植Flash,然后回印度在clean room里访问Flash源代码,进行移植。移植完成后,要把装有定制Flash Player Build的样机送回给美国Adobe进行认证和备案,符合一切QA认证流程后,告知我可以出货了。好吧,这个蛋疼的流程虽然我不知道当初是谁制定的,但是结果就是,我有款新上市的手机有植入Flash的计划,我要先把我的硬件信息全部公开给第三方进行评估,而且手机将来能否出货,要先等几个月的Porting和Certify的流程,还要先付给Adobe一笔预付款,最后可能手机上市日期因为种种原因流产了。。。这么死板不人性化的流程成为Flash错过移动市场的第三个主要原因。&/p&&br&&p&4.就是众所周知的苹果在iOS上屏蔽Flash的事件,虽然当年Adobe用了“We Love Flash, We Love Apple”极富煽情的公关方式来应对,但是然并卵,Flash错过了移动市场上的第一个大腿iOS。&/p&&br&&p&5.Adobe然后开始决定不再移动设备上花费大量的人力物力来维护和开发Flash播放器,所以接着又官方宣布了不再更新安卓版本的Flash Player的决定。转而鼓励开发者使用Adobe AIR的打包技术来将Flash内容打包为原生的解决方案,这个方案几乎成功的实现了Flash进入移动市场的目标,因为全球当时已经有数十万个iOS的app是通过Adobe AIR打包而成。但是突然,又发现了巨大的问题,那就是AIR SDK打包原生,要依赖Apple官方提供的原生系统扩展API,比如支付,GameCenter,文件访问等等。而Adobe AIR的ANE(Adobe Native Extension)则是一个黑盒,那就变成苹果只要升级系统或调整API,ANE如果不及时更新,所有AIR打包的原生app都被卡住,需要等待Adobe升级更新ANE包才可以继续保证app的正常运转。这一个无法逾越的深坑让大量的用AIR打包原生app的Flash开发者大倒苦水,对ANE的海量吐槽直接飞向Adobe总部。如果Adobe ANE团队及时关注产品反馈并及时更新,这一个跟XCode打包几乎一致的GCC/LLVM打包方案完全可以茁壮成长下去,可惜,Adobe又一次做了一个碉堡了的决策,将ANE美国研发团队裁撤,将工作转到印度班加罗尔做维护,又是印度,你又懂了。终于,Flash又一次错过机会。&/p&&br&&p&6.虽然黑莓当时内置了AIR,QNX的车载导航几乎都是Flash和AIR技术,但是市场太小了,一个倔强的浪头完全无法逆转整个形势了。&/p&&br&&p&所以我们可以认定Flash即使在PC上有过三次辉煌,但是它并未真正的赢得过移动市场,用一首诗来形容它的移动之路就是“待到秋来九月八,我花开后百花杀。冲天香阵透长安,满城尽带黄金甲”。在移动设备如日中天的今天,Flash本有机会开启并引领富媒体Web在移动设备上的革命,但它并非赢家。&/p&&br&&p&再来看第三个观点,HTML5已经重回轨道,未来取胜的关键则在移动领域。为什么这么讲。PC发展落后于移动已经是事实。今天,人手至少一台智能手机,移动流量超越了PC流量。技术为业务服务,业务由市场导向。HTML5狭义上是超文本链接标记语言第5版,单从名字上并无神奇之处,但广义而言,HTML5代表了新一代的HTML,CSS和JavaScript技术的总和,它可以跨平台,这在屏幕尺寸和分辨率林林总总的移动设备上简直就是天生的优势(天生就是东宫太子),响应式设计,跨操作系统,而且随着硬件计算能力的飞速进化,浏览器内核或者VM对于脚本型技术的性能瓶颈也在被逐渐抹平,在不是特别关注性能的应用开发上这个缺点渐渐被忽略不计。网络资源加载的尴尬也随着移动网络的速度飙升和使用成本的大幅降低而不再成为关键性的制约因素。HTML5虽然经历了&a href=&tel:&&&/a&年的重大技术低潮,一大波HTML5的技术先锋在这两年沉沙折戟,但是不妨碍它的跨平台,标准开放的技术本质,2014年后再次卷土重来。&/p&&br&&p&任何人都需要通过移动设备连接世界,获取信息。这个基于Touch的市场机遇远大于使用键盘鼠标的PC领域,每天若干的创新都在这里出现,内容层出不穷,且这个领域的内容呈现需要高度的跨平台,跨设备的适配性,HTML5这种开放性的Web技术成为这些创新的主要技术方案顺理成章,因为HTML的发展史就是一部互联网的发展史。&/p&&br&&p&PC浏览网络信息,仍然靠浏览器。但是移动设备浏览网络信息,app就是介质。微信,微博,手机助手,新闻客户端,所有Webview支持的app就可以很完美的采用HTML5技术。HTML5技术在移动设备上的用户场景原则上可以无限大,任何我们现在接触的app,都有使用HTML5进行制作开发的可能。突破浏览器对于HTML5的束缚是HTML5在移动设备上走向顶峰的必经之路。我经常跟人争论的一个话题就是,谁规定HTML5的标准化的执行和实现就一定要依赖于浏览器?用HTML5技术开发的内容,但是不用浏览器形态的方式去浏览,算不算是HTML5所涵盖的领域?&/p&&br&&p&另外,PC某些垂直领域在几年内仍然无法摒弃插件体系,尤其是页游市场。国内目前的页游市场是几百亿人民币的规模,而这个领域使用Flash Stage3D技术已经根深蒂固,从游戏创作的技术工作流程和性能要求上,HTML5的能力目前还无法达到那个高度,光从Flash Stage3D可以在PC调用DirectX和OpenGL,而HTML5只能调用WebGL这点来看就被完爆。而且Adobe Flash播放器已经在PC领域渗透超过10亿台终端,这个市场占有率还不能短时间内被取代,在Flash与HTML5的更新交替年代,与其等待PC市场漫长的自然更迭,HTML5为何不能从没有Flash的移动市场强势介入,成为跨平台富媒体内容的开发首选?&/p&&br&&p&最后一个观点是建立在第三个观点之上的,HTML5最广泛的被接纳与普及前,还要先解决以下几个关键问题。&/p&&br&&p&1.HTML5的标准化的能力推进需要更多参与制定厂商的通力协作,不要把商业的博弈及目标凌驾在标准化的普及之上,公心要大于私心,通力协作,才可能尽快实现更多具有前瞻创新技术标准草案的落地。HTML5规范虽然在2014年底终于定稿,但是这其中经历了太多的曲折,推进的过程中充满了各大浏览器厂商借助标准扩大行业话语权的暗战,目前,仍然有大量的创新标准无法在日新月异的移动领域市场快速被定案与普及。太多事实,给各位列举几个。CSS3的标准落地异常复杂,甚至于出现在开发者创建和声明CSS3新属性时,针对不同浏览器,一个属性要设定针对浏览器的众多前缀才能保证浏览器对它的支持,这么蛋疼的编写设定虽然是过渡方案,但是不得不说标准化落地过程中产生的各种额外代价都无形的转嫁给了开发者。另一个例子是关于WebGL,来源于&a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&的数据统计,移动设备对于WebGL的支持率已经上升到有史以来的最高,超过8成支持WebGL内容的访问,这无疑是可喜的状况。但是从另一方面的比较则看出WebGL的进化仍面临巨大挑战。首先是,WebGL1.0从2011年起到现在已经近4年多几乎没有过任何能力上的进化,这几年全部都是标准规范草案定义能力的推进普及,变革速度相比起微软的DX12和Kronos组织全新一代的Vulkan技术的进化速度相比,简直惨不忍睹。当未来PC和主机游戏,甚至手机原生游戏都更多的可以从下一代的DX和Vulkan技术中全面获益,获得飞一样的提升时,我们HTML5的开发者们仍旧在为越来越多的设备终于支持WebGL而沉浸其中。好比有钱人又买别墅了,我还在为今年终于工资涨了几百而欢欣雀跃一样讽刺。如果HTML5技术想大成,不仅标准化的普及要快,功能性的创新也同样要快。&/p&&br&&p&2.HTML5相关开源项目(包括DOM,JavaScript/TypeScript,CSS)在github上无疑是总数世界第一。但是另外一方面,HTML5仍然需要更为强大,更有工作效率的工作流。我们需要在HTML5领域内有能跟其他领域一样世界级的工作流方案,强大的引擎,高度可视化的创意工具,云与端的计算完美结合,这些都能更有效的保证我们的工作成果和工作过程越来越专业。各行各业最顶级的创意开发工具,目前来看,没有一个是专门为HTML5技术而生的。例如Visual Studio虽然也可以支持HTML5和JS开发,但是相比C++,C#在VS中的集成工作流,待遇显然就是一个不招待见的“干儿子”。我们Web前端开发已经习惯用各种script editor,配合浏览器的developer tools,再配以各种node上的testing,build和publish工具,最后再通过Phonegap或者Cordova类似的打包来完成工作,这就是我们HTML5开发者的工作流,且我们认为已经很好了。但是这是我们被习惯被教育后采用的工作方式,是因为业界本就没有针对HTML5更高效专业的工作流。我天天弯着腰犁田,换个牛车替我就感觉很满足了,殊不知世界上有插秧机这种更高效的工具一样。正在使用的不代表就是最好的,因为更好的我们没见过。HTML5技术领域的创新绝对不能忽略更高度更自动化的工作流,这是一个高度繁荣市场的终极需求,不是某个通过terminal和command就能搞定一台机器的极客需求。&/p&&br&&p&虽然HTML5看似已经成了移动市场上实现网络富媒体交互技术的好选择,但是HTML5的技术未来并不是想象中的那么乐观,前路依然任重而道远。&/p&
本人已投身于全新行业全新领域,既跟Flash没关系,也跟HTML5没关系,所以关于这类的技术问题,请大家不要再邀请我去回答。 ---------这是一条更新线(2017.2)---------我特别不喜欢挖坟,但是有3个原因看到这个问题不得不答: 1. 我曾经从事了15年的Flash…
谢邀,抱歉拖延到现在才来回答问题。&br&利益相关:flv.js 作者&br&&br&&a href=&///?target=https%3A///Bilibili/flv.js& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - Bilibili/flv.js: HTML5 FLV Player&i class=&icon-external&&&/i&&/a&&br&&br&flv.js 做了三件事:&br&1. HTML5 原生仅支持播放 mp4/webm 格式,flv.js 实现了在 HTML5 上播放 FLV 格式视频&br&2. 使 Bilibili 网页端平滑过度到 HTML5 播放器,历史遗留不再是障碍&br&3. 对于视频直播,在 HTML5 上支持了延迟极低 HTTP FLV 播放,解开网页端直播对 Flash 的依赖&br&&br&一些人问我为什么不直接采用 MP4 格式,并表示对 FLV 格式的厌恶&br&这个问题一方面是历史遗留问题,由于视频网站前期完全依赖 Flash 播放而选择 FLV 格式;&br&&br&另一方面,如果仔细研究过 FLV/MP4 封装格式,你会发现 FLV 格式非常简洁,而 MP4 内部 box 种类繁杂,结构复杂固实而又有太多冗余数据。FLV 天生具备流式特征适合网络流传输,而 MP4 这种使用最广泛的存储格式,设计却并不一定优雅。&br&&br&这里我不想谈论多媒体封装格式的优劣。flv.js 是在 HTML5 上实现自定义视频格式播放的一个较好的范例,充分利用了 &a href=&///?target=https%3A//w3c.github.io/media-source/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Media Source Extensions&i class=&icon-external&&&/i&&/a&, Fetch API 以及 ECMAScript 6 等 HTML5/Web 上较新的技术,并考验着这些 API:开发期间发现 Edge 对 Fetch API 的支持存在 bug,发现各个浏览器在 MSE 的实现细节上都有一些差异和问题,发现 Safari 的 MSE 实现健壮度较差(滑稽)&br&&br&在 flv.js 项目初期,Media Source Extensions (MSE) 在国内处于无人问津的状态;而 MSE API 已经过近 4 年的发展演进,是 HTML5 多媒体相关最重要的 API 之一。MSE 是 HTML5 上实现自定义格式播放的关键,flv.js 开源也是希望 MSE 能被更广泛地了解和应用。&br&&br&最后,Chrome 等浏览器正在加速 Flash 淘汰的进程,HTML5 video 由各浏览器厂商实现了高性能硬解,MSE 作为媒体格式扩展的补充,flv.js 证明了当前 HTML5 多媒体技术已超越陈旧的 Flash。
谢邀,抱歉拖延到现在才来回答问题。 利益相关:flv.js 作者
flv.js 做了三件事: 1. HTML5 原生仅支持播放 mp4/webm 格式,flv.js 实现了在 HTML5 上播放 FLV 格式视频 2. 使 Bilibili 网页端平滑过度到 HTML5…
前一段时间很火的 吴亦凡入伍的广告&br&你看静态新闻的时候,是在加载后面两个视频,加载完成之后,吴亦凡就蹦出来了&br&&br&所以你们看到吴亦凡从画面里面出来的时候脑海里的台词是:&br&&b&卧槽,这是怎么做到的!&/b&&br&而我的内心台词是:&br&&b&卧槽,我知道是怎么做到的,你把流量还给我好么!&/b&&br&================================&br&更新一张之前和甲方之间的聊天记录,在整个minisite已经交付上线以后,甲方突然问了这么一句,大家感受一下。&br&&figure&&img src=&/01fd0a0b3e_b.jpg& data-rawwidth=&719& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&719& data-original=&/01fd0a0b3e_r.jpg&&&/figure&这就是为什么我很反感别人跟我说H5,我特么知道你到底什么意思。。。&br&&br&===================================================&br&先科普一下,HTML5并不是&b&一项技术&/b&,而是&b&一个标准&/b&。&br&标准的意思就是:学生准则手册。你可以按照准则做,甚至可以超出准则更加严格的要求自己,也可以不按照准则来,但是会被老师训斥小伙伴讨厌,别人都不找你玩,就像IE6一样。&br&&br&那HTML5这些标准浏览器厂商到底姿持不姿持呢?这要看他们各自的尿性了。像chrome这种不仅在很多标准上支持的非常好,还积极上进很多地方超出了标准,支持一些标准中还是草案的部分。&br&&br&所以其实要么我们是作为理论派讨论&b&HTML5标准&/b&,要么是作为实践派讨论&b&HTML5标准在某浏览器的应用&/b&。但是实际上我们在说到H5的时候,并不是指标准,也不是指标准的应用,而是一个硬生生造出来的奇怪概念合集,所以我是&b&旗帜鲜明的反对这个称呼&/b&的。&br&&br&最近一年的时间,我主要靠这个东西养家(并没有家)糊口。所以我是懂得甲方打电话过来询问,“你是不是会做H5开发?”的时候,我知道他们要的是那种可以在朋友圈分享的,看起来很酷炫的小页面,他们实际要的东西拆开来看大概包括以下技术点;&br&&br&1. 页面素材预加载技术,可以使用createJS之中的preloadJS。我没有看preloadJS的源码,不过预加载并不是HTML5标准中更新的方法。&br&2. 音乐加载播放技术,createJS中同样有soundJS可以实现,而且这部分说起来确实是HTML5标准支持的内容,在上个时代并没有audio这样的标签。&br&3.可以滑动的页面,大多数是用了swiper.js这个Jquery插件,也有一些是手写的swipe,比较拙劣的手写版页面是不会跟手滑动的,其中touchstart等四个touch系列的事件是HTML5标准中的事件&br&4.可以涂抹擦除,多半是canvas叠加层,canvas是HTML5标准里面的标签,是代表了先进生产力的标签。&br&5.有动态的文字和图片,常见的是使用了css3或者直接使用js动画。很多时候提到HTML5多半还会带上CSS3,而CSS的分级又是另外的一个问题了,在不同的项目标准上,CSS会独立定级,以后应该不会有CSS4这个东西,所以大家也不用担心在H5以后又冒出来了C4(不过真是想用C4炸死那些每天把H5挂在嘴上的人)&br&6.可以填表报名,这是最基本的表单,是有网页以来就有的东西。&br&7.可以支持分享自定义的文案和图片,这个是用到了微信的jssdk,和HTML标准半毛钱关系都没有。&br&8.还有其他我想起来再补充的。&br&&br&所以我们在谈论H5的时候,实际上是一个&b&解决方案&/b&,一个看起来&b&酷炫&/b&的移动端onepage网站的解决方案。而这个解决方案不仅包含了HTML5新增的audio标签,canvas,拖拽特性,本地存储,websocket通信,同时也包括了&b&盒模型&/b&,包括&b&绝对定位&/b&,包括&b&一切前端的基本知识&/b&。&br&&br&有学弟来问我说,学长我想学H5,应该从哪里开始?&br&我说HTML5新增特性在W3C上都可以查得到的。&br&学弟说,不,我想学的是H5,想做H5的页面。&br&于是我猜测他所指的就是上面论述的这种酷炫小页面,我就说,那你要先学习&b&HTML&/b&,包括HTML5的新标准和之前的全部标准,然后学&b&CSS&/b&以及&b&CSS3&/b&,了解它们在浏览器的实现情况,&b&原生JS&/b&了解一点就可以,大多的操作可以用&b&Jquery&/b&,了解常用的几个&b&Jquery插件&/b&的用法,应该就差不多了。如果想要做更酷炫的的,学一下&b&egret&/b&或者&b&cocos2d&/b&更好。如果要优化加载速度,还要学一下&b&grunt&/b&一类的自动化工具。&b&微信的sdk&/b&有很多坑,至少&b&nodejs&/b&或者&b&php&/b&一类的后端语言要会一点。&br&&br&学弟说,&b&那这不就是前端了么?我只是想学H5啊&/b&。&br&&br&所以你看,当我们对一个概念的内涵无法统一的时候,我们根本不知道彼此之间在谈论的是什么。&br&&br&”H5“本应是一个&b&技术合集&/b&,却被意会成了&b&一项技术&/b&,变成可以在&b&质&/b&上而不是&b&量&/b&上描述的概念。&br&&br&对于营销来说,我们只要讲我们可以做H5或者不能做,这种定性的描述就够了。但是对于技术上,这是定量的事情,只能在具体某个技术项上是否,无法对这个本不存在的概念说是否。&br&&br&就比如我遇到过有甲方说,我们之前找了一个人做H5,做的还不错,但是这个case他又说做不了,我也搞不懂H5和H5之间也有那么大差别吗?我只能笑笑和他说,&b&世界这么大,各种各样的H5都是有的&/b&。&br&&br&这就是为什么我反对H5,因为这个名词和它表示的&b&内涵是严重不符&/b&的,这让我们&b&难以沟通&/b&,让营销人和技术人之间&b&产生误解&/b&,让浑水摸鱼的培训师们赚的盆满钵满,让技术新人不&b&踏踏实实&/b&的学习技术。&br&&br&&b&每当有人问我,”你是不是做H5的?“&/b&&br&&b&我的内心都很想咆哮一句,”你才是做H5的,你全家都是做H5的“&/b&
前一段时间很火的 吴亦凡入伍的广告 你看静态新闻的时候,是在加载后面两个视频,加载完成之后,吴亦凡就蹦出来了 所以你们看到吴亦凡从画面里面出来的时候脑海里的台词是: 卧槽,这是怎么做到的! 而我的内心台词是: 卧槽,我知道是怎么做到的,你把流量…
&figure&&img src=&/68a8bd24cd4e_b.jpg& data-rawwidth=&468& data-rawheight=&178& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&/68a8bd24cd4e_r.jpg&&&/figure&&br&&br&先普及用户&b&通过 浏览器 &/b&&b&访问网页 &/b&的过程:&br&&br&网页内容是通过&b&服务器运算&/b&得出的结果,将结果(网页代码)传输给浏览器,网页代码再通过&b&浏览器&/b&&b&运算&/b&(计算、渲染),最终展示在用户的眼前的。&br&&br&至此,我们知道了有2个运算过程:&br&1、服务器运算&br&2、浏览器运算&br&&br&而让电脑(网站服务器、你的个人电脑)乖乖执行运算,就需要&b&编写程序脚本&/b&即&u&程序代码&/u&。&br&而编写代码的过程就叫做:&u&编程&/u&。编写代码的人叫做:&u&程序员&/u&(又戏称:程序猿、攻城狮)。&br&&br&所以,由运算演变出:&br&&br&1、服务器运算 -& &b&服务器脚本&/b&&br&2、浏览器运算 -& &b&浏览器脚本&/b&&br&&br&在行业内,将 服务器运算 称为 &b&后端&/b&;将浏览器运算 称为 &b&前端&/b&;&br&&br&&u&后端更靠近服务器,前段更靠近用户,这样比较好记忆。&/u&&br&&br&--------------------------------------------------------------------------------&br&&br&然后我们再来按照上述两个类别,对其他的东西分类:&br&&br&1、服务器脚本(后端):&br&&div class=&highlight&&&pre&&code class=&language-text&&PHP、ASP.NET
&/code&&/pre&&/div&&br&2、浏览器脚本(前端):&br&&div class=&highlight&&&pre&&code class=&language-text&&HTML、CSS、JavaScript
&/code&&/pre&&/div&&br&&u&HTML5、XHTML我们暂且将其统称为:HTML&/u&&br&&br&--------------------------------------------------------------------------------&br&&br&细心的就发现了,SQL 没有提到。有了上面基础概念之后,我再来详细的说:&br&&br&SQL,即数据库,用来存储和查询用户的数据,比如:&br&1、存储你注册的帐户信息(用户名、密码);&br&2、存储你在知乎上回答的问题(标题、内容);&br&3、查询本回答相关的评论。&br&&br&SQL是安装在服务器上的,暂且也将它纳入后端范畴。&br&&br&&br&&u&根据题主的问题&/u&,如果学习的话,有这么两种常见搭配:&br&&div class=&highlight&&&pre&&code class=&language-text&&1、PHP 搭配 MySQL;
2、ASP.NET 搭配 SQLServer。
&/code&&/pre&&/div&&br&&br&MySQL和SQLServer都是SQL软件,都可以用来存储、查询数据。&br&至于为什么这么搭配你先不用管,总之上帝说要有光,那就&b&先光着&/b&。&br&&figure&&img src=&/fafb599bbbd2_b.jpg& data-rawwidth=&130& data-rawheight=&139& class=&content_image& width=&130&&&/figure&&br&&br&我们再来模拟一下访问网站的&b&用户登陆&/b&过程,以PHP为例(ASP&b&.&/b&NET同理):&br&&br&1、用户输入 用户名、密码 后 点&登陆&按钮;&br&2、后端程序开始运算:PHP运行,连接MySQL,在数据库中查询用户名、密码是否正确;&br&3、将运算数据返回给用户的浏览器,包含(HTML、CSS、JavaScript);&br&4、浏览器将接收到的前端数据(HTML、CSS、JavaScript),运算(解析)出来,成为网页。&br&&br&--------------------------------------------------------------------------------&br&&br&最后还有问题对吧?别急。&br&&br&HTML、CSS、JavaScript又分别是什么呢?&br&&br&HTML就是网页,一个静态的网页。(做任何操作页面上的东西都不会动,可以简单理解为:&b&没有特效&/b&)&br&&br&CSS、JavaScript就是完成「特效」的。&br&&br&&u&JavaScript 这个单词 好长 我打的好累,我为了偷懒,后面用缩写:JS &/u&&br&&br&&b&CSS&/b&:负责完成页面的美观度(颜色、布局)&br&&br&&b&JS&/b&:负责完成页面的操作需求&br&比如:点赞同的时候,JS负责改变页面上的赞同按钮效果,同时告诉服务器:我赞同了!&br&&br&&br&========================================&br&&br&&br&细心的又发现了,Web Services 我没有提到!&br&很多时候我们需要一个&b&数据&/b&或者一个&b&功能&/b&,而我们&u&自己无法完成&/u&。&br&&br&&b&毛栗子A&/b&:天气预报&br&这个时候我们&u&自己的服务器上没有真实的天气数据&/u&,这时就需要使用其他网站提供的「天气Web Services」。&br&而这个Web Services,提供一个&b&数据型&/b&服务。&br&&br&&b&板栗B&/b&:发送短信验证码&br&这个时候我们&u&自己的服务器不能发送短信&/u&,这时就需要使用其他网站提供的「短信Web Services」。&br&而这个Web Services,提供一个&b&功能型&/b&服务。&br&&br&&br&Web Services让PHP 和 ASP&b&.&/b&NET 两种语言、&br&让 (PHP + MySQL) 和 (ASP&b&.&/b&NET + SQLServer)两种架构、&br&之间有了统一的接口标准,有了互通的可能。&br&&br&&br&简单讲,同毛栗子A,我们知道了:&br&1、当你的网站开放一个Web Services接口,这个时候就可以允许别人查询到你数据库的数据。&br&2、当你的网站使用别人的Web Services时,这个时候就可以查询到别人的数据。&br&&br&&br&&br&&br&========================================&br&&br&&br&&br&&br&&br&&br&&figure&&img src=&/65a7f17db9b5d74cf4294_b.jpg& data-rawwidth=&683& data-rawheight=&281& class=&origin_image zh-lightbox-thumb& width=&683& data-original=&/65a7f17db9b5d74cf4294_r.jpg&&&/figure&&br&然后这一整套体系,有前端(表示层)、有后端(逻辑层)、有数据库(存储层),一个独立的网站就开始运作了。&br&&br&甚至还可以用Web Services去查一下别人网站的数据,综合一下展示出来,是不是感觉很屌?&br&&br&&br&屌个屁啊,此行有风险,入行需谨慎!!!&br&&br&&br&&br&&br&&br&&br&&br&&br&&br&特别鸣谢:&a href=&/people/ma-xian-sen-9& class=&internal&&@马先森&/a&&br&&br&以上&br&&br&&br&&br&&br&--------------------------&br&更新&br&有人问我风险是什么,风险是:&br&你以后可能也许会像这样&br&&br&&figure&&img src=&/c22a011439ebf4dcfa83fc801ec8dada_b.jpg& data-rawwidth=&195& data-rawheight=&195& class=&content_image& width=&195&&&/figure&&br&这样&br&&br&&figure&&img src=&/2c512dfcc7fd_b.jpg& data-rawwidth=&489& data-rawheight=&213& class=&origin_image zh-lightbox-thumb& width=&489& data-original=&/2c512dfcc7fd_r.jpg&&&/figure&&br&这样&br&&br&&figure&&img src=&/adb93bf64a58a_b.jpg& data-rawwidth=&589& data-rawheight=&234& class=&origin_image zh-lightbox-thumb& width=&589& data-original=&/adb93bf64a58a_r.jpg&&&/figure&&br&&br&或者这样&br&&br&&br&&figure&&img src=&/86833beaca8ee2ec067a60fb6b751bf8_b.jpg& data-rawwidth=&600& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/86833beaca8ee2ec067a60fb6b751bf8_r.jpg&&&/figure&&br&总之最后会成为这样&br&&br&&figure&&img src=&/9edc5eb8cb56cc082f6b8_b.jpg& data-rawwidth=&446& data-rawheight=&414& class=&origin_image zh-lightbox-thumb& width=&446& data-original=&/9edc5eb8cb56cc082f6b8_r.jpg&&&/figure&
先普及用户通过 浏览器 访问网页 的过程: 网页内容是通过服务器运算得出的结果,将结果(网页代码)传输给浏览器,网页代码再通过浏览器运算(计算、渲染),最终展示在用户的眼前的。 至此,我们知道了有2个运算过程: 1、服务器运算 2、浏览器运算 而让电脑(…
找不到之前所见过的网页,深有同感!&br&&a href=&///?target=http%3A//tympanus.net/Development/AnimatedBooks/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Animated Books with CSS 3D Transforms&i class=&icon-external&&&/i&&/a&
这是一个3D书本,CSS3完成&br&&br&=========HTML5特效聚集网站========&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&& 的页面&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&& 的页面&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mr.doob&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//litewerx.dk/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&litewerx.showcase&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///%23%21/main& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Form Follows Function&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AlteredQualia&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///en/resources& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&& 的页面&i class=&icon-external&&&/i&&/a&&br&&br&===========视觉特效与交互式视频============&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&&/span&&span class=&invisible&&/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//www.itsumokawaii.jp/en/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Interactive Film &itsumo kawaii&&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Arcade Fire / Just a Reflektor&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///Aaronetrope/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Aaronetrope&i class=&icon-external&&&/i&&/a&
3D科幻视频投影对话&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Aleksandar Rodic&i class=&icon-external&&&/i&&/a& 3D立体博客&br&&a href=&///?target=http%3A//inear.se/beanstalk/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Beanstalk&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//www.ro.me/& clas}

我要回帖

更多关于 html5培训课程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信