Определить в функции require (requireJS)
(С использованием requireJS, angularJS, angularAMD)
Когда в моем файле main.js у меня есть:
require.config({
baseUrl: "js",
paths: {
'angular': 'libs/angularjs/angular.min',
'angularAMD': 'libs/angularjs/angularAMD.min'
},
shim: {
'angularAMD': ['angular']
}
});
define(['angularAMD'], function (angularAMD) {
var app = angular.module("app", []);
app.controller("testCtrl", function ($scope) {
$scope.message = "udało się!";
});
angularAMD.bootstrap(app);
return app;
});
все отлично работает Но когда я вырезал часть конфигурации в другой файл, я получил ошибки:
main.js:
require(['common'], function (common) {
define(['angularAMD'], function (angularAMD) {
var app = angular.module("app", []);
app.controller("testCtrl", function ($scope) {
$scope.message = "udało się!";
});
angularAMD.bootstrap(app);
return app;
});
});
common.js
require.config({
baseUrl: "js",
paths: {
'angular': 'libs/angularjs/angular.min',
'angularAMD': 'libs/angularjs/angularAMD.min'
},
shim: {
'angularAMD': ['angular']
}
});
Могу ли я использовать функцию define в require? Если нет, то как сначала включить общий конфиг, а затем использовать определение?
1 ответ
Я предполагаю, что ваш main.js
файл - это то, что вы даете data-main
атрибут на <script>
тег, который загружает RequireJS или является главной точкой входа вашего приложения. + Изменить main.js
к этому:
require(['common'], function (common) {
require(['app']);
});
И создать app.js
Модуль в месте, где ваш код может легко загрузить его:
define(['angularAMD'], function (angularAMD) {
var app = angular.module("app", []);
app.controller("testCtrl", function ($scope) {
$scope.message = "udało się!";
});
angularAMD.bootstrap(app);
return app;
});
Все, что требует доступа к значению app
вы создаете в этом модуле может просто потребовать app
модуль.
Код в вашем вопросе определяет модуль, но делает это асинхронно. Ко времени звонка define
случается, RequireJS уже закончил загрузку main
, Что касается этого, main
готово. Так какое имя он должен дать определенному модулю?