• require.js学习笔记(内容属于转载总结)


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

    backbone插件中,需要通过script标签引入require.js。

    data-main属性的作用是,指定网页程序的主模块,即网页的主模块是src下的app.js

    require.js

    1、网页主模块是app.js,主模块依赖于其他的模块,这样就会用到require()和require.config()
    当需要依赖的模块和主模块在同一目录下时,使用require()或require.config()
    当需要依赖的模块和主模块不在同一目录下时,使用require.config()
    2、require(['jquery', 'underscore', 'backbone'], function ($, _, Backbone){

        // some code here

      });
    require()中有两个参数,第一个参数是数组,内容主模块要依赖的模块,例子中表示主模块
    依赖于jquery.js、underscore.js、backbone.js
    第二个参数是个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参
    数形式传入该函数,从而在回调函数内部就可以使用这些模块。
    3、当主模块app.js和三个需要依赖的模块jquery.js、underscore.js、backbone.js不在同一个目录
    下的时候,可以使用require.config()
    require.config()中参数paths是个对象,paths属性指定各个模块的加载路径。baseUrl表示的是改变基目录,如下(2)所示
    (1) require.config({
        paths: {
          "jquery": "lib/jquery.min",
          "underscore": "lib/underscore.min",
          "backbone": "lib/backbone.min"
        }
      });
    (2) require.config({
        baseUrl: "js/lib",
        paths: {
          "jquery": "jquery.min",
          "underscore": "underscore.min",
          "backbone": "backbone.min"
        }
      });
    (3)如果某个模块在另一台主机上,也可以直接指定它的网址,比如:
      require.config({
        paths: {
          "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min"
        }
      });
    4、按照AMD规范,模块必须采用特定的define()函数来定义。如果一个模块不依赖其他模块,那么可以直接定义在define()函数之中。
    例: 假定现在有一个math.js文件,它定义了一个math模块。那么math.js就要这样写:
      // math.js
      define(function (){
        var add = function (x,y){
          return x+y;
        };
        return {
          add: add
        };
      });
    加载方法如下:
      // main.js
      require(['math'], function (math){
        alert(math.add(1,1));
      });
    如果这个模块还依赖其他模块,那么define()函数的第一个参数,必须是一个数组,指明该模块的依赖性。
      define(['myLib'], function(myLib){
        function foo(){
          myLib.doSomething();
        }
        return {
          foo : foo
        };
      });
    当require()函数加载上面这个模块的时候,就会先加载myLib.js文件。
    5、加载非规范的模块
    这样的模块在用require()加载之前,要先用require.config()方法,定义它们的一些特征。
    例:underscore和backbone这两个库,都没有采用AMD规范编写。如果要加载它们的话,必须先定义它们的特征。
     require.config({
        shim: {
    //shim是用来配置不兼容的模块。具体来说,每个模块要定义exports值(输出的变量名),表明这个模块外部调用时的名称
          'underscore':{
            exports: '_'
          },
          'backbone': {
            deps: ['underscore', 'jquery'],
    //deps数组,表明该模块的依赖性。即backbone.js依赖于underscore.js和jquery.js
            exports: 'Backbone'
          }
        }
      });

    参考网址:http://www.cnblogs.com/duanhuajian/archive/2013/01/04/2844151.html

  • 相关阅读:
    uitableview 默认选中行
    ipad 开发常用问题
    NSDate常用代码范例
    MOSS2010站点大文件上传设置
    scm xcode 配置
    ipad 开发 遇到BadAccess
    Tutorial: iPhone SQLite Encryption With SQLCipher
    uitableview
    UML建模——活动图(Activity Diagram)
    【随感】.........................
  • 原文地址:https://www.cnblogs.com/dongxiaolei/p/5834018.html
Copyright © 2020-2023  润新知