04 AMD-RequireJS 模块化

RequireJS 模块化

1. 下载 require.js

2. 创建项目结构

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

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

  • dataService.js

    define(functin() {
    	let msg = 'hello world';
           
        functin getMsg() {
    		return msg.toUpperCase();
    	}
          
    	return {getMsg};
    })
    
  • alerter.js

    define(['dataService', 'jquery'], fuction (dataService, $) {
    	let name = 'Mary';
           
        function showMsg() {
    		$('body').css('background', 'gray');
        	alert(dataService.getMsg() + ',' + name);
    	}
    
    	return {showMsg};
    })
    

4. 应用主入口 js:main.js

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

5. 页面使用模块

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

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

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

  • 在 main.js 中配置 jquery 路径

    paths: {
        // 第三方库
    	"jquery": "libs/jquery-1.10.1",
           
         // 自定义模块
         "alerter": "modules/alerter",
         "dataService": "modules/dataService"
    }
    
  • 在 alerter.js 中使用 jquery

    define(['dataService', 'jquery'], function (dataService, $) {
        var name = 'Peter'
        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/angular.js

    js/libs/angular-messages.js

  • 在 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
发出的红包

打赏作者

漂亮疯了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值