博客列表 >require.js模块化编程

require.js模块化编程

弘德誉曦的博客
弘德誉曦的博客原创
2017年12月25日 17:17:29970浏览

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

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议