angular.js 使用 requirejs 加载而不是 angular.min.js
angular.js loaded instead of angular.min.js with requirejs
我正在使用 Webjars 将 AngularJS 导入到我的 Web 项目中。
出于某种原因,AngularJS 的缩小版本不会被提供,即使我在我的 main 中引用了那些。我期待看到加载 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 像这样加载 requirejs:
<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
尝试添加
enforceDefine: true,
我查看了 requirejs 的来源。这是我的发现:
requirejs 将您在配置对象中定义的每个路径拆分为其组件(即目录、文件名和扩展名)。由于某种原因(节点模块命名约定),最后一个扩展名被删除。他们不检查那是否是“.js”。然后这个路径数组被用来访问一个模块。没有插件 rquirejs 只能处理 .js 文件。如果需要,它会添加一个 .js。
现在您可以看到示例中发生了什么。在第一步中,requirejs 删除了 .min 扩展名。当它加载模块时,它会加入路径组件并在末尾添加一个 .js。然后加载完整模块而不是缩小版本。
如果您将 .js 添加到您的路径,则此 .js 将被删除,而 .min 仍然存在。
我正在使用 Webjars 将 AngularJS 导入到我的 Web 项目中。 出于某种原因,AngularJS 的缩小版本不会被提供,即使我在我的 main 中引用了那些。我期待看到加载 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 像这样加载 requirejs:
<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
尝试添加
enforceDefine: true,
我查看了 requirejs 的来源。这是我的发现:
requirejs 将您在配置对象中定义的每个路径拆分为其组件(即目录、文件名和扩展名)。由于某种原因(节点模块命名约定),最后一个扩展名被删除。他们不检查那是否是“.js”。然后这个路径数组被用来访问一个模块。没有插件 rquirejs 只能处理 .js 文件。如果需要,它会添加一个 .js。
现在您可以看到示例中发生了什么。在第一步中,requirejs 删除了 .min 扩展名。当它加载模块时,它会加入路径组件并在末尾添加一个 .js。然后加载完整模块而不是缩小版本。
如果您将 .js 添加到您的路径,则此 .js 将被删除,而 .min 仍然存在。