国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

2017年前端框架、類庫、工具大比拼

Alliot / 1608人閱讀

摘要:相比于開發(fā)人員的數(shù)量,目前框架類庫和工具的數(shù)量似乎更多一些。本文將會討論目前最為流行的客戶端框架類庫和工具以及它們之間的基本差異。典型的類庫包括字符串處理日期元素事件動畫網(wǎng)絡(luò)請求等功能。所以不需要明確的區(qū)分類庫框架和工具。

相比于JavaScript開發(fā)人員的數(shù)量,目前JavaScript框架、類庫和工具的數(shù)量似乎更多一些。截至2017年5月,GitHub上的快速搜索顯示,有超過110萬個JavaScript項目。npmjs.org有50萬個可用的軟件包,每月下載量近100億次。

本文將會討論目前最為流行的客戶端JavaScript框架、類庫和工具以及它們之間的基本差異。也許本文無法告訴你哪個是最好的,但是最適合自己項目的,就是最好的。

類庫

類庫是一個有組織的功能集合。典型的類庫包括字符串處理、日期、HTML DOM元素、事件、Cookie、動畫、網(wǎng)絡(luò)請求等功能。你可以自己實現(xiàn)一個函數(shù),以便選擇該函數(shù)被調(diào)用時是否需要返回一個值。

類庫通常提供一種高級別的抽象方法,能夠幫助順利實現(xiàn)項目的細(xì)節(jié)部分。例如,Ajax通常依賴于XMLHttpRequest API,只需要幾行代碼就實現(xiàn)功能,只是瀏覽器之間存在細(xì)微的差異。類庫提供了更簡單的ajax函數(shù),因此開發(fā)者可以專注于更高級別的業(yè)務(wù)邏輯上。

類庫能夠使將開發(fā)時間縮短20%,開發(fā)者不必?fù)?dān)心細(xì)節(jié)實現(xiàn)。

但是也有缺點:

類庫中的錯誤難以定位和修復(fù)
開發(fā)團(tuán)隊不能保證快速發(fā)布補丁
補丁程序可能會更改API,導(dǎo)致大量代碼必須更改

框架

框架是應(yīng)用程序的骨架。它要求以特定的方式來進(jìn)行軟件設(shè)計,在某些節(jié)點上實現(xiàn)自己的邏輯。框架通常提供了事件、存儲和數(shù)據(jù)綁定等功能。

框架通常提供了比類庫更高層次的抽象,幫助快速構(gòu)建項目的前80%。

框架的缺點:

如果你的應(yīng)用程序超出了框架的范圍,最后20%可能會很難
框架更新很困難
核心框架代碼和概念很少更新

工具

工具會幫助開發(fā)工作,但卻不是項目的組成部分。工具包括構(gòu)建系統(tǒng)、編譯器、轉(zhuǎn)譯器、代碼分割器、圖像壓縮器、部署機制等。

工具幫助實現(xiàn)一個更容易的開發(fā)過程。例如,對比于CSS,許多編碼者更喜歡Sass,因為它提供了代碼分離、嵌套、渲染時變量、循環(huán)和函數(shù)。瀏覽器不了解Sass/SCSS語法,因此在測試和部署之前,必須使用適當(dāng)?shù)墓ぞ邔⒋a編譯為CSS。

類庫、框架和工具的區(qū)別

類庫、框架和工具之間的區(qū)別很小。框架可以包括一個類庫,類庫可以實現(xiàn)類似框架的方法,項目中任何一種工具都是必不可少的。所以不需要明確的區(qū)分類庫、框架和工具。

JavaScript框架和類庫

以下是按照流行程度進(jìn)行的排序:

jQuery

隨著WordPress、ASP.NET和一些其它框架的發(fā)布,jQuery仍然是最常用的JavaScript類庫。它通過將CSS選擇器引入到DOM節(jié)點檢索加鏈來應(yīng)用事件處理程序、動畫和Ajax調(diào)用,這徹底改變了客戶端的開發(fā)。

jQuery近年來備受青睞,對于需要少量JavaScript功能的項目來說,仍然是一個好選擇。

優(yōu)點:

分布規(guī)模小
學(xué)習(xí)曲線平緩,豐富的在線幫助
簡潔的語法
容易拓展
缺點:

增加了原生API的速度開銷
瀏覽器兼容性不好,但已得到改善
用法扁平
一些行業(yè)反對使用
React

React是一個用于構(gòu)建用戶界面的JavaScript類庫,也是去年最受關(guān)注的類庫。它專注于Model-View-Controller(MVC)開發(fā)的“View”部分,使用它可以輕松創(chuàng)建保留狀態(tài)的UI組件。它是實現(xiàn)虛擬DOM的首選類庫之一,它的內(nèi)存結(jié)構(gòu)能夠有效地計算差異,頁面更新也更加有效。

統(tǒng)計顯示React的使用度似乎很低,因為它是在應(yīng)用程序中使用而不是在網(wǎng)站。

優(yōu)點:

小巧,高效,快捷靈活
簡單的組件模型
良好的文檔和在線資源
可實現(xiàn)服務(wù)器端渲染
目前受歡迎,經(jīng)歷了快速增長
缺點:

需要學(xué)習(xí)新的概念和語法
構(gòu)建工具很重要
需要其它類庫或框架提供model和Controller部分
與修改DOM的代碼和其它類庫不兼容
了解更多關(guān)于React the ES6 Way

Lodash和Underscore

Lodash和Underscore在本節(jié)一起談?wù)摗K鼈兲峁┝藬?shù)百個功能性的JavaScript實用程序來補充原生字符串、數(shù)字、數(shù)組和其它原始對象方法。雖然兩個類庫之間有一些重疊,但是不太可能在一個項目中同時使用這兩個類庫。

雖然兩個類庫在客戶端使用率很低,但是卻可以在服務(wù)器端的Node.js應(yīng)用程序中使用這兩個類庫。

優(yōu)點:

小而簡單
良好的文檔易于學(xué)習(xí)
與大多數(shù)類庫和框架兼容
不擴展內(nèi)置對象
可以在客戶端或服務(wù)器上使用
缺點:

有些方法只在ES2015及更高版本的JavaScript中可用。

AngularJS 1.x

Angular是框架(或MVC應(yīng)用程序框架)類列表中的第一個。目前最流行的Angular版本是1.x,它使用雙向數(shù)據(jù)綁定擴展HTML,同時解耦了DOM操作和應(yīng)用程序邏輯。

盡管版本2(現(xiàn)在是版本4!)已經(jīng)發(fā)布了,但是Angular 1.x仍在開發(fā)中。

優(yōu)點:

一些大公司正在使用的流行框架
開發(fā)現(xiàn)代Web應(yīng)用程序的解決方案
是標(biāo)準(zhǔn)MEAN棧(MongoDB,Express.JS,AngularJS,NodeJS)的一部分,有許多文章和教程可用
缺點:

學(xué)習(xí)曲線陡峭
大的代碼庫
無法升級到Angular 2.x
Angular 2.x(現(xiàn)在是Angular 4.x)

Angular 2.0于2016年9月發(fā)布。這是一個完整的重寫,它引入了使用TypeScript創(chuàng)建的基于模塊化組件的模型。Angular 4.0于2017年3月發(fā)布。

Angular 2.x與v1版本截然不同,也不與其它版本兼容 - 也許Google應(yīng)該給項目起一個不同的名字!

優(yōu)點:

開發(fā)現(xiàn)代Web應(yīng)用程序的解決方案
是標(biāo)準(zhǔn)MEAN棧的一部分,盡管只有少量的教程可用
對于熟悉靜態(tài)類型語言(如C#和Java)的開發(fā)人員,TypeScript提供了一些優(yōu)勢。
缺點:

學(xué)習(xí)曲線陡峭
大的代碼庫
不能從Angular 1.x升級
與1.x相比,Angular 2.x較難理解
Vue.js

Vue.js是一個用于構(gòu)建用戶界面的輕量級漸進(jìn)框架。它提供了一個類似React的虛擬DOM驅(qū)動視圖層,可以與其它類庫集成,用于構(gòu)建強大的單頁面應(yīng)用。該框架是由之前在AngularJS工作過的Evan You創(chuàng)建的,他提取了AngularJS中自己喜歡的部分。

Vue.js使用HTML模板語法將DOM綁定到實例數(shù)據(jù)。Model是在數(shù)據(jù)改變時更新view的純JavaScript對象。

優(yōu)點:

可以快速使用,并且日益普及
很容易提高高水平開發(fā)人員的滿意度
依賴性小,性能好
缺點:

一個較新的項目 -風(fēng)險可能會更大
部分依賴開發(fā)人員進(jìn)行更新
相比于其它框架,資源較少
Backbone.js

Backbone.js是提供服務(wù)器端框架中常見的MVC結(jié)構(gòu)的最早客戶端選項之一。它唯一的依賴是Underscore.js。

Backbone.js聲稱是一個類庫,因為它可以與其它項目集成,但是我覺得大多數(shù)開發(fā)人員都認(rèn)為它是一個框架。

優(yōu)點:

體積小,重量輕,復(fù)雜度低
不添加HTML邏輯
文件豐富
采用了許多應(yīng)用,包括Trello、WordPress.com、LinkedIn和Groupon
缺點:

與AngularJS等其它框架相比,抽象度較低
需要額外的組件來實現(xiàn)數(shù)據(jù)綁定等功能
最新的框架已經(jīng)不采用MVC架構(gòu)了
Ember.js

Ember.js是基于Model-View-ViewModel(MVVM)模式的框架之一。它在單個包中實現(xiàn)模板化、數(shù)據(jù)綁定和類庫。

優(yōu)點:

為客戶端應(yīng)用程序提供了單一解決方案
開發(fā)人員可以立刻提高開發(fā)效率 -它使用jQuery
良好的向后兼容性和升級選項
采用了現(xiàn)代Web開發(fā)標(biāo)準(zhǔn)
缺點:

大型分配式
與其它正在向較小組件結(jié)構(gòu)發(fā)展的框架相比,它十分的龐大
學(xué)習(xí)曲線陡峭
Knockout.js

Knockout.js是最早的MVVM框架之一,它確保了UI與底層數(shù)據(jù)保持同步,具有模板和依賴關(guān)系跟蹤。

優(yōu)點:

小而輕便,無依賴
優(yōu)秀的瀏覽器支持,可以支持到IE6
良好的文檔資源
缺點:

較大的項目可能變得很復(fù)雜
發(fā)展已經(jīng)放緩
使用情況似乎在減弱
更多的框架和類庫

以下項目雖然不是特別流行,但值得考慮:

Polymer -可以跨瀏覽器支持HTML5網(wǎng)頁組件的類庫
Meteor -一個用于Web應(yīng)用程序的全棧平臺
Aurelia -一種相對較新的,輕量級的跨平臺框架
Svelte -一個將框架源代碼轉(zhuǎn)換為干凈JavaScript的新項目
Conditioner.js -一個基于狀態(tài)自動加載和卸載模塊的類庫

工具:執(zhí)行通用任務(wù)

構(gòu)建工具自動執(zhí)行各種Web開發(fā)任務(wù),例如預(yù)處理、編譯、優(yōu)化圖像、縮小代碼、代碼分析和運行測試等。任務(wù)可以在一個可執(zhí)行包中統(tǒng)一管理。

目前最受歡迎的工具如下:

Gulp.js

雖然Gulp不是第一個任務(wù)執(zhí)行工具,它卻很快成為了最受歡迎的。Gulp使用易于閱讀的JavaScript代碼,將源文件加載到流中,并在將數(shù)據(jù)輸出到構(gòu)建文件夾之前,通過各種插件管理數(shù)據(jù)。在任何其它選項之前檢查Gulp.js是簡單、快速和有趣的。

NPM

npm是Node.js包管理器,但其腳本工具可用于運行通用任務(wù)。對于具有少量依賴關(guān)系的簡單項目來說,這是一個很好的選擇。然而,更復(fù)雜的任務(wù)可能會變得不太適用。

Grunt

Grunt是第一批被大規(guī)模采用的JavaScript任務(wù)執(zhí)行工具之一,但其速度和復(fù)雜的JSON配置卻導(dǎo)致了Gulp的興起。現(xiàn)在這些問題已經(jīng)得到了解決,Grunt仍然是一個受歡迎的選擇。

工具:模塊綁定

多個JavaScript文件的管理已經(jīng)成為了一件繁瑣的事情。默認(rèn)情況下,瀏覽器文件不會被編譯,因此其依賴關(guān)系必須以適當(dāng)?shù)捻樞蜻M(jìn)行加載或連接。雖然有像ES6模塊和這樣的選項,但是瀏覽器支持是有限的,因此模塊綁定變得十分重要。

WebPack

Webpack支持所有流行的模塊選項,并已成為React開發(fā)的代名詞。雖然Webpack聲稱是一個模塊捆綁程序,但是已經(jīng)可以用作通用任務(wù)運行程序了。

Browserify

Browserify支持Node.js正在使用的CommonJS模塊,它將所有模塊編譯成單個瀏覽器兼容的文件。

RequireJS

RequireJS是一種瀏覽器中的模塊加載器,它也可以在Node.js中使用。

工具:代碼分析

代碼分析工具用于分析代碼中潛在錯誤或偏離語法的標(biāo)準(zhǔn)。一個未閉合括號或未聲明的變量一定會被檢測出。

ESLint

ESLint是一種可插拔的代碼分析工具。每個規(guī)則都是一個插件,因此可以根據(jù)個人喜好進(jìn)行配置。

JSHint

JSHint是一個靈活的JavaScript代碼分析工具,它很好的平衡了真正的錯誤和老舊的語法。

JSLint

JSLint是最早的代碼分析工具之一,它實現(xiàn)了一套嚴(yán)格的默認(rèn)規(guī)則。

工具:單元測試

測試驅(qū)動開發(fā)的任務(wù)要求需要編寫代碼來測試自己的代碼。目前有許多選擇,包括Ava Tape 和Jest ,但目前最流行的三個工具是:

Mocha

Mocha是一個JavaScript測試框架,可以在Node.js或瀏覽器中運行測試。它支持異步測試,并且經(jīng)常與Chai配合使用,這樣可以使測試代碼以可讀取的方式表達(dá)。

Jasmine

Jasmine是一個行為驅(qū)動的測試工具,可以在瀏覽器中自動測試UI和交互。

QUnit

QUnit是一個單元測試框架,可以在輸入特定參數(shù)時,檢查函數(shù)結(jié)果。它還上報測試結(jié)果,確保沒有錯過特定的代碼分支。

總結(jié)與建議

目前最為流程的框架是React,同時其它的框架也在向著流行的趨勢發(fā)展。

如果需要一個安全的、通用的Web應(yīng)用程序,可以考慮使用Vue.js。

整體框架已經(jīng)不再受歡迎了,如果你需要對一個較大型項目進(jìn)行嚴(yán)格的結(jié)構(gòu)管理,AngularJS是一個不錯的選擇。目前大多數(shù)人堅持使用Angular 1.0版本,但是長遠(yuǎn)來講,如果你愿意學(xué)習(xí)TypeScript,Angular 4.x版本是個更好的選擇。

jQuery雖然現(xiàn)在并不十分流行,在技術(shù)新聞中也很少會被提到,但不可否認(rèn)它是積極開發(fā)的,同時也是網(wǎng)站和應(yīng)用程序的有力工具。jQuery具有平緩的學(xué)習(xí)曲線,全球許多開發(fā)人員能夠很好地理解。

如果你想要冒險,可以試試Svelte這是一個有趣的客戶端/服務(wù)器框架,它可以在構(gòu)建時預(yù)先呈現(xiàn)JavaScript,并且可以改變我們開發(fā)的方式。

工具的選擇因項目而異。雖然目前使用Gulp的開發(fā)者占大多數(shù),但WebPack卻越來越受歡迎。同時你也不能錯過ESLint和Mocha等測試工具。

過去的十年,JavaScript經(jīng)歷了革命性的發(fā)展。過去只有少量基本的類庫可以選擇,但是現(xiàn)在可供選擇的類庫已經(jīng)鋪天蓋地。也許無法確定哪個類庫、框架和工具是最好的,但是最適合自己項目的,就是最好的。

如果本文錯過了你最喜歡的JavaScript類庫,框架或工具?歡迎在文末評論。

JavaScript 開發(fā)工具介紹:

SpreadJS 純前端表格控件是基于HTML5的JavaScript電子表格和網(wǎng)格功能控件,提供了完備的公式引擎、排序、過濾、輸入控件、數(shù)據(jù)可視化、Excel導(dǎo)入/導(dǎo)出等功能,適用于.NET、Java和移動端等各平臺在線編輯類Excel功能的表格程序開發(fā)。

原文鏈接:https://www.sitepoint.com/top...

轉(zhuǎn)載請注明出自:葡萄城控件

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/83532.html

相關(guān)文章

  • 2017-06-20 前日報

    摘要:前端日報精選專題之跟著學(xué)節(jié)流冴羽的博客全家桶仿微信項目,支持多人在線聊天和機器人聊天騰訊前端團(tuán)隊社區(qū)編碼的奧秘模塊實現(xiàn)入門淺析知乎專欄前端每周清單發(fā)布新版本提升應(yīng)用性能的方法中文寇可往吾亦可往用實現(xiàn)對決支付寶的微信企業(yè)付款到零 2017-06-20 前端日報 精選 JavaScript專題之跟著 underscore 學(xué)節(jié)流 - 冴羽的JavaScript博客 - SegmentFau...

    Galence 評論0 收藏0
  • Java Bean Copy 性能大比

    摘要:性能大比拼簡介拷貝在工作中被大量使用,可以大幅度的提高工作量。本文對常用的工具進(jìn)行了壓力測試,方便大家選擇更加適合自己的工具。本篇文章是增強介紹續(xù)篇,該專欄會持續(xù)更新,感興趣的朋友請訂閱我們。的表現(xiàn)反而比更好,可能是模型不一樣導(dǎo)致的。 Java Bean Copy 性能大比拼 簡介 Bean 拷貝在工作中被大量使用,可以大幅度的提高工作量。本文對常用的 Bean copy 工具進(jìn)行了...

    lentoo 評論0 收藏0
  • 割裂的前工程師--- 2017年前生態(tài)窺探

    摘要:主要兼容的微信的瀏覽器,因為要在朋友圈來營銷,總體來說,會偏設(shè)計以及動畫些。 有一天,我們組內(nèi)的一個小伙伴突然問我,你知道有一個叫重構(gòu)工程師的崗位?這是干什么的?重構(gòu)工程師 這個問題引發(fā)了我對前端領(lǐng)域發(fā)展的思考,所以我來梳理下前端領(lǐng)域的發(fā)展過程,順便小小的預(yù)測下2017年的趨勢。不想看回憶的,可以直接跳到后面看展望。 神說,要有光,就有了光 自1991年蒂姆·伯納斯-李公開提及HTML...

    duan199226 評論0 收藏0
  • 割裂的前工程師--- 2017年前生態(tài)窺探

    摘要:主要兼容的微信的瀏覽器,因為要在朋友圈來營銷,總體來說,會偏設(shè)計以及動畫些。 有一天,我們組內(nèi)的一個小伙伴突然問我,你知道有一個叫重構(gòu)工程師的崗位?這是干什么的?重構(gòu)工程師 這個問題引發(fā)了我對前端領(lǐng)域發(fā)展的思考,所以我來梳理下前端領(lǐng)域的發(fā)展過程,順便小小的預(yù)測下2017年的趨勢。不想看回憶的,可以直接跳到后面看展望。 神說,要有光,就有了光 自1991年蒂姆·伯納斯-李公開提及HTML...

    miguel.jiang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<