⑴ jQuery $(window).scroll事件出现问题
web前端开发 20 年变迁史,让我们来看看这20年里,web前端究竟经历了哪些变革,web前端在这20年里又有哪些突破和成就,怎么样看待这20年的web前端开发!
1990年,第一个Web浏览器诞生,而WWW的诞生直接拉开前端史的序幕。
从静态页面到Java,从依赖后端到自主开发,前端开发者从不被重视的“页面仔”逆袭为如今很多前端工程师的薪资比后端还高,从前端技术由国外开发者主导到如今国内自主产生的小程序技术,我们走了20年。
了解web前端:http://www.cnite.cn/qianan/
作者 | 司徒正美
责编 | 伍杏玲
1990 年,第一个Web浏览器的诞生;1991 年,WWW诞生,这标志着前端技术的开始。
在这将近20年的前端发展史中,我们经历了从最早的纯静态页面,到Java跨时代的诞生;从PC端到移动端;从依赖后端到前端可自由打包开发;从早期的网景Navigator浏览器到现在各家浏览器百花齐放……
我们经历了前端的洪荒时代、Prototype时代、jQuery时代 、后jQuery时期、三大框架割据时代,这其中均是由国外开发者主导,直到如今的小程序时代,才是中国开发者独创的。
这是漫长的技术储备下的成果,最终促成了良好的技术成长收获。期间的前端发展之路,崎岖艰难:
洪荒时代(1990~1994年)
在1990~1994年期间,前端界发生的大事有:WWW(World Wide Web)的诞生、浏览器的诞生、Java的诞生,没有专业的前端,页面全是由后端开发的。
1990年,万维网之父蒂姆·伯纳斯-李(Tim Berners-Lee)在NeXT电脑上发明了第一个Web浏览器。
1991年8月6日,Tim在alt.hypertext新闻组贴出了一份关于World Wide Web的简单摘要,这标志了Web页面在Internet上的首次登场。
最早的Web主要被一帮科学家们用来共享和传递信息,全世界的Web服务器也就几十台。由于仅是用来传递信息,从可视化方式或从传递数量上看,仅比电报强一点点。
当时还没有Java,用的是纯静态的页面。
1993年,CGI(Common Gateway Interface)出现了,人们可以在后端动态生成页面。
Perl由于跨操作系统和易于修改的特性成为CGI的主要编写语言。当然,CGI也支持其他支持标准输入输出和环境变量的语言编写,比如Shell脚本、C/C++语言,只要符合接口标准即可。
但显然,页面的内容更新完全由后端生成,这带来一个明显的缺憾:每次更新都要整页刷新,加上早期的网速情况,这个操作是非常慢的。因此针对这情况,人们从多方面着手改进:编写语言的升级、浏览器的升级、HTML的升级。
1994年,网景公司成立,发布了第一款商业浏览器Navigator。自从这款浏览器面世后,微软推出IE浏览器。虽说有竞争才有发展,但这也埋下了Java分裂的种子。
(1994 年,网景浏览器的截图)
同年,PHP诞生。PHP能将动态的内容嵌入到HTML中,提升了编写页面的效率与可读性,其性能也比一般的CGI高。PHP的界定符、循环语句等的发明,深刻影响了后来的ASP、JSP,乃致后来的Java前端模板引擎。
1994年10月,W3C小组也成立了,他们负责HTML的发展路径,其宗旨是通过促进通用协议的发展。
待这一切就绪后, Java于1995年诞生了。
传闻,网景工程师布兰登·艾克(Brendan Eich)只花了10天时间设计出 Java 语言,近乎上帝七日创造世界那么高效。但也因为工期太短的缘故,导致许多瑕疵,因此一直被正统传序员所嫌弃,直到Ajax的出世,才让人们找到理由忍受它的畸形。早期的浏览器都配有一个选项,用来禁止Java语言运行。
Java主要语言特征[1]:
借鉴C语言的基本语法;
借鉴Java语言的数据类型和内存管理;
借鉴Scheme语言,将函数提升到"第一等公民"(first-class citizen)的地位;
借鉴Self语言,使用基于原型(Prototype)的继承机制。
时下,静态语言大行其道,类与接口被证明是构建大工程的最佳实践,人们想不出没有类的语言如何编写业务。因此当时的微软也打造了另一门运行于浏览器的语言——VB。
如果继续细探Java的能力,你会发现它早期真的非常空洞,一门没有灵魂的语言,没有包管理机制,也没有像Java与C++那样的打辅助用的SDK,内置的方法也屈指可数。比如说数组方法,早期只有push、pop、shift、unshift、splice、slice、sort、reverse、concat、join等操作。动态调用方面,Function的apply、call操作还没有出现!
早年的偷懒,导致后来不得不补课:到了2019年,数组上的原型方法,是原来3倍。
除了方法缺乏,还有性能问题,大家讨论用eval还是Function,用哪种循环方式,用parseInit还是~~,就是为了那一点点的性能提升。例如jsperf.com,就是一个专门研究Java性能的网站。
因此Java诞生后,其两大任务就是完善语言特性与提高性能。这两座大山分别由着名的prototype.js与jQuery来搬掉。
在搬掉之前,前端界还有一个曲折实践——第一次浏览器战争,并由其发展而来UA嗅深技术。
浏览器战争(1994~2005年)
浏览器战争一共打了三场,IE浏览器vs网景浏览器、IE浏览vs火狐浏览器、IE浏览器vs谷歌浏览器。
第一场浏览器之战打得尤其激烈。
微软的IE浏览器发布于1994年,但此时的网景已经占领绝对优势。微软在落后的情况,反编译Netscape的源码,推出IE与J。但是由于Bug非常多,大家不愿意为IE开发网站,因此发掘出UA,专门过滤掉IE浏览器。
UA即Navigator.userAgent ,是用一个字符串来记录用户当前运行在什么操作系统与浏览器中。当前IE3的UA是这样的:
Mozilla/2.0 (compatible; MSIE 3.02; Windows 95)
程序判断UA信息,假如发现当前运行的环境是IE浏览器的话,就提示用户用网景浏览器打开。因此微软不得不让自己的UA尽量伪装成网景的UA,欺骗用于检测UA的脚本,达到IE浏览器可以跑这些网站的目的。
最终,第一次浏览器之战以微软胜利,Netscape被美国在线收购,而落下帷幕。
第一次浏览器战争年代非常久远了,但其结局告诉我们,其实技术强弱并不重要。那时技术保护并没有这么重视,否则微软的行为可能会被告(谷歌的openSDK仅抄袭几十行代码,被Oracle公司诉讼赔88亿)。
第一次浏览器战争带来了一个问题:尽管当时有ECMA-262(Java规范文档)与W3C(HTML与CSS的规范文档),微软却没有照规范来实现Java、HTML与CSS,导致前端兼容问题的诞生。所以CSS Hack、浏览器判定、特性侦测,这些技术就应运而生。
这个时代最着名的人物是Dean Edwrad,他是最早的近乎完美解决事件绑定的兼容性大神,其addEvent()内置于jQuery最早的版本中。jQuery的作者John Resig看到其超强的技艺,最后放弃推出大而全的框架,专攻选择器引擎。
Dean Edwrad的IE7.js、IE8.js是早期处理浏览器兼容的良药,可以说是一切Polyfill[2]的起源。他写了大量的Hack, 比如在IE如何测量元素的宽高,许多操作DOM的兼容。
这时期太早,中国基本没有参与这次浏览器战争。
Prototype时期(2005~2009年)
Prototype是Sam Stephenson写的一个非常优雅的Java基础类库。他是Ruby的大牛,因此Prototype的许多方法名都是来自Ruby界。
Sam Stephenson最大的贡献是发掘了Prototype与创造了Function.prototype.bind,在数组上也写了一大堆方法,其中许多被标准化了。
同期的MooTools也是Prototype的方法,当时,大家还在前端论坛为这个争吵。还有前端工程师喜欢在当时很出名的前端聚集地——蓝色理想(现沦为设计师网站)上,讨论如何扒脚本、分享弹层、日历等小组件的技术,这在当时已经是非常了不起的事。
Prototype当时还解决两大问题:动画特效与Ajax请求。动画特效是由aculous提供,我们现在所熟知的各种缓动函数,各种特效的命名与大致的运行形态,都是由aculous确定下来的。
在早期,谷歌就开始使用iframe实现页面刷新。
2005 年2月,杰西·詹姆士·贾瑞特(JesseJamesGarrett)发表了一篇名为《Ajax:一种Web应用程序开发的新方法》的文章后,Ajax被挖掘出,大家才开始重视起这技术的应用。
例如IE下的ActiveXObject("Microsoft.XMLHTTP"),这是IE创建Ajax引擎的。假如当时有工程师开发出一个核心库,如果不包含Ajax的封装,便不好意思发布出来。
一些Ajax书藉
当时前端开发模式是选择一个核心库,找一些组件,或者扒别人的脚本进行开发
Prototype的源码挺好理解的,代码量也少,只有5000多行,里面的每个方法也很易扒出来,因此一些大公司总有高手能创造自己的Prototype。
但前端开发还是离不开后端,因为前端没有模块机制,当时我们需要用PHP进行打包。打包是雅虎34条军规之一,可以减少请求数。打包的同时也可以进行混淆,防止代码小偷来窥探。
N年前,前端面试必问的题目:
模块化的雏型, 在注释中标注它的依赖
这个时期,还没有前后端分离,可国内一些带着深厚后端背景的高手已经入场。
jQuery 时期(2009~2012年)
2006年,jQuery发布,它当时的竞争对手很多:Dojo、Prototype、ExtJS、MooTools。
所以那时jQuery的宣传口号仅能说是它的性能上升了100%、200%、300%。直到2009年,Sizzle选择器引擎研发成功,jQuery才取得压倒性的优势。
当时前端界首要面对的是浏览器兼容性问题,jQuery在处理DOM兼容上真是知微见着, 发掘出大量的DOM/BOM兼容方案(例如Dean Edwrad的addEvent(), IE的px转换方案,domReady的doScroll方案,globalEval的兼容方案等)
jQuery也打破了前端开发者的编程思维,之前是按照后端的开发思路来的:做一个业务就先封装一个类,有了这个类后,再想办法传入一个DOM,然后再通过类方法操作DOM。而jQuery是DOM为中心,开发者可以选一个或多个DOM,变成jQuery对象,然后进行链式操作。当时为了改变用户的思维,国内的高手写了不少文章来引导大家。
其次,开发者们已开始注重前后端分离,并要求不能污染Object原型对象,不能污染window全局变量。这样,jQuery只占用两个全局变量。
再次,jQuery非常轻量级,采用Dean Edwards编写的Packer压缩后, 大小不到30KB。并且里面实现得非常精妙,以令人瞠目的手段解决各种兼容痼疾。
为了学习这些技巧,高手们翻了一遍遍jQuery的源码,所以网上有大量关于其源码详解的书藉。甚至前端工程师在面试时也会被考到jQuery的源码实现,这样,jQuery在国内更加流行。
jQuery的流行间接带来以下的发展:
促使人们对CSS1~CSS3选择器的学习
促进了浏览器原生选择器引擎document.querySelectorAll、Element.matches的诞生
提高人们对domReady(DOMContentLoaded事件)的认识
促进了Promise与requestAnimateFrame 的诞生
最重要的是降低前端门槛,让更多人进入这行业,前端工程师的队伍越来越壮大。
这样的话,不断涌现出优秀的工程师,他们创造了大量jQuery插件与UI库。为后jQuery时代,人们研发前端模块加载、统一异步机制、 打造大型MVC框架, 甚至伸向后端,接管打包脚本而发明Node.js,来腾出大量时间。
这个时期涌现了大量jQuery-like的库,其中最着名的是Zepto.js。Zepto的出现也标志着我们进入移动互联网时代。那时配套出的着名库还有iScroll、fastclick、Lazy Load、Modernizr、fullPage。
jQuery的链式操作风麾一时,也带来许多问题,当Ajax出现依赖时,就不可避免就出现回调地狱。因此针对这方面的讨论,诞生Deffered与Promise。有关回调地狱的讨论,在后来讲Node.js异步处理时,将会再一次热烈地讨论。因此太阳下没有新事,我们总是遇到相似的问题。
jQuery如此多的选择器也法维护,随着越来越多人涌现这行业,页面的交互也越来越复杂,从Web Page向Web App进化,新的趋势带来新的开发方式。
后jQuery时期(2012~2016年)
这时期以RequireJS的诞生为起点,以RN的出现结束。同时解决了前端的模块定义问题,模块打包问题(通过Node.js),Java不依靠其他语言创造了一套自己的工具链。
jQuery的出现让前端工程师开发更加轻松,假如工程师想实现一个功能,现搜索出一个jQuery插件来实现。那时候大家在前端网站就整天介绍jQuery插件,很少讨论一些底层的实现。
前端工程师通常编写一个页面,会引入十多个乃至几十个jQuery插件,页面上塞满了标签。众所周知,浏览器是单线程,的加载,会影响到页面的解析与呈现,导致着名的白屏问题(当时前端用力过勐,body中的所有东西都是动态生成的)。
jQuery另一个问题是全局污染,由于插件的质量问题,或者开发的素质问题,这已经是IIEF模块或命名空间等传统手段无法解决了。
于是一些优秀的前端工程师们决定从取经后端,引入模块机制。早期,这种模块机制在Dojo、EXT这些框架中都是内置的,但是显然说服不了另一个框架的用户用对方的模块机制,于是有人立志要统一这种模块定义方式,成立了CommonJS。
但不料,CommonJS内部也有派系,谁也说不服对方。终于有一个人忍不住自己独立开发出RequireJS,其模块规范即为AMD。 AMD最大的优势是它支持各种插件,且简单明了,并且提供shim机制加载以非AMD规范编写的Java代码。
但在CommonJS诞生很久一段时间后,在后端的Node.js出现时才有用武之地。而国内,则流行另一种规范风格,背靠阿里的大旗,有人推出了SeaJS,号称其规范为CMD。其实无论国内还是国外,都产生许多模块加载器,但最后还是被淘汰了,规范一个就够了,不宜过多。
但是前端工程师的创造力就是这么惊人,从无到有,再到泛滥成灾,一年足矣。这可能与前端代码是开源的原因。最后有人统一了前两种规范(AMD、Node.js模块),同时还支持老式的“全局”变量规范。
自此,Java开发模式焕然一身了,大家只要在代码外面包一层就可以全世界通用,不用提心全局污染的问题。
其次,jQuery开发者需要解决大段HTML的生成问题,之前jQuery有$.html, $.append, $before等方法,可以将一大段符合HTML结构的字符串转换成DOM再插入到页面上。
但现在我们想分离出来,让HTML独立到不同的文件中,然后插数据,这就是前端模板。前端模板的情况与模板规范一样,从没有到多如芝麻的境地。这时筛选一个好用且性能高的模板是一件让前端工程师头疼的问题,那时网上有许多评测文章来介绍它们。
前端模板技术可以用一个公式来描述:
HTML = template(vars)
有了前端模板后,又诞生了前端路由,基于它们,人们发明一个新词汇SPA。作为这个时代的尾声,来自Ruby界的高手Ryan Dahl发明了Node.js。 前端工程师们欢唿:可以不用传统的后端就能自己写一个网站了!
Node.js的发展就不详述上,很快它就冒出海量模块、路由、状态管理、数据库、MVC框架都有了。这时,前端就缺自己的MVC框架了。Node.js转眼就十岁生日了。
着名的MEAN架构,是Java全栈开发的先锋。当时涌现了大量的MVC与MVVM框架。最先火起来的是Backbone.js,使用纯正的MVC模型, Backbone.js是jQuery最后的支持者,它强依赖于jQuery。
Backbone.js的作者还搞了另一套编译语言Coffee, 里面的箭头函数、类机制、 解构赋值等语法糖都深深影响了后来的ES6。
接着下来是谷歌的Angular,微软的Knockout.js,苹果的Ember.js这三个MVVM框架,MVVM就是比MVC多一个数据绑定功能,但这数据绑定功能是非常难实现。Knockout是使用函数代替属性的技巧实现,它的设计影响到后来的Mobx;Ember.js是基于Object.defineProperty;Angular是将函数体转译成setter()、getter()函数。
大公司的介入,对个人开发者影响是很大,毕竟大家都爱迷信大公司,因此局面一下子就稳定下来。大公司还带来了全新的开发模式,早期都是找一个核心库,再搜刮一大堆插件,然后自己写业务代码,最后后端打包。
大公司将后端开发经验挪用过来,用Node.js开发了一套CLI,里面包含了脚手架生成, 打包脚本、语法风格检测、环境变量插入,代码复杂度检测,代码提交时自动跑单元测试, 图片与JS压缩等功能。ESLint、JSLint、JSHint、CSS Lint、 htmllint等就是那时期出现的。
但CLI的出现导致了前端的分裂,以前大家都使用jQuery,但自CLI帮你建好项目的那一刻起,就将你划归某一子阵营,你是Angular?Ember.js?还是jQuery?对了,jQuery没有大公司支撑的阵营被快速边缘化。
对于个人开发者,他们是没有能力开发这么功能完备的CLI,于是出现了Code Climate、Travis CI、CircleCI这样的平台。它们的出现标志着jQuery小作坊时代的终结了。
CircleCI官网
前端开发者也出现分化:有些人转向后端,出现了CNode的门户网站。另外一些人开始搞工程化。一时间出现上百种构建工具,出名的有Grunt、Gulp、FIS3、webpack、 Rollup、npm-。
你方唱罢我登场,这些构建工具均会经历时代的考验,如大浪淘沙般,最后存活得仅为寥寥。
因此在这场工程化得盛宴中,注定把许多低层次的jQueryer淘汰掉。jQueryer在空闲之余培育出的前端模板、前端路由、MVC框架、模块加载器、Node.js构建工具,却不料最终成为它自己的挖墓人。
jQuery的时代一去不返了,再没有人关心拖堂拖了N年的Bootstrap 4终于发布了,没有人知道jQuery3.5的瘦身计划,也没有人问jQuery的源码,渐渐地,大家不关注jQuery的工具链了。
三大框架割据时代(2016~至今)
React是突然爆发的,虽然它是与Angular是同时期发布,但因为JSX怪异的语法让人们远离它。此时已经进入移动互联网的中期,大公司都有自己的App,或者基于原生,或者基于Hybird。
Hybird是用WebView加载一个网站或一个SPA。
由于原生成本太贵,需要招两套班子,一套安卓的,一套iOS的;而Hybird则一直存在性能问题。于是在2017年,Facebook推出了React Native(RN)。
RN的性能不比原生差多少,比Hybird能好些, 其次使用JSX开发界面比原生的快; RN 只需要低成本的前端开发人员就能上手了。中国国内经过瀑布流(图片导购)、团购、P2P、区块链等全新商业模式的开发浪潮后,前端人员数量大增。现在,他们只要稍微培训就可以转型为App开发。
在开发RN的过程中,人们开始了解React一系列的优胜之处。比如JSX背后的虚拟DOM技术,虽然事实证明虚拟DOM不会带来性能的巨大优势,但保证了你怎么写其性能不会太差。
React为了引入JSX,必须需要引入编译,这又间接促成Babel与webpack的壮大。尤其是Babel, 让我们在很旧的浏览器中使用非常新的语法,甚至一些还没有定案的语法。React从14升级到React 15,强制使用class语法,让这个推了好久的语法糖终于大规模落地。
之前如果Java想使用类,只能自己模拟类,由于没有官方的实现,只能任由各优秀工程师发挥。而普通人想用好类,需要了解很复杂的Prototype机制。
现在只用几个新关键字就可以得到这一切。
如果对比Python 2与Python 3间的升级,Java实在太辛运了!针对CSS逻辑功能过弱的问题,我们也有了新的解决方案:Less、Sass、PostCSS与CSS Moles!
谷歌在发布Angular的同时,也发布了一个叫Polymer的框架,那时它想推广一种叫Web Components的浏览器自定义组件技术。这其实是微软在IE5就玩剩的HTC技术的升级版。虽然它没有火起来,但它将、Style、Template三种内容混在一个文件的设计,启发一个留美华人,再结合当时的Backbone.js、Angular等设计,Vue.js横空出世。目前,这是国人最成功的前端框架了。
除此之外,国人也弄了好几套迷你React框架与迷你Vue框架。这有点像jQuery时代,大家疯狂做迷你jQuery框架一样。
总的来说,最有创造力的是React团队,做出状态管理器、CSS-in-JS、Flow静态类型检查、devTool、Fetch、前后端同构、Fiber、suspend、并发渲染等名词层出不穷。其中,状态管理器拥有上百套, CSS-in-JS也拥有上百套,Flow则让前端尝鲜到接口编程的好处,间接推动发Type发展。这三大框架无法比拼个一二出来:Vue.js有国人的拥趸,React与Angular有大公司光环。
三大框架的缠斗从PC领域扩展到移动端:React有RN, Vue.js有Weex,Angular有ionic。想当年我们为了兼容浏览器,攒了一大堆浏览器侦探的Hack,全部贬值为垃圾了。
在这时期,一种全新的后端渲染崛起,称之为前后同构,既拥有早期SEO的功效,又能复用大量的业务逻辑。随着国内移动互联网的发展,获客成本提高,各种有效的商业模式都进入红海,但只有头部用户能赚到钱,马太效应越来越严重,纯粹的技术解决方案已经无法满足商业诉求了。
小程序时代(2017~至今)
小程序时代与三大框架的时代几乎重合,但是出自不同一批人,决战的平台也不一样。
一直以来前端技术都是由国外开发者主导的,即便是Vue.js也是由美国的华人创造的。但是国内外的技术更新是存在代差,国内通常延期两三年,这个时间差可以让一些模仿者得以生存(如SeaJS、FIS、avalon)。但随着封闭的时间越来越长,国内肯会也会诞生自己的转有物种。小程序就是其中之一。
小程序的出现有着明显的商业诉求,因为马太效应,一些超大流量的App诞生了。这些大流量App集成了许多功能,但显然公司再多员工,也无法所有功能全是自己弄,于是产生小程序这种“外包”的手段。
小程序是国内前端技术的一次厚积薄发:底层运行的迷你React的虚拟DOM, 内置组件是使用Web Component,API来源于Hybird的桥方法,打包使用webpack,调试台是Chrome console的简化版, WXML、WXSS的语法高亮也应该是webpack或VS Code的插件, 模块机制是Node.js的CommonJS……其中最值得一提的是微信开发者工具,以后开发者工具成了各种小程序/快应用的标配。
但微信小程序一开始的复用能力非常弱,没有类继承,不能使用npm, 不支持Less、Sass, 因此基于它的转译框架就应运而生。第一代译转框架是wept、WePY、mpvue,它们无一例外是Vue风格的。因为WXML的模板指令与Vue非常相似,只是改一下就能兼容。当时也出现了一个MINA的框架,听说是微信团队开发的,可以单独架起Node.js后端,让小程序运于浏览器中,方便做单元测试。
第一代转译框架主要是基于Template标签实现组件机制,自定义组件机制是很后的事了。这就造成了利用第一代转译框架编写的小程序项目很难升级。那时候是个人开发者的天堂,这些框架都是某一大牛独力开发的。
第二代转译框架是大公司主导的,因为需要兼容的小程序越来越多,网络、支付宝、字节跳动、小米、华为等公司都推出自己的小程序和快应用。个人开发者很难凭个人力量去开发转译框架,这时候各大团队纷纷推出自己的轮子:如京东的Taro、滴滴的Chameleon网易的Megalo、去哪儿网的nanachi、网络的Okam等。
在这个时期,Angular显然落伍了,一是Angular升级太快,国内的高手还没有消化好,新一版的Angular又发布了。二是国内缺乏迷你Angular的轮子,导致庞大的Angular无法塞进小程序中。
国外谷歌发布了Flutter跨平台转译框架,但是它的编写语言是Dart,它也无法跨界到小程序中。
未来不仅国内一线巨头争夺小程序,二三线的巨头也可能会加入小程序的混战中,例如有人称360也在打造自己的小程序平台。小程序这种新的流量变现模式深刻地影响了国内的互联网布局。
结语
当初Java被误解为最糟糕的语言,时至今日它是最流行的语言:GitHub 60%的开源项目都是与Java有关。
以前,从事这行业的人被称为页面仔,现在他们的起薪有的比PHP、JAVA、C++等后端还高。甚至有人说,“任何可以使用Java来编写的应用,最终会由Java编写。”
我们前端开发者触及的领域不仅仅是浏览器,还可以做后端,做桌面端,做手机端,做小程序端,前端开发者的性价比越来越高,越来越重要。可谓是时代造英雄。
笔者有幸成为前端开发者大队伍中的一员,也坚信我们前端开发者以后的路会越来越宽,越来越好走。
资料:
[1]:计算机和编程语言的发展历史
[2]:Polyfill是一块代码(通常是 Web 上的 Java),用来为旧浏览器提供它没有原生支持的较新的功能。
作者简介:司徒正美,拥有十年纯前端经验,着有《Java框架设计》一书,去哪儿网公共技术部前端架构师。爱好开源,拥有mass、Avalon、nanachi等前端框架。目前在主导公司的小程序、快应用的研发项目。
本文链接:http://www.cnite.cn/qianan/share/20198308.html
⑵ 家用安防系统发展历程
据前瞻网2013-2017年安防行业研究报告显示安防行业在中国有30多年的发展历史,以最早的文博领域的应用为起源,主要服务于文博、金融、公安等重点要害部门。近几年,伴随着行业的高度发展,社会经济的进步,人们生活水平提高,安防更多地走进家庭,贴近生活,除了传统的防盗门、保险柜,越来越多的高科技、电子安防产品载入智能家居,服务美好生活。
家用安防系统在国内市场出现是在新世纪以后,起初发展速度较为缓慢。近几年,随着移动技术的发展,尤其是WIFI、3G等高速无线网络的普及,家用安防市场才迎来真正的发展。目前市场规模已超过20亿元,虽然整体规模偏低,但却是安防领域增速最快的一个市场,已经吸引了包括联想、海尔等一系列知名企业加入其中。
可以参考一下中国安防网一篇文章 报道:
一、智能家居的基本概念
智能家居是以住宅为平台,利用综合布线技术、网络通信技术、安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。
智能家居集成是利用综合布线技术、网络通信技术、安全防范技术、自动控制技术、音视频技术将家居生活有关的设备集成。由于智能家居采用的技术标准与协议的不同,大多数智能家居系统都采用综合布线方式,但少数系统可能并不采用综合布线技术,如电力载波,不论哪一种情况,都一定有对应的网络通信技术来完成所需的信号传输任务,因此网络通信技术是智能家居集成中关键的技术之一。安全防范技术是智能家居系统中必不可少的技术,在小区及户内可视对讲、家庭监控、家庭防盗报警、与家庭有关的小区一卡通等领域都有广泛应用。自动控制技术是智能家居系统中必不可少的技术,广泛应用在智能家居控制中心、家居设备自动控制模块中,对于家庭能源的科学管理、家庭设备的日程管理都有十分重要的作用。音视频技术是实现家庭环境舒适性、艺术性的重要技术,体现在音视频集中分配、背景音乐、家庭影院等方面。
又称智能住宅。通俗地说,它是融合了自动化控制系统、计算机网络系统和网络通讯技术于一体的网络化智能化的家居控制系统。智能家居将让用户有更方便的手段来管理家庭设备,比如,通过家触摸屏、无线遥控器、电话、互联网或者语音识别控制家用设备,更可以执行场景操作,使多个设备形成联动;另一方面,智能家居内的各种设备相互间可以通讯,不需要用户指挥也能根据不同的状态互动运行,从而给用户带来最大程度的高效、便利、舒适与安全。
智能家居是在物联网的影响之下物联化体现。智能家居通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、网络家电以及三表抄送等)连接到一起,提供家电控制、照明控制、窗帘控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段。与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、网络通信、信息家电、设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境,提供全方位的信息交互功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。
二、智能家居系统介绍
智能家居系统包含的主要子系统有:家居布线系统、家庭网络系统、智能家居(中央)控制管理系统、家居照明控制系统、家庭安防系统、背景音乐系统(如TVC平板音响)、家庭影院与物联智能家居控制系统、多媒体系统、家庭环境控制系统等八大系统。其中,智能家居(中央)控制管理系统、家居照明控制系统、家庭安防系统是必备系统,家居布线系统、家庭网络系统、背景音乐系统、家庭影院与多媒体系统、家庭环境控制系统为可选系统。
在智能家居系统产品的认定上,厂商生产的智能家居(智能家居系统产品)必须是属于必备系统,能实现智能家居的主要功能,才可称为智能家居。因此,智能家居(中央)控制管理系统、家居照明控制系统、家庭安防系统都可直接称为智能家居(智能家居系统产品)。而可选系统都不能直接称为智能家居,只能用智能家居加上具体系统的组合表述方法,如背景音乐系统,称为智能家居背景音乐。将可选系统产品直接称作智能家居,是对用户的一种误导行为。
在智能家居环境的认定上,只有完整地安装了所有的必备系统,并且至少选装了一种及以上的可选系统的智能家居才能称为智能家居。
根据2012年4月5日中国室内装饰协会智能化委员会《智能家居系统产品分类指导手册》的分类依据,智能家居系统产品共分为20个分类:控制主机(集中控制器);智能照明系统;电器控制系统;家庭背景音乐;家庭影院系统;对讲系统;视频监控;防盗报警;电锁门禁;智能遮阳(电动窗帘);暖通空调系统;太阳能与节能设备;自动抄表;智能家居软件;家居布线系统;家庭网络;厨卫电视系统;运动与健康监测;花草自动浇灌;宠物照看与动物管制。
结合安防产品和技术的应用情况,智能家居主要具有以下功能:
(一)报警及联动功能
安装门磁、窗磁,防止非法入侵,管理系统可通过安装在住户室内的报警控制器得到信号从而快速接警处理。报警联动控制可在室内发生报警时,系统向外发出报警信息的同时,自动打开室内的照明灯光、启动警号等。
(二)紧急求助功能
室内的报警控制器具有紧急呼叫功能,管理系统可对住户的紧急求助信号做出回应和救助。
(三)报警管理显示功能
离家模式即防盗报警状态,防止非法入侵,管理系统可实时接收报警信号,自动显示报警住户号和报警类型,并自动进行系统信息存档。
(四)预设报警功能
智能安防系统可预设报警电话。
(五)设/撤防联动控制
在家设防模式,安全防范系统可联动切断某些家用电器的电源。在家撤防模式,部分照明灯自动打开,门磁和窗磁离线,室内烟感探测器和厨房可燃气体探测器仍为报警模式。
(六)警情后控制处理
当家中有非法入侵者或者煤气泄漏时系统会自动拨打电话、发送短信、彩信、抓拍图片并E-mail到指定用户手机!用户收到电话短信时可以第一时间用手机电脑查看家中监控画面并控制其家中家电设置、布防撤防等操作。
三、智能家居的主要功能
(一)智能视频监控
随着人们居住环境的升级,人们越来越重视自己的个人安全和财产安全,对人、家庭以及住宅的小区的安全方面提出了更高的要求;同时,经济的飞速发展伴随着城市流动人口的急剧增加,给城市的社会治安增加了新的难题,要保障小区的安全,防止偷抢事件的发生,就必须有自己的安全防范系统,人防的保安方式难以适应我们的要求,智能安防已成为当前的发展趋势。
视频监控系统己经广泛地存在于银行、商场、车站和交通路口等公共场所,但实际的监控任务仍需要较多的人工完成,而且现有的视频监控系统通常只是录制视频图像,提供的信息是没有经过解释的视频图像,只能用作事后取证,没有充分发挥监控的实时性和主动性。为了能实时分析、跟踪、判别监控对象,并在异常事件发生时提示、上报,为政府部门、安全领域及时决策、正确行动提供支持,视频监控的“智能化”就显得尤为重要。
优点:
1、安全:安防系统可以对陌生人入侵、煤气泄漏、火灾等情况提前及时发现并通知主人;
2、简单:操作非常简单可以通过遥控器或者门口控制器进行布防或者撤防。
3、实用:视频监控系统可以依靠安装在室外的摄像机可以有效的阻止小偷进一步行动,并且也可以在事后取证给警方提供有利证据。
(二)智能视频共享
视频共享系统是将数字电视机顶盒、DVD机、录像机、卫星接收机等视频设备集中安装于隐蔽的地方,系统可以做到让客厅、餐厅、卧室等多个房间的电视机共享家庭影音库,并可以通过遥控器选择自己喜欢的音源进行观看,采用这样的方式既可以让电视机共享音视频设备,又不需要重复购买设备和布线,既节省了资金又节约了空间。
优点:
1、简单:布线简单,一根线可以传输多种视频信号,操作更方便。
2、实用:无论主机在哪里,一个遥控器就可以对所有视频主机进行控制。
3、安全:采用弱电布线,网线传输信号,永不落伍,即使以后升级还是用网线。
(三)可视对讲系统
可视对讲产品已比较成熟,成熟案例随处可见,这其中有大型联网对讲系统,也有单独的对讲系统,比如别墅用的,其中有分一拖一、二、三等;一般实现的功能是可以呼叫、可视、对讲等功能,但是通过“品奇居”的整合部已经将很多不同平台的产品实现了统一,增强了整套系统控制部分的优势,让室内主机也可以控制家里的灯光和电器了。
四、智能家居的发展历程
智能家居作为一个新生产业,目前处于一个导入期与成长期的临界点,市场消费观念还未形成,但随着智能家居市场推广普及的进一步落实,培育起消费者的使用习惯,智能家居市场的消费潜力必然是巨大的,产业前景光明。正因为如此,国内优秀的智能家居生产企业愈来愈重视对行业市场的研究,特别是对企业发展环境和客户需求趋势变化的深入研究,一大批国内优秀的智能家居品牌迅速崛起,逐渐成为智能家居产业中的翘楚!智能家居至今在中国已经历了近12年的发展,从人们初最初的梦想,到今天真实的走进我们的生活,经历了一个艰难的过程。
智能家居在中国的发展经历的四个阶段,分别是萌芽期/智能小区期、开创期、徘徊期、融合演变期。
(一)萌芽期/智能小区期(1994年-1999年)
这是智能家居在中国的第一个发展阶段,整个行业还处在一个概念熟悉、产品认知的阶段,这时还没有出现专业的智能家居生产厂商,只有深圳有一两家从事美国X-10智能家居代理销售的公司从事进口零售业务,产品多销售给居住国内的欧美用户。
(二)开创期(2000年-2005年)
国内先后成立了五十多家智能家居研发生产企业,主要集中在深圳、上海、天津、北京、杭州、厦门等地。智能家居的市场营销、技术培训体系逐渐完善起来,此阶段,国外智能家居产品基本没有进入国内市场。
(三)徘徊期(2006-2010年)
2005年以后,由于上一阶段智能家居企业的野蛮成长和恶性竞争,给智能家居行业带来了极大的负面影响:包括过份夸大智能家居的功能而实际上无法达到这个效果、厂商只顾发展代理商却忽略了对代理商的培训和扶持导致代理商经营困难、产品不稳定导致用户高投诉率。行业用户、媒体开始质疑智能家居的实际效果,由原来的鼓吹变得谨慎,市场销售也几年出来增长减缓甚至部分区域出现了销售额下降的现象。2005年-2007年,大约有20多家智能家居生产企业退出了这一市场,各地代理商结业转行的也不在少数。许多坚持下来的智能家居企业,在这几年也经历了缩减规模的痛苦。正在在这一时期,国外的智能家居品牌却暗中布局进入了中国市场,目前活跃在市场上的国外主要智能家居品牌都是这一时期进入中国市场的,如罗格朗、霍尼韦尔、施耐德、Control4等。
(四)融合演变期(2011-2020年)
进入2011年以来,市场明显看到了增长的势头,而且大的行业背景是房地产受到调控。智能家居的放量增长说明智能家居行业进入了一个拐点,由徘徊期进入了新一轮的融合演变期。
接下来的三到五年,智能家居一方面进入一个相对快速的发展阶段,另一方面协议与技术标准开始主动互通和融合,行业并购现象开始出来甚至成为主流。
接下来的五到十年,将是智能家居行业发展极为快速,但也是最不可琢磨的时期,由于住宅家庭成为各行业争夺的焦点市场,智能家居作为一个承接平台成为各方力量首先争夺的目标。谁能最终胜出,我们可以作种种分析,但最终结果,也许只有到时才知。但不管如何发展,这个阶段国内将诞生多家年销售额上百亿元的智能家居企业。
五、智能家居发展趋势
《物联网发展专项资金》、《智能家用电器的智能化技术通则》、《中国物联网产业发展年度蓝皮书》、《宽带网络基础设施“十二五”规划》、《智能建筑设计标准》等一系列与智能家居相关政策的陆续出台,让智能家居产业切实有效地落到实处。
近几年来,智能家居在一步一步发展过程中,已经有逐渐形成一个行业的趋势,可用的、接近现实需求的产品不断增加,企业也在这些方面积累了很多经验。如何建立一个高效率、低成本的智能家居系统已成为当前社会一个热点问题。而一系列标准化制定工作的展开,为中国智能家居的发展提供了一个开放的标准化平台,指明了智能家居研究领域正确的发展方向。
2012北京安防展上智能家居展馆的盛况依然让人记忆犹新,最明显感受到的是,智能家居逐渐从概念落实到用户体验,以往的智能产品大多数是以家电控制、灯光控制、窗帘控制为产品出发点,而经过这几年的技术发展,特别是物联网与云计算的迅速崛起,给智能家居行业带来了全新的面貌,智能家居的定义也变得愈加广阔。智能家居已经不再仅限于视频监控、防盗报警、智能控制等普通的安防,通过物联网与云计算结合整体系统平台的应用,把衣食住行的信息植入到智能家居系统,智能家居将囊括人们生活中所有环节,包涵生活健康、日常服务,已经由简单的安全层面往更高需求延伸,打造出了全新的智能家居系统。智能家居企业也逐步从单独的产品线向综合的产品体系、整体解决方案开始过渡。
而在智能家居细分领域,智能家电、智能照明、楼宇对讲、家居控制、防盗报警等,其表现也可圈可点。几大巨头如海尔、长虹、海信等集团都不断推出各自的智能新产品,尤其是智能电视板块,夹杂着3D、高清等概念。
另外,智能终端的蓬勃发展,Android系统的崛起,苹果产品的疯狂,让智能手机、平板电脑等电子产品迅速融入到人们的生活中,同时带来家居控制的快速发展。施耐德电气近段时间对智能家居无线照明控制系统的大力推广,更是让智能照明控制领域暗潮汹涌。
据行业资深人士分析,物联网将会激活5000亿的市场。各地“物联网”、云计算项目的纷纷上马,给智能家居带来无限扩容空间。中外智能家居企业倾力打造“智能家居”产品,提升其竞争力,也逐渐获得了消费者的认知。中国本土的安防企业、家电企业、运营商、IT通信企业等亦集体投身智能家居的生产研发,最明显的是以前端显示为主的云电视的崛起。运用云计算、云存储等技术对现有应用进行升级的智能化云设备,拥有的海量存储、远程控制、软件更新和内容无限扩充等众多应用优势,目前已经受到消费者的普遍肯定。
智能家居四大规划剖解
(一)家庭自动化
家庭自动化系指利用微处理电子技术,来集成或控制家中的电子电器产品或系统,例如:照明灯、咖啡炉、电脑设备、保安系统、暖气及冷气系统、视讯及音响系统等。家庭自动化系统主要是以一个中央微处理机(CentralProcessorUnit,CPU)接收来自相关电子电器产品(外界环境因素的变化,如太阳初升或西落等所造成的光线变化等)的信息后,再以既定的程序发送适当的信息给其它电子电器产品。中央微处理机必须透过许多界面来控制家中的电器产品,这些界面可以是键盘,也可以是触摸式荧幕、按钮、电脑、电话机、遥控器等;消费者可发送信号至中央微处理机,或接收来自中央微处理机的讯号。
家庭自动化是智能家居的一个重要系统,在智能家居刚出现时,家庭自动化甚至就等同于智能家居,今天它仍是智能家居的核心之一,但随着网络技术有智能家居的普遍应用,网络家电/信息家电的成熟,家庭自动化的许多产品功能将融入到这些新产品中去,从而使单纯的家庭自动化产品在系统设计中越来越少,其核心地位也将被子家庭网络/家庭信息系统所代替。它将作为家庭网络中的控制网络部份在智能家居中发挥作用。
(二)家庭网络化
首先大家要把这个家庭网络和纯粹的“家庭局域网”分开来,它是指连接家庭里的PC、各种外设及与因特网互联的网络系统,它只是家庭网络的一个组成部份。家庭网络是在家庭范围内(可扩展至邻居,小区)将PC、家电、安全系统、照明系统和广域网相连接的一种新技术。家庭网络加入了很多家庭应用的产品和系统,如家电设备、照明系统、家庭影院、音乐等。家庭网络的发展趋势是将智能家居中其它系统融合进去,最终实现“享受智慧生活、完美智慧人生”。
(三)网络家电
网络家电是将普通家用电器利用数字技术、网络技术及智能控制技术设计改进的新型家电产品。网络家电可以使用物联网技术组合成一个家庭内部网络,同时这个家庭网络又可以与外部互联网相连接。目前认为比较可行的网络家电包括网络冰箱、网络空调、网络洗衣机、网络热水器、网络微波炉、网络炊具等;网络家电未来的方向也是充分融合到家庭网络中去。
信息家电应该是一种价格低廉、操作简便、实用性强、带有PC主要功能的家电产品。利用电脑、电信和电子技术与传统家电(包括电冰箱、洗衣机、微波炉、电烤箱、面包机、咖啡机、电视机、录像机、家庭影院、DVD等)相结合的创新产品,是为数字化与网络技术更广泛地深人家庭生活而设计的新型家用电器。更细化的描述可以将信息家电,特指为带有嵌入式处理器的小型家用(个人用)信息设备,它的基本特征是与网络(主要指互联网)相连而有一些具体功能的产品,也可以是将普通家电产品升级后的,具有网络操作功能的家电类产品。
(四)数字可视对讲
采用智能化全数字可视对讲安防系统,访客通过小区/单元/户门口机呼叫室内智慧家庭终端机,可实现视频通话、远程开锁、留言留影功能。
室内智慧家庭终端机、小区/单元门口机都可以呼叫小区管理中心机,可实现视频通话和远程开锁功能。
室内智慧家庭终端机之间可以实现双向可视视频通话。
⑶ 进度状态控制的 前端方面的技术就是给你个进度值 你能展现出来 比如 10 30 40 50 70 90 100%,求解
进度条,到了多少就让条的颜色增加一段
⑷ Web 前端怎样入门
方法:
第一:理清Web前端的知识结构。要想高效学习Web前端知识,首先应该搞清楚Web前端都包括哪些技术结构。Web前端开发虽然技术难度并不高,但是技术细节却比较多,内容也比较杂。Web前端的基础包括三大部分,包括Html、CSS和JavaScript,其中JavaScript是学习的重点,也是难点。另外,vue等框架也是需要熟练掌握的。
第二:紧跟技术发展趋势。目前Web前端的技术发展趋势有三个,其一是前端开发数据化;其二是前端开发高效化;其三是前端开发全栈化。前端开发数据化主要是大数据发展的影响,在大数据的推动下,Web前端逐渐涉及到了大量的数据展示任务。前端开发高效化主要体现在Web前端正在进行独立部署,前端与后端的沟通主要通过资源接口的方式来进行。前端开发全栈化也是一个比较明显的趋势,比如Nodejs的应用。
第三:注重动手实践能力的培养。学习前端开发一定要注重动手实践能力的培养,因为前端开发的细节比较多,所以只有多操作才能逐渐熟悉。
前端开发目前被称为“大前端”,整个前端开发也被赋予了更多的含义,包括Web前端开发、移动端开发、大数据呈现端开发以及部分后端开发任务等等。所以,想要在前端行业中走的更远,一定要注重知识结构的丰富性。
与其他编程语言相比,前端是公认的入行门槛较低的一门语言,但依然有很多人在学习之前会问零基础学习web前端难不难,要多久才能学会。学习的难易和时间当然是取决于学习的方式。
前端入门简单,但是深入学习之后,还是有一定学习难度的。如果你是零基础自学web前端的话,那么所花费的时间与精力是不可估计的。 如果系统学习5个月的时间可以帮助你快速成长为合格的web前端工程师。
至于视频教程,我这里有很多前端的全套教程,如果你需要的话,可以加一下我的学习交流裙裙,找我要就行了!
⑸ 前端状态管理模式 和HTML本地存储的区别在哪里
这两者不是一个概念。
所谓状态,指的是与视图对应的数据,跟展示无关的东西就不算状态。
你可以把状态存一份到本地持久存储里,但不代表往里面存的东西都能算状态
河南新新华网络运营协会
⑹ WEB前端开发出路在哪里.
首先要了解一下做WEB前端技术能够找到的职业方向: 1)资深WEB前端工程师 2)资深WEB架构师 3)自己创业 4) 转岗管理或其他 比如我的理想状态就是能在一到两年的时间之内转型为PM。 当我们了解了前端开发发展的方向就要给自己在向这个目标发展的过程中自己制定一系列学习和成长计划来确定一个发展目标。 要实现这个目标的过程又分为起步阶段与提升阶段。 在起步阶段必须做到如下几点: 1、基本知识的掌握 2、常用工具的掌握 3、沟通技巧的掌握 4、良好的开发习惯 5、在团队中成为一个优秀的合作人员,并让你的团队成员喜欢你。 如果你满足了以上的条件并能做得更好的时候那么你就可以进入提升阶段: 1、高级技术的掌握 2、产品管理及运营思想的学习 3、各种框架的学习 4、客户端应用的学习 5、各种网络协议的学习 6、程序与项目规划设计 7、各种技术在整体项目中的调配学习 如果你能做到以上几点并能做得更好那么你就已经进入其中一种方向的成型阶段了。这个时候你要做的时经受的起各种磨练。
⑺ 学完前端可以做什么工作
入门级做页面。就这么简单。把Designer出的各种设计图转化成html+css+js+image的静态网页,并把它们交给后端开发人员制作成页面模板。这就是入门级的前端工程师所做的事情。
进阶级还是做页面。不过稍微复杂一些,你需要开始注意一些更复杂的问题,首当其冲的就是浏览器兼容性问题。老实说浏览器兼容性问题真的不是那么好搞定的,毕竟每个项目对浏览器版本的要求都不一样,而且现在不光有PC浏览器还有各种移动设备上的浏览器,同时国内厂家的浏览器种类也越来越多,坑也是密密麻麻。除了兼容性,你可能还要关注一下性能问题,包括但不限于网络性能、渲染性能、js逻辑的性能等等,这个展开讲可以写本小册子了,呵呵。
中级带团队。你可能会奇怪,一个中级工程师就能带团队了?可是真的很多公司就是这样,尤其是小公司。当你了解了html、js、css以及各种浏览器的各种特性细节之后,你会被任命带领一个小的开发团队,当然是前端开发团队。可能加你一共也就三四个人,甚至更少。这时候你的工作内容除了自己写一点页面以外,还会帮助组员解决各种各样的细节问题,毕竟,组里,你是最懂技术细节的。这个时候,一部分人开始停步不前,而另一部分人开始关注另一个新的问题:工程化。前端代码都是非常松散的,项目结构性差,一旦开发人员数量多起来,业务复杂起来,如何管理这么多人、这么多代码是个非常大的问题。能否在这个问题上得到突破,决定了你能否迈向下一个级别。
高级架构设计。此时你熟悉前端开发的各种技术细节(当然忘了一部分细节也没事 ^_^),同时对各种前端框架、技术的特性聊熟于胸,你知道如何组织和管理项目让大家能以最快的速度达到项目要求,你甚至了解手下每个人的所长所短。于是当新项目到来,你迅速根据自身过往的经验选取若干种技术和工具,配上你认为最合适的人选组成项目团队,披荆斩棘日夜兼程将产品汪的各种奇葩需求斩于马下。这么做了一两个项目之后,你可能又觉得空虚了,你要寻求新的目标。恰好,NodeJS打开了通往新世界的大门。
非典型前端穿过NodeJS打开的大门,你进入了全新的世界——后端。全新的世界,无限的可能。楼上寸老师说的“上天入地,无所不能”,我猜就是这个状态。爱干嘛干嘛吧,这个时候,你应该不会再来问“后端程序员都在干嘛”这种问题了。其实,要成为一名“非典型前端”并不一定非得经过1~4的步骤。只是现在已经上了年纪的前端大多是这样过来的,毕竟,NodeJS出来的时间也并不算很久。
⑻ 前端发展怎么样
前端的发展前景是很明朗并且是非常具有潜力的,端开发是创建Web页面或app等前端界面呈现给用户的过程,通过HTML,CSS及JavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互。主要发展前景从以下几个方面说明:
近几年各类互联网应用产品层出不群,Web前端开发工程师作为实现前端展示的重要一步也越来越受到了企业的青睐,招聘需求呈现递增趋势,从前程无忧招聘数据可以看出,Web前端相关岗位24小时之内需求量高达4W+。
从就业方向来看,Web前端工程师所能选择的就业岗位也是非常对样的,网页制作、H5开发、小程序开发、小游戏开发、APP开发等都是可以去选择的,所以Web前端就业前景还是非常可观的。
第四阶段前端框架,会学习Vue基础、Vue进阶、小U商城电商项目、TypeScript、React、优社区项目、项目答辩等课程。培养方向是Web前端开发工程师、移动端开发工程师、网站开发工程师、Vue开发工程师、React开发工程师。
第五阶段小程序+数据可视化,将要学习小程序基础、云开发、菜谱云平台、uni-app基础、小U商城、数据可视化、课堂监管大数据系统。培养方向为小程序开发工程师、数据可视化工程师。
⑼ 前端开发的难点到底在什么地方
一般意义上的前端项目:
-从0到1,治理晒哦为健全点的都能捣鼓出来;
-从1到60,后后端或者设计岗位勉强能兼任;
-从60到80,需要比较专业的前端;
-从80到100,这么好的前端可遇不可求。
从0到1就是从无到有的过程,很多人用WordPress,建站之星就差不多就能搞个demo了,可以拿去骗投资人的钱。
从1到60,就是勉强可用,基本上让后端工程师或者UI设计师找一套bootstrap的模板东拼西凑的也能勉强应付到第一版本上线。
从60到80,就是真正要做一款能完备、性能优良、架构合理的中小规模产品,没有专业的设计、前端、后端、产品、运营是走不到这步的,差不多到A轮了。
从80到100,那就是追求各方面的极致,与竞争对手一较高下,各个方面没有顶尖的人才都会影响整体的战斗力,木桶效应。
解释一下:
1. 核心竞争力的主体是工程经验。
其实这个结论可以推广到其他研发岗位,就是每个研发岗位的知识体系都是由基础学科知识+领域工程经验构成,彼此不可替代的就是工程经验部分。一个后端工程师一时间不能替代同等级前端工程师到不是基础或者智商的问题,主要是工程经验不足,你让一个前端一个后端分别实现对方领域中一个有明确输入输出的功能函数,二者通过简单学习新语言新语法,加上开发手册查询,一般都能比较正常的实现业务逻辑,但你让他们hold住对方领域的完整项目就很困难了,技术选型,系统设计,模块拆分,平台特性,宿主环境,性能优化,构建部署,系统测试等等都是领域工程经验问题。
2. 工程经验的等级是能cover项目从0发展到80+。
这个很好解释,因为从0-60的非专业前端也能做到,60+的才是专业前端。
所以不用担心核心竞争力问题,60+的前端现在都很抢手啊。工程经验只有60-的话确实压力比较大。
⑽ HTML5培训 究竟是学的什么
可以看看HTML5混合式开发课程体系了解各个课程阶段学习的内容,大致分三个课程阶段学习:
第一阶段:PCterminal
★ PC端页面重构
1、认知行业、岗位、部分专业术语,就业趋势与行业未来展望;
2、HTML5核心元素及布局应用;
3、CSS3核心属性及布局应用;
4、图形、图像软件的使用(PS,FW,AI);
5、浏览器兼容及解决方案;
6、图片整合、滑动门及宽高自适应等高级应用技术;
7、初步接触JS。
★ PC端交互开发(原生JS)
1、javascript基础语法和变量、控制语句、循环语句、函数、事件处理、数组、常见排序算法;
2、DOM操作和BOM操作;
3、定时器、Cookie本地存储、内置对象、正则表达式、闭包、JS面向对象语法、JSON、堆栈结构;
4、Ajax动态读取数据、异步操作、与DOM、JSON的结合使用;
5、各种主流浏览器兼容性处理;
6、单例、工厂、代理、观察者等设计模式;
7、ECMA6.0新特性介绍。
★ PC端交互开发 (JQuery)
1、初识jQuery、jQuery的优势、jQuery框架核心功能、最容易混淆的几个概念
2、jQuery各种选择器的使用,及选择器的应用优化;
3、Dom节点操作、插入、删除、复制、移动节点等操作;
4、事件处理、事件处理模型、事件处理机制、jQuery事件封装机制、jQuery事件应用;
5、jQuery中的动画、动画时间的概念、基本动画方法、复杂动画方法、停止动画与参数说明、jQuery动画的队列问题;
6、表单开发,设计可用性表单、表单验证、增强型表单;
7、Ajax、XMLHttpRequest 基础、jQuery Ajax、工具函数、缓存;
8、在jQuery中编写插件、插件扩展、插件应用、jQuery.pagination分页、jQuery.qtip信息提示、 jQuery.artDialog弹出层、jQuery.jscrollpane滚动条;
9、理解模块式开发,以及requirejs插件的使用。
★ PC项目实训
1、了解项目需求,项目流程;
2、了解项目管理,模块分配,项目时间预估;
3、了解产品周期,参与团队协作;
4、综合运用HTML+CSS,JS,JQ,JQUERY UI, jquery easyui等技术,完成大型PC端项目开发。
第二阶段:Mobile terminal
★ HTML5+CSS3新添特性
1、HTML5概述,新增的元素和废除的元素、全局属性;
2、HTML5基础:新增文档结构元素(Article、section、nav)智能表单、文件API(FileList对象和File对象、FileReader接口)、拖放API;
3、CSS3基础:新增的后代选择器、伪类选择器、文本阴影、圆角、盒阴影、变形处理(transform)、动画(transitions)、帧定义(key-frames)、旋转(rotate)、 animation;
4、HTML5多媒体audio音频元素、Video视频元素、视频回调事件;
5、本地存储web storage、本地缓存;
6、定位基础知识以及原理,结合google(高德)地图定位;
7、响应式布局概念以及语法(@media)、web网页和mobile网页的区别、样式继承;
8、Canvas标签基础知识、绘制矩形、绘制圆形、使用路径、图像裁剪、保存为文件、创建动画。
★ WebAPP项目开发及实训
1、angular.js、backbone.js;
2、数据交互,ajax与DOM交互应用;
3、HTML5+CSS3在实际项目中的应用;
4、项目管理,模块分配,项目时间预估;
5、产品周期,团队协作;
6、微信场景开发;
7、微信平台互动开发。
第三阶段:混合应用开发及实训
★ 混合应用开发及综合实训
1、混合开发原理;
2、APP与webAPP;
3、混合应用与HTML页面交互;
4、通过客户端传递数据;
5、项目的版本迭代;
6、项目打包与应用,生成APK。