AMD-RequireJS模块化

require.js使用

1. 下载require.js, 并引入

2. 创建项目结构

|-js
  |-libs
    |-require.js
  |-modules
    |-alerter.js
    |-dataService.js
  |-main.js
|-index.html

3. 定义require.js的模块代码

  • dataService.js

    define(function () {
      let msg = 'I am dataService.js';
    
      function getMsg() {
        return msg.toUpperCase();
      }
    
      return {getMsg};
    });
    
  • alerter.js

    define(['dataService'], function (dataService) {
      let name = 'I am alerter.js';
    
      function showMsg() {
        alert(dataService.getMsg() + ', ' + name);
      }
    
      return {showMsg};
    });
    

4. 应用主入口: main.js

(function () {
  //配置
  require.config({
    //基本路径
    baseUrl: "js/",
    //模块标识名与模块路径映射
    paths: {
      "alerter": "modules/alerter",
      "dataService": "modules/dataService"
    }
  });
  //引入使用模块
  require( ['alerter'], function(alerter) {
    alerter.showMsg();
  });
})();

5. 页面使用模块:

data-main="js/main"
src="js/libs/require.js"

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

6. 使用第三方基于require.js的框架(jquery)

  • 将jquery的库文件jquery-1.10.1.js导入到项目:

    |-js
      |-libs
        |-require.js
        |-jquery-1.10.1.js
      |-modules
        |-alerter.js
        |-dataService.js
      |-main.js
    |-index.html
    
  • 在main.js中配置jquery路径"jquery": "libs/jquery-1.10.1"

        paths: {
          "alerter": "modules/alerter",
          "dataService": "modules/dataService",
          "jquery": "libs/jquery-1.10.1"
        }
    
  • 在alerter.js中使用jquery $('body').css({background : 'red'});

    define(['dataService', 'jquery'], function (dataService, $) {
        var name = 'zhangsan';
        function showMsg() {
            $('body').css({background : 'red'});
            alert(name + ' '+dataService.getMsg());
        }
        return {showMsg};
    });
    

7. 使用第三方不基于require.js的框架(angular/angular-messages)

  • 将angular.js和angular-messages.js导入项目

    |-js
      |-libs
        |-require.js
        |-jquery-1.10.1.js
        |-angular.js
        |-angular-messages.js
      |-modules
        |-alerter.js
        |-dataService.js
      |-main.js
    |-index.html
    
  • 在main.js中配置

    (function () {
      require.config({
        //基本路径
        baseUrl: "js/",
        //模块标识名与模块路径映射
        paths: {
          //第三方库
          'jquery' : 'libs/jquery-1.10.1',
          'angular' : 'libs/angular',
          'angular-messages' : 'libs/angular-messages',
          //自定义模块
          "alerter": "modules/alerter",
          "dataService": "modules/dataService"
        },
        /*
         配置不兼容AMD的模块
         exports : 指定导出的模块名
         deps  : 指定所有依赖的模块的数组
         */
        shim: {
          'angular' : {
            exports : 'angular'
          },
          'angular-messages' : {
            exports : 'angular-messages',
            deps : ['angular']
          }
        }
      });
      //引入使用模块
      require( ['alerter', 'angular', 'angular-messages'], function(alerter, angular) {
        alerter.showMsg();
        angular.module('myApp', ['ngMessages']);
        angular.bootstrap(document,["myApp"]);
      });
    })();
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值