我正在使用Webjars将AngularJS导入到我的Web项目中。 出于某种原因,即使我引用了我的主要版本,AngularJS的缩小版本也不会被提供。我期待看到angular.min.js和angular-route.min.js被加载,但我看到了常规的angular.js和angular-route.js。我在这里做错了什么?
我的main.js:
'use strict';
requirejs.config({
paths: {
'angular': '../lib/angularjs/angular.min',
'angular-route': '../lib/angularjs/angular-route.min',
'async': '../lib/requirejs-plugins/src/async'
},
shim: {
'angular': {
exports : 'angular'
},
'angular-route': {
deps: ['angular'],
exports : 'angular'
}
}
});
require(['angular', './controllers', './directives', './filters', './services', 'angular-route','./places-autocomplete','async','./gmaps'],
function(angular, controllers) {
initialize();
// Declare app level module which depends on filters, and services
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'ngRoute']).
config(['$routeProvider', function($routeProvider) {
....
}]);
angular.bootstrap(document, ['myApp']);
});
我的html加载需要像这样:
<script>
@Html(org.webjars.RequireJS.getSetupJavaScript(routes.WebJarAssets.at("").url))
</script>
<script data-main="@routes.Assets.versioned("javascripts/main.js")"
src="@routes.WebJarAssets.at(WebJarAssets.locate("require.min.js"))"></script>
以上的requirejs.config片段位于main.js
中答案 0 :(得分:0)
尝试添加
enforceDefine: true,
答案 1 :(得分:0)
我查看了requirejs的来源。这是我发现的:
requirejs将您在配置对象中定义的每个路径拆分为其组件(即目录,文件名和扩展名)。由于某种原因(节点模块命名约定),最后一个扩展名被删除。他们不会检查是否是'.js'。然后,此路径数组用于访问模块。没有插件,rquirejs只处理.js文件。如果nessecary,它会添加一个.js。
现在你可以看到你的例子中发生了什么。在第一步中,requirejs会删除.min扩展名。当它加载模块时,它加入路径组件并在末尾添加.js。然后它加载完整的模块而不是缩小版本。
如果在路径中添加.js,则会删除此.js并且.min仍然存在。