r.js合並實踐


項目中用到require.js做生產時模塊開發,但上線要合並壓縮,幸好它配套有r.js。下面就其用法說明一下。

首先建一個目錄,里面的結構如下:

  • require.js可以到r.js項目下載
  • r.js可以到r.js項目下載
  • server.exe可以到avalon項目下載
  • jquery可以到JQ官網下載
  • avalon.js可以到avalon項目下載,並把里面的loader: true改為 loader: false,禁止自帶的加載器。
  • main.js是用於配置加載選項的,如shim機制,有時還做一些初始化操作。
  • build.js是用於合並壓縮的。

index.html的內容如下:

<!doctype html>
<html>
    <head>
        <title>avalon+requirejs</title>
        <meta charset="utf-8">
        <script data-main="js/main" src="require.js"></script>
        <style type="text/css">
            .wrapper {
                width: 200px;
                height: 200px;
                background: gray;
            }
        </style>
    </head>
    <body>
        <div class="wrapper" ms-controller="xxx">{{str}}</div>
    </body>
</html>

main.js的內容以下:


require.config({
    baseUrl: 'js',
    paths: {
        jquery: 'jquery',
        avalon: 'avalon'
    },
    shim: {
        jquery: {
            exports: "jQuery"
        },
        avalon: {
            exports: "avalon"
        }
    }
});

require(['avalon',"jquery"], function(avalon, Q) {
   Q("body").append("test jq")
   avalon.define("xxx", function(vm){
       vm.str = "加載成功"
   })
   avalon.scan()
});
 

因為main.js是相當於require.js的下一級目錄中,需要設置baseUrl。由於avalon與jquery都不是根據嚴格的AMD定義它的庫的結構(即,沒有用define方法包裹起來),我們需要通過shim機制處理一下。最后,我們還手動加載avalon,進行掃描綁定!

然后點擊 server.exe,打開IE或chrome。頁面加載,它就會加載require.js。require.js會找到加載它的那個script節點,發現它定義了data-main屬性,根據它的值去加載js/main.js文件,然后它配置自身,然后加載avalon並完成頁面的重新渲染!

我們再來看合並壓縮。打開build.js,里面的內容如下:


({
    baseUrl: '',
    paths: {
        jquery: 'jquery',
        avalon: 'avalon'
    },
    shim: {
        jquery: {
            exports: "jQuery"
        },
        avalon: {
            exports: "avalon"
        }
    },
    name: "main",
    out: "main-built.js"
})

你想r.js做壓縮,還有一個必要條件,得安裝node.js,這個不詳談了,自己百度谷哥。然后要安裝r.js,window下打開控制台,輸入npm install -g requirejs。然后定位到js目錄下,輸入node r.js -o build.js,然后該目錄下就會多出main-built.js這個文件,表示合並成功!

然后上線時,將index.html中 data-main="js/main"改成 data-main="js/main-built"就行了。

build.js用到的配置項,英文文檔可見這里


免責聲明!

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



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