[英]Angular services and browserify
我正在使用AngularJS作为SPA,我使用browserify来构建我的应用程序。 现在问题是我们是否应该以经典方式编写Angular服务,或者只是require
它们。
由于Angular服务是单例,因此也可以通过require
轻松完成:只需公开一个对象文字就可以了。 工厂也是可能的,只需公开一个功能。 等等 ...
我目前可以想到的唯一缺点是我无法从这样的文件(例如, $http
)访问其他真正的 Angular服务,但是在后台使用browserify这似乎并不那么重要。 例如,由于browserify,您可以轻松地使用Node.js的http
模块。
那你觉得怎么样? 这有什么其他优点和缺点?
PS:请注意,我不是要问这是好还是坏,因为这可能主要是主观的。 我很感兴趣哪些机会出现,或者我必须面对哪些风险。
这样做的一个缺点是编写单元测试。 如果您只是要求它们而不是使用Angular的依赖注入,那么很难模拟您的依赖项。
这对我来说有点破坏性,因为使用Angular的许多好处之一是框架的可测试性。
这不好。
只需使用browserify初始加载您需要的所有模块。
我在角度应用程序中使用browserify / webpack / requirejs的唯一方法是两件事:
就个人而言,这种方法只是一种毫无意义的复杂问题。
如果你需要像$http
这样的东西,你将无法在测试过程中注入这些服务的虚拟/模拟。
虽然地方,你会做你的超级骗子的服务之间需要的配线 $http
和地方你需要它。
我想到的第一件事就是路线上的左轮手枪。 您甚至可以使用一些辅助方法来处理多次声明相同的依赖项。
想象一下这个模块:
function SuperResource($http, pathExpression) {}
exports.SuperResource = SuperResource;
exports.superResourceFactory = function(pathExpression) {
return [
'$http',
function() {
return new SuperResource($http, pathExpression);
}];
};
你会做的地方:
var myModule = require('./myModule.js');
resolvers: {
usersResource: myModule.superResourceFactory('/users')
}
甚至你可以拥有一个定义用户资源的用户模块:
var myModule = require('./myModule');
exports.userFactory = ['$http', function() {
return new myModule.SuperResource($http, pathExpression);
}
是的,这些是特定角度的自由代码中的角度特定助手,但至少它们是以自己的方法/名称隔离的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.