日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

?。。equireJS的使用 | Ionic中文站Ionic中文站

 看見就非常 2015-04-24

在看一些高手的demo中,都使用了requireJS進行模塊化。下面介紹一下requireJS的使用

RequireJS是一個非常小巧的JavaScript模塊載入框架,是AMD規(guī)范最好的實現(xiàn)者之一。最新版本的RequireJS壓縮后只有14K,堪稱非常輕量。它還同時可以和其他的框架協(xié)同工作,使用RequireJS必將使您的前端代碼質(zhì)量得以提升。

一般情況下,我們加載js都是直接寫在頁面body里面,這樣會造成頁面阻塞,使用require不僅能解決這個問題,還能為大規(guī)模web開發(fā)提供規(guī)范,版本管理等。
例如一個經(jīng)典的加載js是這樣:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="a.js"></script>
        <script type="text/javascript" src="b.js"></script>
        <script type="text/javascript" src="c.js"></script>
        <script type="text/javascript" src="d.js"></script>
    </head>
    <body>
      <span>body</span>
    </body>
</html>

而使用了require之后,頁面變成了:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="require.js"></script>
        <script type="text/javascript">
            require(["a","b","c","d"]);
        </script>
    </head>
    <body>
      <span>body</span>
    </body>
</html>

當然,我們可以使用 data-main把邏輯放到main.js文件里面

1
<script data-main="js/main.js" type="text/javascript" src="libs/require.js" ></script>

是不是很簡單呢?
那require怎么用呢?下面先了解一下require的基本api:
require會定義三個變量:
define,require,requirejs,其中require === requirejs,一般使用require更簡短
define 用來定義一個模塊
require 加載依賴模塊,并執(zhí)行加載完后的回調(diào)函數(shù)

比較經(jīng)典的寫法是:

1
2
3
require(["module"],function(module){
    module.function();
})

第一個參數(shù)是一個模塊數(shù)組,第二個參數(shù)是回調(diào)函數(shù),通常回調(diào)函數(shù)會有模塊提供的接口,這樣就實現(xiàn)了依賴注入,減少了全局變量污染。注意參數(shù)注入的順序要與模塊數(shù)組順序一致,名字并不重要,順序一致代表把對象傳給這個變量。
這是require的基本寫法,那這些文件在哪找呢?
require提供了很智能的找法,如果index.html頁面加入了data-main標簽,則這個目錄將會成為基目錄,即baseUrl,如果沒有的話,index.html所在的目錄將成為基目錄,require默認的文件就是js文件,所以,我們在使用require的時候,可以連.js都不用寫,直接require([‘a(chǎn)’]); 相當于加載了a.js文件

如果文件不在這個相對路徑下,我們還可以通過配置來找文件,使用require.config()的path參數(shù);

1
2
3
4
5
6
7
8
9
10
require.config({
    paths : {
        // 其他目錄下的文件
        "a" : "../libs/zepto",
        // 絕對路徑
        "b" : "/libs/handlebars",
        // 加載cdn文件
        "jquery" : ["http://libs.baidu.com/jquery/2.0.3/jquery"]  
    }
})

path映射那些不直接放置于baseUrl下的模塊名(這相當于跟冗長的模塊名取個簡介的名字)。設(shè)置path時起始位置是相對于baseUrl的,除非該path設(shè)置以”/”開頭或含有URL協(xié)議(如http:).

另外,通過require加載的模塊一般都需要符合AMD規(guī)范即使用define來申明模塊,但是部分時候需要加載非AMD規(guī)范的js,例如一些舊的庫,或者jquery的插件庫等,這時候就需要用到另一個功能:shim

1
2
3
4
5
6
7
8
9
10
require.config({
    shim: {
        "underscore" : {
            exports : "_";
        },
        "jquery.form" : {
            deps : ["jquery"]
        }
    }
})

這里jquery.form依賴于jquery,所以我們需要添加deps參數(shù)。還可以更簡單點,對作為jQuery或Backbone的插件存在而不導出任何模塊變量的”模塊”們, shim配置可簡單設(shè)置為依賴數(shù)組

1
2
3
4
5
6
7
requirejs.config({
    shim: {
        'jquery.colorize': ['jquery'],
        'jquery.scroll': ['jquery'],
        'backbone.layoutmanager': ['backbone']
    }
});

基本用法就這些,更深入的學習請參考requirejs官方文檔:http:///
中文版的可以再看一下這個:http://javascript./tool/requirejs.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多