因爲JS開發對我來講是全新的技術棧,開發過程當中遇到了各類各樣的框架、工具,同時也感嘆一下相對於.Net的框架(工具框架以及測試框架等)JS框架真的是太豐富了、社區的力量果真強大~~~也是由此但願本文能歸納經常使用的框架以及一些基本理念,不斷完善中,但願各位有經驗的朋友能多多提意見。javascript
Ember.js是一套javascript的框架,Ember是一個雄心勃勃的Web應用程序,消除了樣板,並提供了一個標準的應用程序架構的JavaScript框架。css
更多請參考《Ember.js系列文章》html
許多人使用React做爲MVC架構的V層。 儘管React並無假設過你的其他技術棧, 但它仍能夠做爲一個小特徵輕易地在已有項目中使用. ReactJs三大特性:UI層、VirtualDom、數據流前端
中文站:http://reactjs.cn/java
一篇不錯的入門介紹:http://www.cocoachina.com/webapp/20150721/12692.htmlnode
Backbone.js爲複雜WEB應用程序提供模型(models)、集合(collections)、視圖(views)的結構。其中模型用於綁定鍵值數據和自定義事件;集合附有可枚舉函數的豐富API; 視圖能夠聲明事件處理函數,並經過RESRful JSON接口鏈接到應用程序。react
官方地址:https://github.com/jashkenas/backbone/jquery
中文介紹:http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.htmlwebpack
Knockout是一個輕量級的UI類庫,經過應用MVVM模式使JavaScript前端UI簡單化。git
Knockout有以下4大重要概念:
簡稱:KO
@湯姆大叔 開發指南:http://www.cnblogs.com/TomXu/archive/2011/11/21/2257154.html
SproutCore的目標是在瀏覽器中提供極佳的桌面效果應用而無需任何瀏覽器插件。全部這些都不是用什麼新技術實現的,而是採用這幾年廣爲應用同時又在不斷髮展的技術。SproutCore主要採用了JavaScript、HTML以及CSS,這樣對後端系統就沒什麼限制了,顯然是個優點。sproutcoreJS2.0是Ember.js前身。
Node全稱是Node.js是一套javascript運行時環境,其實是對Google V8引擎的一個封裝。
Node.js官網:https://nodejs.org/
Node.js中文社區:https://cnodejs.org/
51CTO-Node.js專題:http://developer.51cto.com/art/201109/290443.htm
Ember-cli是Ember.js的一套命令行工具,方便快捷的增長模板、路由、模型、視圖等MVC結構,還提供有/無視圖的測試框架,提升開發效率,是開發Ember.js必不可少的工具。
官方網站:http://www.ember-cli.com/
ECMAScript是一種由Ecma國際(前身爲歐洲計算機制造商協會,英文名稱是European Computer Manufacturers Assocication)經過ECMA-262標準化的腳本程序設計語言。這種語言在萬維網上應用普遍,它每每被稱爲JavaScript或JScript,但實際上後二者是ECMA-262標準的實現和擴展。
博友介紹ES6的文章:http://www.cnblogs.com/Wayou/p/es6_new_features.html
阮一峯的ES6書籍:http://www.ruanyifeng.com/blog/2014/04/ecmascript_6_primer.html
Travis CI是在軟件開發領域中的一個在線的,分佈式的[1]持續集成服務,用來構建及測試在GitHub[2]託管的代碼。這個軟件的代碼同時也是開源的,能夠在GitHub上下載到[3],儘管開發者當前並不推薦在閉源項目中單獨使用它。[4]
它提供了多種編程語言的支持,包括Ruby,JavaScript,Java,Scala,PHP,Haskell和Erlang在內的多種語言。[5]許多知名的開源項目使用它來在每次提交的時候進行構建測試,好比Ruby on Rails,Ruby和Node.js。[5][6]
注:目前在Github上Travis CI比較流行,其不只僅是一個持續集成的框架,並且還能利用github上的更改「鉤子」進行代碼變化時自動運行測試,並且還能夠將測試結果圖標用Markdown的語法綁定到你本身的ReadMe.md中簡單方便實用。
Travis CI天生支持Node.js的語法無需指定語言,因此能夠同時支持兩種組合語言測試,例如Node.js+Python、Node.js+Scala等,但前提是Node.js+『』的組合。
RESTful架構是一種流行的互聯網軟件架構,它結構清晰,符合標準,易於理解,擴展方便。
REST是Representational State Transfer的縮寫,翻譯爲「表現層狀態轉化」。表現層其實就是資源,所以能夠理解爲「資源狀態轉化」。
網絡應用上的任何實體均可以看做是一種資源,經過一個URI(統一資源定位符)指向它。
很是有價值的參考資料:RESTful JSON API,理解RESTful架構
NPM的全稱是Node Package Manager[1] ,是一個NodeJS包管理和分發工具,已經成爲了非官方的發佈Node模塊(包)的標準。
若是你熟悉ruby的gem,Python的pypi、setuptools,PHP的pear,那麼你就知道NPM的做用是什麼了。
Nodejs自身提供了基本的模塊,可是開發實際應用過程當中僅僅依靠這些基本模塊則還須要較多的工做。幸運的是,Nodejs庫和框架爲咱們提供了幫助,讓咱們減小工做量。可是成百上千的庫或者框架管理起來又很麻煩,有了NPM,能夠很快的找到特定服務要使用的包,進行下載、安裝以及管理已經安裝的包。
Bower 是一個針對Web開發的包管理器。該工具主要用來幫助用戶輕鬆安裝CSS、JavaScript、圖像等相關包,並管理這些包之間的依賴。
功能有些相似於Component。不一樣之處是,Component是圍繞GitHub系統構建的,而Bower既能夠管理基於本地資源的包,也能夠管理基於git系統的包。 在Bower中,能夠經過 component.json文件來定義包的名稱、版本、代碼中的主要元素、版本之間的依賴關係等。
官方網站:
付費IDE。
官方網站:http://www.sublimetext.com
付費IDE,30天免費,JetBrains出品,提供大量插件。
官方網站:http://www.jetbrains.com/webstorm/
DCloud公司是爲HTML5而生的一家創業公司。
HTML5要想普及,須要解決不少問題。業內俗稱HTML5有「性工能」障礙,由於HTML5的性能、工具、能力都比不過原生。
DCloud爲此推出了3個產品:HBuilder開發工具、HTML5plus加強瀏覽器引擎、mui前端框架。
HBuilder是全部產品的核心和入口。
咱們但願把HBuilder打形成最好用的、免費的HTML5開發工具,讓程序員能夠更爽的開發HTML5應用。
官方網站:http://dcloud.io/
Atom IDE是由Github出品,目前免費而且部分開源,其強大的插件支持以及良好的界面樣式深受一些極客碼農的青睞,目前的版本是v1.0.1。
QUnit是一個強大的JavaScript單元測試框架,該框架是由jQuery團隊的成員所開發,而且是jQuery的官方測試套件。Qunit是Jquery的單元測試框架,而且被普遍使用在各個項目中。
官方網站:http://qunitjs.com/
JSHint 是一個 JavaScript 的代碼質量檢查工具,主要用來檢查代碼質量以及找出一些潛在的代碼缺陷。
官方網站:http://jshint.com/
Selenium[1] 也是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操做同樣。支持的瀏覽器包括IE(七、八、9)、Mozilla Firefox、Mozilla Suite等。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應用程序看是否可以很好得工做在不一樣瀏覽器和操做系統之上。測試系統功能——建立迴歸測試檢驗軟件功能和用戶需求。支持自動錄製動做和自動生成 .Net、Java、Perl等不一樣語言的測試腳本。Selenium 是ThoughtWorks專門爲Web應用程序編寫的一個驗收測試工具。
官方網站:http://www.seleniumhq.org/
提及Web自動化測試,首先想到的就是Selenium。其實WebDriver就是基於Selenium的一個自動化測試類庫,但它再也不是運行在瀏覽器內的JS程序,而是本身能夠控制瀏覽器。旨在改進Selenium1.0中出現的諸多問題,而且提供了很是易用、可讀性很強的API。
Underscore 是一個 JavaScript 工具庫,它提供了一整套函數式編程的實用功能,可是沒有擴展任何 JavaScript 內置對象。 他解決了這個問題:「若是我面對一個空白的 HTML 頁面,並但願當即開始工做,我須要什麼?」 他彌補了 jQuery 沒有實現的功能,同時又是Backbone 必不可少的部分。
Underscore 提供了100多個函數,包括經常使用的:map、filter、invoke — 固然還有更多專業的輔助函數,如:函數綁定、JavaScript 模板功能、建立快速索引、強類型相等測試等等。
中文地址:http://www.bootcss.com/p/underscore/
lodash 是一個 JavaScript 實用工具庫,提供一致性,模塊化,性能和配件等功能。
與UnderscoreJs合併消息? http://www.infoq.com/cn/news/2015/06/underscore-lodash-merging?utm_campaign=infoq_content&
精彩文章:http://ju.outofmemory.cn/entry/106512
官方地址:https://lodash.com/
模塊打包器,主要目的是捆綁瀏覽器中應用的Javascript文件,支持同步(CommonJS/NodeJs)和異步加載(AMD),同時包含轉換、打捆、打包等功能,代替RequireJS。
主要優點:
依賴資源/JS庫:
不錯的入門指迷:http://segmentfault.com/a/1190000002551952
入門介紹:https://github.com/petehunt/webpack-howto(譯文http://segmentfault.com/a/1190000002552008)
JS文件模塊加載器,能夠在前端或者Node環境下。
Browserify自己不是模塊管理器,只是讓服務器端的CommonJS格式的模塊能夠運行在瀏覽器端。這意味着經過它,咱們可使用Node.js的npm模塊管理器。因此,實際上,它等於間接爲瀏覽器提供了npm的功能。
一樣功能的Browserify和Webpack的對比:http://www.oschina.net/translate/browserify-vs-webpack
通俗易懂的介紹:http://www.ruanyifeng.com/blog/2014/09/package-management.html
Component是Express框架的做者TJ Holowaychuk開發的模塊管理器。它的基本思想,是將網頁所須要的各類資源(腳本、樣式表、圖片、字體等)編譯後,放到同一個目錄中(默認是build目錄)。項目中止,再也不維護。
Duo是在Component的基礎上開發的,語法和配置文件基本通用,而且借鑑了Browserify和Go語言的一些特色,至關地強大和好用。
前段自動化構建、打包、代碼壓縮小工具
簡介:http://www.cnblogs.com/yexiaochai/p/3603389.html
Gulp是一個構建系統,Grunt升級版本,它能經過自動執行常見任務,好比編譯預處理CSS,壓縮JavaScript和刷新瀏覽器,來改進網站開發的過程。
簡介:http://www.w3ctech.com/topic/134
中文網站:http://www.gulpjs.com.cn/
快速的、可信賴的管理通道,如同Grunt和Gulp。目前已被Ember.js採納進來。
----------------------------------------------------------------------------------------------------------------------------------------------------
2015.11.07 加入ReactJS、AngularJs、BackboneJs, UnderscoreJs
2015.11.17 加入編輯器Atom、打包工具Webpack、Grunt、Gulp...