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.log
forを取得します。次に、からforを取得します。問題はありません。ng
angular
console.log
$scope
MainCtrl
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.log
fromMainCtrl
はまだ呼び出されません。
私の唯一の推測は、angular が 2 回縮小されていることです (既に angular.min.js を使用してから、r.js
再度縮小しています)。この問題を解決するために何かできることはありますか?