with を使用require.jsしr.jsて最適化しています。事前最適化、私は持っています:
// MainCtrl.js
define(function () {
return ["$scope", function ($scope) { console.log($scope); }];
});
// main.js
require.config({
shim: {
angular: {
exports: "angular",
},
},
paths: {
angular: "lib/angular.min",
},
});
require(["angular", "MainCtrl"], function (ng, MainCtrl) {
console.log(ng);
var app = ng.module("myapp", []);
app.controller("MainCtrl", MainCtrl);
});
私の HTML はとてもシンプルです。それはちょうど入っng-app=myappて<html>いng-controller=MainCtrlます<body>。
このようにアプリを実行すると、すべてが機能しているように見えます。オブジェクトのように見えるconsole.logforを取得します。次に、からforを取得します。問題はありません。ngangularconsole.log$scopeMainCtrl
r.js縮小された を実行して使用するmain.jsと、エラーが発生し、動作しなくなります。私は走りr.js -o build.jsます。
// build.js
({
appDir: "public",
baseUrl: "js",
dir: "dist",
fileExlusionRegExp: /^(r|build\.js)$/,
optimize: "uglify2",
optimizeCss: "standard",
modules: [{
name: "main"
}],
paths: {
angular: "lib/angular.min",
},
})
訪問するindex.htmlとエラーが発生します:
Uncaught Error: [$injector:modulerr] undefined Uncaught TypeError: undefined のメソッド 'module' を呼び出せません
- angularが適切にロードされていないか何かを示しているようです。に何かを注入することはできません
myappが、依存関係はありません。ないngRouteか何も ng以前は正しく定義されていましたが、現在は未定義angularです。これにより、2番目のエラーも発生します- インは呼び出さ
console.logれMainCtrlません。前の行にエラーがあるので、大きな驚きではありません。 ただし、に変更ngするとangular、undefinedエラーは発生せずapp.controllerに呼び出されますが、console.logfromMainCtrlはまだ呼び出されません。
私の唯一の推測は、angular が 2 回縮小されていることです (既に angular.min.js を使用してから、r.js再度縮小しています)。この問題を解決するために何かできることはありますか?