Blogger Information
Blog 143
fans 1
comment 0
visits 440323
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
require.js模块化编程
弘德誉曦的博客
Original
969 people have browsed it

require.js的使用提要


require.js的特点:

① 防止js加载阻塞页面渲染

② 使用程序调用的方式加载js,实现模块化编程

1、加载require.js

<script type="text/javascript" src="require.js"></script>

 或异步加载

<script type="text/javascript" defer async="true"  src="require.js"></script>

或指定网页程序的主模块

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

2、通过deifine()函数定义一个AMD模块

require.js默认加载AMD规范的模块。模块定义形式如下:

定义一个独立性模块:

define(function(){
    var add = function(x,y){
        return x+y;
    };
    return {
        add : add
    };
})

定义一个依赖于myLib.js的模块(被依赖的模块将会在该模块加载前加载):

define(['myLib'],function(){
    function foo(){
        //myLib.doSomething();
    }
    return {
        foo:foo        //定义模块输出
    };
});

3、用require([])来加载定义了的模块

require(['jquery','underscore','backbone'],callbackFunction);

4、然后在页面中使用。

//$, _, Backbone分别对应'jquery','underscore','backbone'的输出
function callbackFunction($, _, Backbone){
    //do something....
}

5、配置需要加载AMD规范的模块(配置写在main.js中)

场景一(相对于main文件所在的路径):

require.config({
    paths:{
        "jquery" : "lib/jquery.min",
        "underscore" : "lib/underscore.min",
        "backbone" : "lib/backbone"
    }
});

场景二(用baseUrl属性指定基目录):

require.config({
    baseUrl : "js/lib",
    paths:{
        "jquery" : "lib/jquery.min",
        "underscore" : "lib/underscore.min",
        "backbone" : "lib/backbone"
    }
});

场景三(全路径加载远程模块)

require.config({
    paths : {
        "jquery" : "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min"
    }
});

6、配置需要加载的第三方模块(配置写在require.config参数对象中)

shim : {
    "jquery.scroll" : {
        deps : ["jquery"],                    //deps数组,表明该模块的依赖性
        exports : "jQuery.fn.scroll"     //exports值(输出的变量名),表明这个模块外部调用时的名称
    }
}

注:① main.js中的配置具有全局性,称为require.js 中的 “主数据"

       ② 加载main.js : <script data-main="js/main" src="js/require.js"></script>

       ③ 更多参见:http://www.jb51.net/article/78661.htm

       ④ 更多参见:入门篇一 (http://www.cnblogs.com/snandy/archive/2012/05/22/2513652.html)

                             入门篇二 (http://www.cnblogs.com/snandy/archive/2012/05/23/2513712.html)

                             入门篇三 (http://www.cnblogs.com/snandy/archive/2012/05/24/2514700.html)

                             进阶篇一 (http://www.cnblogs.com/snandy/archive/2012/06/06/2536969.html)

                             进阶篇二 (http://www.cnblogs.com/snandy/archive/2012/06/07/2537477.html)

                             进阶篇三 (http://www.cnblogs.com/snandy/archive/2012/06/08/2538001.html)

                             requirejs2.0新特性:http://www.cnblogs.com/snandy/archive/2012/06/04/2532997.html

       ⑤ reqiurejs下载:http://requirejs.org/docs/download.html

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post