使用外部代码的最佳做法是什么,例如在节点模块中找到的代码,有角度吗?
我想在我的角应用中使用这个https://www.npmjs.com/package/positionsizingcalculator节点模块。我已经创建了一个用于包装节点模块的角度服务,现在我想让服务使用节点模块。
'use strict';
angular.module('angularcalculator')
.service('MyService', function () {
this.calculate = function () {
return {
//I want to call the node module here, whats the best practice?
};
}
});
答案 0 :(得分:5)
要做到这一点,我会打开包装并从中抓取.js。这个包是MIT许可证,所以我们可以做任何我们想做的事情。如果您导航到/node_modules/positionsizingcalculator/
,则会找到index.js
。打开它,你会看到moudle导出,它带有一个返回一个对象的函数。
您会注意到这是一个与.factory
非常相似的模式,它还会返回一个返回对象(或构造函数,取决于您的模式)的函数。所以我要做以下
.factory('positionsizingcalculator', function(){
basicValidate = function (argument) {
... //Insert whole declaration in here
return position;
})
并将其注入您需要的地方:
.controller('AppController', function(positionsizingcalculator){
//use it here as you would in node after you inject it via require.
})
- 编辑:这对于JS的一次攻击很有用,但是如果你想要一个更具扩展性的解决方案,http://browserify.org/是一个更好的选择。它允许您将需求转换为单个包。请注意,如果您为整个站点制作一个需要的捆绑包,这可能会导致您需要更多的代码,因为这不是真正的AMD,并且您需要加载您可能想要的所有客户端,除非你制作特定于页面的包。
您仍然希望在factory
中执行require并将其返回,以将其保留在角度的依赖注入框架中。