我正在计划一个理想情况下我希望与Angular保持分离的应用程序,因此所有dom交互都将进入Angular层,但核心业务逻辑将保存在一个完全没有意识到的独立应用程序中角。两者将通过Angular服务进行通信,这些服务能够将消息发送到核心应用程序。
独立应用程序很可能会使用requirejs来处理依赖注入。
我不确定的是如何获得可能被声明的模块:
define('AppInteractor', ['require'], function(requre){
// Set up interactor functionality
});
进入Angular服务。
我的第一个就是要有这样的适配器:
define(['AppInteractor', 'angular'], function(interactor, angular) {
var app = angular.module('appInteractor', []).service('AppInteractor', interactor);
});
这会将AppInteractor注册为角度模块中的服务,这种方法的问题似乎是因为requirejs异步加载事物,当角度代码运行时尚未设置服务。它似乎最终会出现角加载两次,这可能也无济于事。
我已经看过一些文章,涵盖了通过require加载所有Angular组件,但我希望可能有更简单的方法来完成这项工作。
有人可以推荐我如何使这项工作?
答案 0 :(得分:0)
如果您要在主模块初始化后添加服务,我建议您将其添加到您的应用程序模块
define(['AppInteractor', 'angular'], function(interactor, angular) {
// There is no second parameter, because we are getting an existing
// module, not creating a new one.
var app = angular.module('appModule');
app.service('AppInteractor', interactor);
});
否则,如果要将所有其他逻辑分组到不同的模块中,则需要导入模块并将其添加为应用程序模块的要求。
define(['AppInteractorModule', 'angular'], function(interactorModule, angular) {
var app = angular.module('appModule', [interactorModule.name]);
});
我还建议您使用ES6(6to5,traceur),browserify或Typescript等工具进行模块管理,然后编译到AMD。我觉得开发更简单,更清洁。