RequireJS程序打包

使用 RequireJS 可以將我們的 JavaScript 代碼輕易的分割成苦幹個模塊(module),方便我們的開發與維護。但是在生產環境中,如果將所有的 JavaScript 文件分離,會導致很多次請求(requests),即使這個些文件都很小,也會浪費很多時間。 

所以在生產環境中,我們可以通過合併這些腳本文件,以減少請求的次數達到節省加載時間的目的。

1,r.js 介紹

RequireJS 提供了一個打包壓縮工具 r.js,它是一個能運行基於 AMD 的項目的命令行工具,可以用來實現對模塊的合併壓縮。

2,功能特點

RequireJS Optimizer 有很多用處。它不僅能夠優化單個 JavaScript 或單個 CSS 文件,也可以優化整個項目或只是其中的一部分,甚至多頁應用程序(multi-page application)。它還可以使用不同的縮小引擎(minification engines)或者乾脆什麼都不用(no minification at all),等等。

3,安裝配置

(1)訪問其 GitHub 主頁:https://github.com/requirejs/r.js 並下載到本地。

(2)將 dist 文件夾下的 r.js 複製到項目文件夾下即可。

4,打包

根目錄下新建build.js文件,如下圖所示:

({
    baseUrl: './js',
    dir: './dist',
    modules: [
        {
            name: 'main'
        }
    ],
    fileExclusionRegExp: /^(r|build)\.js$/,
    optimizeCss: 'standard',
    removeCombined: true,
    paths: {
        CusorWidget: 'empty:',
        InterestPoint:'empty:',
        MeasureWidget: 'empty:',
        resourceURL: 'empty:',
        ScanShowWidget:'empty:',
        SceneManager: 'empty:',
        SearchWidget:'empty:',
        StatisticsWidget:'empty:',
        VectorLayer:'empty:',
        Zlib: 'empty:',
        SuperMap: 'empty:',
        jquery: "empty:",
        echarts: 'empty:',
        dark: 'empty:',
        drag: 'empty:',
        easyui: 'empty:',
        colorPicker: 'empty:',
        spectrum: 'empty:',
        Cesium: "empty:"
    }
})


參數說明:

  • appDir:應用程序的目錄(即 <root>)。在這個文件夾下的所有文件將會被複制到 dir 參數標註的文件夾下。
  • baseUrl:相對於 appDir,代表查找文件的錨點(that represents the anchor path for finding files)。
  • dir:這是一個輸出目錄,所有的應用程序文件將會被複制到該文件夾下。
  • modules:一個包含多個對象的數組。每個對象代表一個將被優化的模塊(module)。
  • fileExclusionRegExp:任何與此規則匹配的文件或文件夾都將不會被複制到輸出目錄。由於我們把 r.js 和 build.js 放置在應用程序目錄下,我們希望優化器(optimizer)排除這兩個文件。 因此我們可以這樣設置 /^(r|build)\.js$/。
  • optimizeCss:RequireJS Optimizer 會自動優化應用程序下的 CSS 文件。這個參數控制 CSS 最優化設置。具體可選值見上方 css 部分。
  • removeCombined:如果爲 true,優化器(optimizer)將從輸出目錄中刪除已合併的文件。
  • paths:模塊(modules)的相對目錄。
  • shim:爲那些沒有使用 define() 聲名依賴關係及設置模塊值的模塊,配置依賴關係與“瀏覽器全局”出口的腳本。

打開命令行,執行 node r.js -o build.js 

參考:http://www.hangge.com/blog/cache/detail_1704.html 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章