已有的web項目,一直使用Maven作工程管理,現階段前端調整爲使用requirejs來負責模塊加載依賴,同時使用jasmine來完成前端的UT。html
便與在maven下統一管理,簡單整理了下合在一塊兒的使用,Maven,require,jasmine三者技術細節自去google前端
1、使用requirejs作模塊依賴管理。node
敘述下前提摘要jquery
一、爲何使用requirejsgit
項目愈來愈大,前端愈來愈重要,代碼愈來愈多,缺少有效的管理。因而關注到業內的AMD規範。github
AMD規範全稱是Asynchronous Module Definition,即異步模塊加載機制,完整描述了模塊的定義,依賴關係,引用關係以及加載機制,requirejs是該規範的一個比較好的實現,因而……採用web
二、如何使用requirejsbootstrap
define,require等語法沒必要多說,參考API文檔http://www.requirejs.cn/後端
這裏其實還得說回前端代碼的結構劃分,依據咱們已有的工程代碼,簡單整理了以下結構,但願對你們有用。app
前端按照後端領域模型開發的方式,同時有針對性的提出UI庫,模板庫劃分
Lib |
依賴庫 |
Basic |
基礎,設計命名空間、版本定義、BaseType定義等。 |
Model |
模型對象,相似後臺的bean |
onepiecework |
業務邏輯庫,能夠存放統一複雜業務邏輯在前端的調用,處理代碼。 |
UI |
前端UI庫 業務邏輯的服務你們都比較認同,可是關於UI,你們總以爲太low,或者有細節差別等等。可是,建議千萬不要處處複製粘貼,若是類似,抽取公共部分,這個位置就是專爲此準備的) |
view |
最終與html打交道的js腳本,control層 |
Commonjs |
requireConfig文件,提供全局加載路徑、lib庫等的管理 |
測試目錄對照開發目錄,清晰(喜歡maven這一點
2、使用maven來處理對requirejs工程的混淆和編譯打包
【注】exec插件的調用命令mvn exec:exec
代碼壓縮混淆會影響到UT,建議在最終打包時調用,當前工程定義混淆專屬的profile,須要在測試執行時-P指定,完整命令爲 mvn exec:exec -PjsCompile
一、r.js,熟悉requirejs的大夥對此確定不生疏。
使用思路很簡單,在maven中配置exec-maven-plugin 插件來調用本地編寫好的bat命名,命令很簡單,核心就一句。能夠參考build目錄下的build.bat
node r.js -o buildConfig.js
buildConfig.js, 壓縮混淆配置,制定對js代碼進行壓縮,合併的規則。
細節API依舊不說,參考這http://www.yfznw.com/node/22
完了?沒完
二、上面的東東你們學習下也就都會了,問題是如何最終發佈。壓縮合並咱們最終考慮的是前端性能,那麼在前段展現時須要考慮另一個就是依賴庫的加載性能。
規則:
這個和上面的工程分割有關聯,你們看的過程當中能夠翻回去看看
對比下多種方案
頁面相互獨立,比較少有公共邏輯,那就這麼幹
前端SDK開發者,很少說什麼,吧大家須要總體對外提供的東東打一個包
其餘東東很差說,業務太複雜,不能妄論。
三、針對上面3),如何提供本身的subLib庫,不被合併到最終的view.js中,又能將分散的多文件合併到一塊兒呢。
module中,定義本身的模塊,而後再view中排除掉
完了,真的完了
3、jasmine的UT測試
這裏按照官方的示例簡單搭建了下,給個連接
http://searls.github.io/jasmine-maven-plugin/amd-support.html
示例代碼git工程
上述示例工程源碼提交到了oschina上( http://git.oschina.net/hansj/maven-require)