require.js實現js模塊化編程(二):RequireJS Optimizerhtml
這一節,咱們主要學習一下require.js所提供的一個優化工具r.js的用法。前端
一、認識RequireJS Optimizer
RequireJS Optimizer是對腳本的優化支持目前流行的 UglifyJS 和 Closure Compiler 兩種壓縮方式,UglifyJS 須要 NodeJS 環境支持,而 Closure Compiler 則須要 Java 環境。這篇文章是以運行於 NodeJS 的 UglifyJS 來優化的,這也是 RequireJS Optimizer 默認的壓縮方法。node
二、環境的需求及運行方法
首頁須要安裝 Node 0.4.0 或更高版本,而後下載 r.js,下載好之後就能夠在命令行裏對前端代碼進行優化了。
r.js 的參數傳遞使用方式:
一是直接加在命令行後面,以下:jquery
node r.js -o baseUrl=. paths.jquery=some/other/jquery name=main out=main-built.js
二是新建一個配置文件,例如 build.js(推薦使用這種方式),這樣配置更方便,以下:git
node r.js -o build.js
三、項目結構及build.js配置github
以下:編程
({ baseUrl: ".", name: "main", //dir:"dist/", // 輸出目錄的路徑。若是不設置,則默認爲和 build 文件同級的 build 目錄。 optimize: "uglify", //JavaScript 代碼優化方式 optimizeCss:"standard.keepLines", //CSS 代碼優化方式 //mainConfigFile: "main.js", //removeCombined: true, //fileExclusionRegExp: /^\./, //modules:[{}], //定義要被優化的模塊數組。 paths: { "common": "./libs/common", "countObject": "./core/countObject", "dependCount": "./core/dependCount", "countFunction": "./core/countFunction", "dateUtil": "./core/dateUtil", "stringUtil": "./core/stringUtil" }, shim: { dateUtil: { deps: [], exports: 'DateUtils' }, stringUtil: { deps: [], exports: 'StringUtils' } }, out: "./dist/main-built.js" // 合併壓縮以後js目錄 })
按照build.js配置文件,運行node r.js -o build.js ,效果以下:數組
生成合並以後的壓縮文件位於 /dist/main-built.js,在index.html頁面中引入便可,以下:app
<script src="js/libs/require.js" data-main="js/dist/main-built" defer async="true"></script>
build.js基本參數介紹async
應用程序的最頂層目錄。可選的,若是設置了的話,r.js 會認爲腳本在這個路徑的子目錄中,應用程序的文件都會被拷貝到輸出目錄(dir 定義的路徑)。若是不設置,則使用下面的 baseUrl 路徑。
默認狀況下,全部的模塊都是相對於這個路徑的。若是沒有設置,則模塊的加載是相對於 build 文件所在的目錄。另外,若是設置了appDir,那麼 baseUrl 應該定義爲相對於 appDir 的路徑。
輸出目錄的路徑。若是不設置,則默認爲和 build 文件同級的 build 目錄。
JavaScript 代碼優化方式。可設置的值:
CSS 代碼優化方式,可選的值有:
● "standard":標準的壓縮方式;
● "standard.keepLines":保留換行;
● "standard.keepComments":保留註釋;
● "standard.keepComments.keepLines":保留換行;
● "none":不壓縮;
若是不想重複定義的話,可使用這個參數配置 RequireJS 的配置文件路徑。
刪除以前壓縮合並的文件,默認值 false。
要排除的文件的正則匹配的表達式。
定義要被優化的模塊數組。每一項是模塊優化的配置,經常使用的幾個參數以下:
RequireJS Optimizer 的配置參數還有不少,完整的參數介紹能夠看這裏。
四、main.js
require(['_main_']); define("_main_", ["common", "countObject", "countFunction", "dependCount", "dateUtil", "stringUtil"], function( common, countObject, countFunction, dependCount, dateUtil, stringUtil) { stringUtil.toUpperCase(); dateUtil.toString(); window.StringUtils.toUpperCase(); window.DateUtils.toString(); });
五、批處理文件start.bat
若是不想每次都輸入node r.js -o build.js去進行打包壓縮,能夠定義這樣一個批處理文件start.bat,注意更改文件的路徑。雙擊該文件,便可自行批處理進行打包。
@echo off echo build... e: cd E:\ownstudy\require\requirejs_Demo_r\js node r.js -o build.js echo Press any key to exit! echo. & pause
RequireJS Optimizer項目地址,請自行下載,謝謝關注。