Использование модуля узла в angularjs?
Как лучше всего использовать внешний код, например код, найденный в модулях узла, в угловом формате?
Я хотел бы использовать этот узел 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?
};
}
});
1 ответ
Для этого я бы взломал пакет и вытащил из него.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
и вернуть его, чтобы сохранить его в структуре внедрения зависимостей angular.