跟着互联网财产的爆炸式增进,与之伴生的网站企图Web前端技能也在历经浸礼和演变。稀奇是近几年跟着挪动终端的发展,愈来愈多的人入手下手投身或转行至新范畴,这更加现今的IT财产注入了新的活气。虽然Web前端技能出生至今光阴其实不长,但跟着Web技能的逐步深切,今后将会在以下几方面发力。
1.Web挪动终端开辟。
2.JavaScript的兄弟们。
3.百花齐放的类库和框架。
4.工程化的Web前端开辟范例。
Web挪动终端开辟
PhoneGap:一个开源的开辟框架,利用HTML、CSS和JavaScript来构建跨平台的挪动使用法式。它使开辟者可以或许使用iPhone、Android、Palm、Symbian、BlackBerry、WindowsPhone和Bada等智能手机的核心功用,包孕天文定位、加速器、接洽人、声响和振动等。除在当地编译使用之外,还可以或许利用PhoneGap供给的云端Build工具停滞使用编译。也就是说,只需要将用HTML5写好的使用上传到PhoneGap的云端办事器,PhoneGapBuild便可将其编译成符合差别平台的使用。
前端常识图谱
SenchaTouch:说到这里,就不能不提一些面向挪动端的WebUI库,究竟PhoneGap是一个工具,要想基于Web技能构建完整的App,必需遴选一些合用的挪动UI库。而最值得一提的是SenchaTouch,它可以或许让WebApp看起来像NativeApp。鲜艳的用户界面组件和丰盛的数据经管,悉数基于最新的HTML5和CSS3的Web尺度,片面兼容Android和iOS装备。PhoneGap明示着一种开辟趋向,即App也可以或许利用Web前端技能来完成。而作为开辟者最经常使用的UI工具箱,SenchaTouch又进一步加速了这类趋向,今朝在淘宝已有大批的项目采用这类思绪来搭建,即在内置使用的外壳加上自界说的基于挪动Web的UI库。信任在将来这类情必将会愈来愈盛行。
Sencha Touch:说到这里,就不能不提一些面向挪动端的WebUI库,究竟PhoneGap是一个工具,要想基于Web技能构建完整的App,必需遴选一些适 用的挪动UI库。而最值得一提的是Sencha Touch,它可以或许让Web App看起来像Native App。鲜艳的用户界面组件和丰盛的数据经管,悉数基于最新的HTML5和CSS3的Web尺度,片面兼容Android和iOS装备。PhoneGap 明示着一种开辟趋向,即App也可以或许利用Web前端技能来完成。而作为开辟者最经常使用的UI工具箱,Sencha Touch又进一步加速了这类趋向,今朝在淘宝已有大批的项目采用这类思绪来搭建,即在内置使用的外壳加上自界说的基于挪动Web的UI库。信任在将来这 种情必将会愈来愈盛行。
Media Queries:在CSS2时期,若是你曾经为网站企图过打印版CSS,那末就会理解理睬CSS3 Media Queries的感化。不外,CSS3的Media Queries比CSS2的Media Queries可以或许获得这些数据:浏览器窗口的宽和高、装备的宽和高、装备的手持偏向(横向仍是竖向)和分辨率等。也就是说,Media Queries供给了一种基于差别的平台写CSS的技能。这项技能在2011年初被推行开来,至今已稀奇很是火热,稀奇是在Web页面仍占互联网流量大多半的 明天,这类兼容技能能很快让网站兼容挪动装备,包管产品完成最快的跨平台的兼容性和多平台的可用性。
Zepto.js:一个专为 Mobile WebKit浏览器(如Safari和Chrome)而开辟的JavaScript框架。它标榜自己繁复的开辟理念可以或许扶助开辟职员庞杂、疾速地完成开辟 托付义务。更重要的是这个JavaScript框架是超轻量级的,只需5KB。Zepto.js的语法鉴戒且兼容jQuery。今朝已有很多网站入手下手基于 Zepto.js做使用,由于在扔掉了IE浏览器的兼容性成绩后,Web开辟会变得愈来愈纯洁,体积更轻盈,编码也加倍愉悦。不成否认,跟着挪动终端开辟 愈来愈盛行,Zepto.js在将来将会有加倍辽阔的使用场景和空间。
Bootstrap: Twitter推出的一个开源的用于前端开辟的工具包。它由Mark Otto和Jacob Thornton合作开辟,是一个CSS/HTML框架。Bootstrap供给了文雅的HTML和CSS范例,由静态CSS说话LESS写成,与CSS 框架Blueprint存在良多近似之处。Bootstrap一经推出便颇受接待,不断是GitHub上的热点开源项目,NASA和MSNBC的 Breaking News都利用了该项目。2012年第二季度,Bootstrap宣布了2.0版,Bootstrap 2.0的一个庞大改良是增加了相应企图特征,在1.0中,这是让良多开辟职员抱怨的中央。而且为了供给更好的针对挪动装备的相应式企图方 案,Bootstrap 2.0采用了更加灵巧的12栏网格构造。另外,它还更新了一些进度栏及可定制的图片缩略图,并增长了一些新款式。值得存眷的是,Bootstrap是一个 稀奇很是轻量级的框架,2.0在紧缩后只需10KB。Bootstrap为我们的网站疾速搭建供给了不错的工具和思绪,这个工具集将具有更旺盛的生命力。
JavaScript的兄弟们
CoffeeScript是一个鉴戒Ruby编写的新编程说话,建立者JeremyAshkenas戏称它是JavaScript的低调的小兄弟,由于CoffeeScript会将Ruby编译成JavaScript,而且大部份构造都近似。但差别的是,CoffeeScript具有更严厉的语法。它的最大功勋就是将JavaScript硬绑的C/Java语法扔掉了,改成采用近似Ruby/Python的语法。Ruby/Python原本就是深受Lisp影响的,与JavaScript算是同门师兄,它们的语法颠末了实际磨练,稀奇很是符合函数式编程。这类文雅的说话独具魅力,即刻面世的2013版的淘宝首页即采用了CoffeeScript完成。
TypeScript是微软开辟的JavaScript的超集,TypeScript兼容JavaScript,可以或许载入JavaScript代码然后运转。与JavaScript比拟,TypeScript提高的中央在于:插手解释,让编译器懂得所支撑的工具和函数,编译器会移除解释,不会增长开支;增长一个完整的类构造,使之更像是传统的面向工具说话。由于JavaScript只是一个脚本说话,其实不是用于开辟大型Web使用,以是没有供给类和模块的概念。而TypeScript扩展了JavaScript完成了这些特征,能更好地支撑大规模JavaScript使用开辟,接收了不开辟者。但要垂青,虽然TypeScript有微软做后援看起来很有包管,但今朝供给的只是晚期的预览版本,TypeScript其实不像它的网站看起来那样优美,终极版本可以或许会在一年后ECMAScript6宣布会肯定,目前的版本只是个开辟预览版。因此,TypeScript今后发展如何,还需要进一步观测。
另外,在办事器端,Node.js愈来愈盛行。往常Node.js不但作为处置惩罚高并发请求的中间层处置惩罚企图,还因其灵巧的语法和丰盛的底层API,愈来愈多的人入手下手用它来写工具,稀奇是之前基于Ant大概Java的一些工具往常都有了Node.js的版本。
云云看来,Node.js在饬令行工具范畴有着加倍辽阔的使用场景,乃至可以或许取代Perl大概Ruby这些传统的静态说话。在淘宝Node.js已有稀奇很是多的使用场景,比方在数据部分,Node.js被用作处置惩罚高并发场景下的容池,特地接收高并发的请求,乃至可以或许对峙和客户端的长链接,而这在之前则需要消耗很奋发的本钱,比方Comet技能等。另外,淘宝的开源前端类库KISSY也可以或许间接运转于Node.js环境,如许就可以或许在饬令行运转KISSY代码,良多前端代码就偶然机采用自动化测试等,提高出产效力。再者,淘宝外部的开辟工具链也已大部份采用Node.js来构建了。
百花齐放的类库和框架
SeaJS是由付出宝前端初级技能专家王保平(玉伯)开辟的一个恪守CMD范例的模块加载框架,可用来轻松愉悦地加载随便率性JavaScript模块和CSS模块。SeaJS稀奇很是玲珑,玲珑在于其紧缩后体积只需4KB,而且接口和设施也稀奇很是少。SeaJS有两个核心:模块的界说和模块的加载。SeaJS可以或许加载随便率性JavaScript模块和CSS模块,能包管你在利用一个模块时,已将所依靠的其他模块载入脚本运转环境中。SeaJS可以或许让你享用写代码的兴趣,不消去管那些加载的成绩。究竟目前网页的可回护性和机能成绩一样严格,体目前:文件太多,不利于回护,前端后端都一样;HTTP请求过量,虽然这个可以或许经由过程归并处置惩罚,但若是没有后端间接归并,那末野生本钱会稀奇很是大。用SeaJS就能稀奇很是好地处置惩罚这些成绩。SeaJS恪守CMD范例,因此可以或许很便利地誊写模块。今朝曾经有愈来愈多的人采用CMD范例来开辟项目了。
比来微软曾经正式宣布了Windows8操纵系统,Windows操纵系统的气概曾经完整酿成了磁贴状的MetroUI。关于微软来说,这是一个宏大的转变,而且悉数微软的平台包孕桌面、平板、挪动端及其网站都利用这个UI气概。
MetroUICSS是一个稀奇很是完整的建立Metro气概的网站框架。它自成系统,但也可以或许与其他框架一起利用。利用LESS建立,而且具有网格系统、排版款式、表格、按钮和图片。同时也具有内建的JavaScript组件,扶助你天生片状、菜单、边栏、进度条和提示等,是一个稀奇很是好用的框架。跟着Windows8的进一步盛行,这类气概的CSS类库必定会成为一种趋向。
Hype是一个玲珑的工具,是MacAppStore新上架的一个HTML5创作工具,其优点是可以或许在网页上做出好看的动画效果,不必Flash插件。开辟该使用的公司Tumult由两个前苹果工程师建立,并获得了YCombinator的投资。由于公司的结合开创人之一JonathanDeutsch曾担任Mail.app后端的技能主管,因此他在担当PaulHontz的TheStartupFoundry访谈时,谈到公司开创是为理处置惩罚HTML5创作工具缺少的成绩。可以或许说,Hype是第一个可用的创作HTML5产品的可视化工具,具有里程碑式的意义。跟着硬件机能晋升,HTML5的使用法式加倍偏向于被工具天生,而不像传统意义上由工程师“切”出来。因此工具化是一个偏向,
品牌网站改版,不论HTML5是否是真的能在挪动终端扎下脚根,这类偏向是值得对峙的。究竟,HTML5的使用开辟目前还处于原始社会。
iScroll.js是利用原生JavaScript编写的一个摹拟转动效果的小类库,不依靠于任何JavaScript框架。旨在处置惩罚挪动WebKit系浏览器的区域转动成绩,兼容MobileSafari、Android默许浏览器、Safari、Chrome、Firefox5+、Opera11+、IE9+及其他WebKit核心浏览器。最新版本为iScroll4。这个小库一问世就备受存眷,由于它不但可以或许在PC端完美摹拟转动效果,在挪动终端里对触屏工作的支撑也可谓完美。
iScroll4是2011年末问世的,2012年在挪动终端产品开辟中大放异彩,在淘宝的诸多产品中都用到了这个JavaScript库。iScroll是小而精的典范作品,名字也带着苹果范儿。但美中不敷的是,只能利用ID挪用。不外这个小特征不是甚么大成绩,可以或许经由过程二次封装来处置惩罚。等候iScroll4在挪动终端里有更多出色的示意。
前端MVC在2011年是对照火的话题,跟着愈来愈多的人入手下手测验考试利用诸如JavaScriptMVC和Backbone.js这些MVC类库,更多的产品也看起来更像“软件”而非“网页”。但由于前端环境的庞杂性,我们也逐渐创造“这类”MVC其实不是完美,只能使用于“基于数据驱动”的场景,而对“基于工作驱动”的场景却没有太好的处置惩罚设施。今朝,淘宝有良多产品在测验考试利用“无穷自动机”来补充MVC在这方面的不敷。因此,新场景下的MVC还需要更深切的提炼。
工程化的Web前端开辟范例
2012年,关于前端开辟编码范例的接洽愈来愈多。外洋和海内的顶尖开辟者几近同时对编码范例产生了很大爱好,前Yahoo!首页首席前端工程师N.C.Zakas在他那本《高可回护的JavaScript》书中也提到范例在团队合作过程中的重要性。而以下这两个方面,是值得我们探究和深思的。
AMD与CMD范例之争,跟着CommonJS的进一步遍及,CommonJS范例在尺度的模块开辟范畴施展着愈来愈重要的感化,而CommonJS在浏览器端的难以完成却为这份范例增加了一丝变数。本质上讲,CommonJS是一种用于同步加载JavaScript代码的API范例,稀奇很是庞杂文雅。为了在浏览器端完成这类机制,则不能不插手了一层异步回调,这就是AMD(Modules/Asynchronous-Definition)。RequireJS完成了这个范例,而Dojo也将即刻完整支撑(Dojo1.6)。范例自己稀奇很是庞杂,乃至只包括了一个API。玉伯在开辟SeaJS的过程中,更多地对峙了CommonJSModules范例的气概,即CMD(CommonModuleDefinition)。较之AMD,CMD没有采用单一的API来合用于多个功用,而是遵照差别功用界说差别的API。我认为,二者在完整性上是根基分歧的,但在社区理念和编程气概上有所差别,开辟者可以或许遵照自己的偏好来遴选利用AMD仍是CMD编程气概。
Java说话编码范例关于前端开辟编程范例有稀奇很是大的影响。在Zakas的《高可回护性JavaScript》一书中提到了五种JavaScript编程范例,都和Java说话编码范例有着近似的渊源:Crockford编程范例、jQuery核心气概指南、SproutCore编程气概指南、Google的JavaScript气概指南和Dojo编程气概指南。不论是哪种范例,都夸大了编码气概分歧的重要性,这也可看出,前端团队开辟愈来愈垂青范例,JavaScript的灵巧性需要某种程度的限制。
总之,经由过程下面的阐述,我们可以或许看到前端技能的不息提高和新陈代谢,也可以或许领会到项目过程的工程化,处置惩罚企图的轻量化,库和框架的多元化,常识构造的系统化,这类趋向在今后会变得愈来愈显着,也明示着前端技能的发展偏向。
说到前端技能常识构造的系统化扶植,这是我这些年来不断都在做的工作,在2011年也画了一张图来说明我的概念——前端技能系统的扶植是一项持久的义务。究竟前端新技能新常识层见叠出,关于典范的常识构造的收拾整顿也很有挑战性,但这项工作毕竟需要有人去做,为新入道的人指出一个大致的偏向。关于前端工程师的发展成绩,我也写过一篇长文“前端开辟十日谈”,扶助新人们解惑。