学习 require.js

273 阅读2分钟

学习链接 www.cnblogs.com/eedc/p/6913…
注意点:
require.js 是一个工具库,主要用于客户端模块管理,它可以让客户端的代码的分成一个个模块,实现异步或动态加载,从而提高代码的性能和可维护性。

require的基本思想:通过 define方法,将代码定义成模块,通过require方法,实现代码的模块的加载

1.将require.js 嵌入网页

 <script data-main="scripts/main" src="scripts/require.js"></script>

data-main属性的作用是,指定网页程序的主模块。在上例中,就是js目录下面的main.js,这个文件会第一个被require.js加载。由于require.js默认的文件后缀名是js,所以可以把main.js简写成main。

2.定义define模块 如果被定义的模块是一个独立模块,不需要依赖任何其他模块,可以直接用define方法生成

define(function(){
    //定义单独的模块
    return{
        method1:function(){},
        method2:function(){}
    }
})

定义相互依赖模块

define(['module1', 'module2'], function(m1, m2) {

    return {
        method: function() {
            m1.methodA();
			m2.methodB();
        }
    };

});

3.使用require方法 调用模块 require 方法用于调用模块

require(['foo', 'bar'], function ( foo, bar ) {
        foo.doSomething();
});

4.加载非规范的模块

require.config({
       shim: {
       'underscore':{
       exports: '_'
       },
       'backbone': {
       deps: ['underscore', 'jquery'],
       exports: 'Backbone'
       }
       }
   });

require.config()接受一个配置对象,这个对象除了有前面说过的paths属性之外,还有一个shim属性,专门用来配置不兼容的模块。具体来说,每个模块要定义(1)exports值(输出的变量名),表明这个模块外部调用时的名称;(2)deps数组,表明该模块的依赖性。

// 全局配置
require.config({
    // 根路径设置,paths下面全部都是根据baseUrl的路径去设置
    baseUrl:'./js/',
    paths:{
        // 引入jQuery
        jquery:'plugin/jquery',
        // 引入bootstrap
        bootstrap:'plugin/bootstrap',
        // a.js
        a:'a',
        // b.js
        b:'b',
        // 引入c.js
        c:'c'
    },
    // 用来配置不兼容的模块,意思是:该模块没有module.exports,
    // jquery就有module.exports输出值
    shim:{
        //bootstrap没有module.exports输出值,所以得放在shim
        bootstrap:{
            //bootstrap需要依赖jquery,所以得加deps
            deps:["jquery"]
            // 如果该模块加载进来,需要输出一个值,那就用exports来设置,这里不用设置
            // exports:''
        }
    },
    //map"告诉RequireJS在任何模块之前,都先载入这个模块
    map: {
        // 这里没有设置,举个例子
        // '*': {
            // 'css': 'plugins/require-css/css'
        // }
    }
})