#service #factory
#Обслуживание #фабрика
Вопрос:
Я пытаюсь найти реальную разницу, когда мне нужно использовать фабрику или сервис, но я всегда нахожу в примерах то же самое, что и:
a) This is the way to create the "i18n" service...
b) This is the way to create the "i18n" factory...
Это все равно, что поместить один и тот же код в разном порядке, чтобы делать одно и то же. Поэтому я всегда спрашиваю себя: в чем реальная разница, если я могу сделать то же самое?
И еще одна проблема заключается во множестве руководств, в которых люди придают различное значение каждому термину, так что теперь я в замешательстве.
Итак, я спрашиваю:
- В чем смысл сервиса?
- Что означает фабрика?
- В чем разница между сервисом и фабрикой?
- Когда мне нужно использовать сервис?
- Когда мне нужно использовать фабрику?
Спасибо!
Ответ №1:
1. Что означает сервис?
2. Что означает фабрика?
Значение сервиса и фабрики одинаковое, т.Е. Они являются функциями javascript и отвечают за выполнение определенной задачи. Служба Angular Service и служба Angular Factory — это способы, с помощью которых мы можем создать службу Angular, и в зависимости от потребностей приложения мы можем использовать любой из них.
3. В чем разница между сервисом и фабрикой?
В сервисном сервисе функция действует как конструктор, и вам не нужно инициализировать и возвращать переменную, сервис автоматически делает это за вас.
myApp.service("LoginService", function () {
this.login = function (username, password) {
this.isLogged = true;
}
})
и в контроллере вы можете получить доступ к сервису, используя приведенный ниже код-
LoginService.login($scope.form.Username, $scope.form.Password);
$scope.loggedMessage = LoginService.isLogged;
В то время как на заводе вы должны явно инициализировать объект и вернуть его, как показано ниже
myApp.factory("LoginFactory", function () {
var obj = {};
obj.login = function(username,password){
obj.isLogged = true;
return obj;
}
return obj;
})
и в контроллере вы можете получить доступ к фабрике, используя приведенный ниже код-
var obj = LoginFactory.login($scope.form.Username, $scope.form.Password);
$scope.loggedMessage = obj.isLogged;
4. Когда мне нужно использовать сервис?
Его следует использовать для простой логики. Он используется для регистрации функции, которая будет использоваться в качестве конструктора объекта. Например, — используйте сервис для сохранения учетных данных пользователя в объекте.
5. Когда мне нужно использовать фабрику?
Фабрика возвращает экземпляр объекта, и с помощью этого объекта вы можете получить доступ к функциям фабрики. Например, у вас есть MathFactory с функциями Add, Subtract, Multiply.