我已经使用requireJS设置了一个Angular应用程序。在部署之前,我将所有内容捆绑到一个唯一的文件中。通常,外部库没有requireJS'define'包装器。
例如,Angular Parallax库的编写方式如下:
# https://github.com/durated/angular-parallax/blob/master/angular-parallax.min.js
angular.module("duParallax",["duScroll","duParallax.directive"...
这是我的main.js:
require.config({
baseUrl: '/angular-dev',
paths: {
angular: '//ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.min',
angularScroll: 'bower_components/angular-scroll/angular-scroll.min',
angularParallax: 'bower_components/ng-parallax/angular-parallax.min'
},
shim: {
'angular': { exports: 'angular' },
'angularScroll': { deps: ['angular'] },
'angularParallax': { deps: ['angular'] }
}
});
我正在使用grunt-contrib-requirejs然后将所有库(不是CDN)捆绑到一个唯一文件中。这是我捆绑所有东西后得到的结果:
angular.module("duParallax",["duScroll","duParallax.directive"...
define("angularParallax", ["angular"], function(){});
但我期望在define:
中要包装的代码define("angularParallax", ["angular"], function(){
angular.module("duParallax",["duScroll","duParallax.directive"...
});
如何在不更改库本身的情况下实现最新效果?
修改 根据这个其他stackoverflow问题,这是它应该如何工作。但我也使用grunt-contrib-requirejs来捆绑我的代码,这可能就是问题所在。
答案 0 :(得分:2)
默认情况下,r.js不会包装非AMD兼容的库。 您需要将以下选项添加到grunt-requirejs-contrib设置:
wrapShim: true