angularjs, nodejs, express, gulp, karma, jasmine 前端方案整合


今年轉向做前端開發,主要是做angularjs開發,期間接觸了nodejs平台,從此一發不可收拾。

npm豐富的插件庫,express 開發框架, grunt, gulp構建工具,karma測試管理工具,jasmine單元測試框架,ng-scenario e2e測試框架(以前不知道javascript還能做端對端測試的),coffeescript, less, sass等前端技術,沒想到前端是可以這樣玩的。

根據這段時間的學習,我將各種相關的技術做一個前端方案的整合,主題為博客網站,命名為SingleUI,功能還沒完全做好,但會繼續更新。有興趣的同學可以根據自己的需求做調整。項目地址

 

--------------華麗分界線------------

 

環境安裝部署

1. nodejs: v0.12.2 以上

2. bower: npm install bower -g

3. gulp:npm install gulp -g

安裝包: 進入webui目錄下, 執行命令 npm install prebuild 安裝相關包 (若相關的包安裝失敗或執行命令報錯,請將它刪掉再安裝)

命令: 請查看package.json的scripts和build目錄下相關任務配置

 

項目架構

build: 相關task配置,config目錄下是單個配置,task目錄下是組合配置

dist: 源代碼編譯后的目錄,connect服務器指向該目錄

lib: 第三方插件庫

mocks: 本地模擬數據,routes為后端api接口

node_modules: npm依賴包

src: 源代碼,架構分層根據功能模塊划分,每個目錄下有對應的js, spec.js, scenario.js, scss, html文件

test: karma 單元測試和e2e測試配置文件

test_out: 單元測試和e2e測試的代碼覆蓋率報表,測試結果報表

vendor: bower 依賴的包

bower.json: bower 配置文件

gulpfile.js: gulp 配置文件

middleware.js: 中間組件

package.json: npm配置文件

 

前后端分離

本項目采用前后端分離開發的方式,即開發前約定數據格式,就各干各的,那么對於前端來說,發出http請求,獲取數據,應該如何做?

目前想到有兩種:

1. 通過express或其它服務器作為中間組件攔截。

2. angularjs可以通過MockJS攔截。

本項目用的是第一種,使用gulp-connect啟動服務器,中間組件middleware指向express,那么對應的請求就會到express,只需要寫對應的API接口即可,這其實相當於寫express后端。

 

命令

我想要的開發模式:當源文件下的文件例如scss,html,js發生改動時,會執行對應的task,並且瀏覽器自動刷新。

產品版本:合並壓縮重命名css,js,html。

根據項目的需求,通過各種插件處理,就有了現在的解決方案。

 

build目錄下命令,請查看具體配置。

1. gulp dev : 編譯開發版本

  1)復制相關文件

  2)將app.sass編譯

  3)將項目下的html模板合並成angularjs templates module

  4)inject 模板 index.html, admin/index.html, admin/login.html 外部引用css和script

 

2. gulp prod --env production 或 npm run publish : 編譯產品版本

  1)sass編譯壓縮重命名

  2)js合並壓縮重命名

  3)將項目下的html模板合並成angularjs templates module

  4)inject 模板 index.html, admin/index.html, admin/login.html 外部引用css和script

 

3. gulp : 開發模式

  1)編譯開發版本

  2)啟動connect服務器,指定中間件,使用本地mock數據

  3)watch 文件自動刷新

  4)karma,啟動單元測試和e2e測試

 

4. gulp server --env production : 產品模式

  1)編譯產品版本

  2)啟動connect服務器,指定中間件,使用本地mock數據

 

5. gulp test_singleRun --env production : 產品模式,並且跑測試

  1)編譯產品版本

  2)啟動connect服務器,指定中間件,使用本地mock數據

  3)karma,啟動單元測試和e2e測試

 

測試

基於karma, 單元測試使用jammine, e2e測試用 ng-scenario, 輸出報表有代碼覆蓋率karma-coverage, 執行結果報表junit-reporter

項目文件名為xx.spec.js為單元測試,xx.scenario.js為e2e測試

 

UI

 

計划

1. 完善SingleUI

2. 對HTML, CSS, JS做強化訓練,試圖彌補項目經驗上的差距。項目地址

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM