requirejs多重依赖的实现

在使用requirejs管理代码的时候会有a依赖b,b依赖c……这样的情况,我选我遇到的的一种来说。

我在某一次使用requirejs的时候引入angular与它的插件angular-ui-router,angula-ui-router是依赖于angular的,而main.js又依赖于这两者,如果直接使用

//config.js

requirejs.config({
  baseUrl: './js',
  paths: {
    jquery: 'lib/jquery/jquery',
    angular: 'lib/angular/angular',
angularUiRouter:'lib/angular-ui-router/angular-ui-router',
main:'main'
  },
  shim: {
 angular : { 

   exports : 'angular'

   },
 angularUiRouter : { 
 exports : 'angularUiRouter'
 }
  }
 
 
});

requirejs(['main'], function(main) {
});


//main.js

define(['angular','angularUiRouter',function(angular,angularUiRouter){

});

的写法,就会出现有时候angular-ui-router先于angular被读取的情况,就是第一次进入页面肯定会报错。

那么我在angular-ui-router.js里面给它加上了define(['angular'],function(angular){});这样一层,

在config.js里面

requirejs(['main'], function(main) {
});

之前添加

requirejs(['angularUiRouter'], function(angularUiRouter) {
});

同时main.js里面的

define(['angular','angularUiRouter',function(angular,angularUiRouter){

修改为

define(['angularUiRouter'], function(angularUiRouter) {

这样就实现了两重依赖而不会有报错的情况了


ps:同样的,mvc模式我们可以这么写

在新添加的模块controllers.js中

define(['angular'],function(angular){

angular.module('firstController',function($scope){……});

});

在config.js添加声明

requirejs.config({

paths:{

……

controllers:'controller'

},

shim:{

……

}

})

requirejs(['controllers'],function(angular){

});

requirejs(['main'], function(main) {
});

在main.js中

define(['controllers','angularUiRouter',function(controllers,angularUiRouter){

});

新定义的模块就能被引用到主要js里面了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值