Для целей разработки без зависимости от backend подключен angular-mock.
Прошу поделится опытом подключения\отключения angular-mock
в зависимости от production или development.
Сборщик - webpack. Но готов рассмотреть любые идеи и предложения.
UPD.
Преположим, что при сборке проекта мы передали process.env.NODE_ENV
из nodejs в код нашего приложения. Например, с помощью такого кода:
module.exports = {
//...
plugins:[
new webpack.DefinePlugin({
'process.env':{
'NODE_ENV': process.env.NODE_ENV
}
}),
// [...]
]
//...
}
Остается вопрос, как исключить достаточно объемные файлы с mock-данными из финального bandle (мы ведь все боремся за снижение размеров нашего приложения). И если "переключить" источник данных для запросов к backend получается (спасибо @AlexandrTovmach). То уменьшить размер финального bandle пока нет.
angular.module('userModule', ['userModuleMock'])
.factory('userService', userService);
userService.$inject = ['$http'];
function userService($http) {
return {
getAll: function() {
return $http.get('/api/v1/users');
}
};
}
angular.module('userModuleMock', ['ngMockE2E'])
.run(userServiceMock);
userServiceMock.$inject = ['$httpBackend'];
function userServiceMock($httpMock) {
var users = [
{
name: 'John'
},
{
name: 'Mary'
}
];
$httpMock.whenGET('/api/v1/users').respond(users);
}
angular.module('app', ['userModule'])
.controller('appController', appController);
appController.$inject = ['userService'];
function appController(userService) {
userService.getAll()
.then(function(response) {
console.log(response.data);
})
.catch(function(err) {
throw err;
});
}
angular.bootstrap(
document.getElementById('root'),
['app']
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<script src="https://unpkg.com/angular-mocks@1.7.6/angular-mocks.js"></script>
<div id="root">
<div ng-controller="appController"></div>
</div>
Используйте переменную окружения process.env.NODE_ENV
.
if (process.env.NODE_ENV !== "production") {
// init your angular-mock
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как исправить код что бы он работал? Выдаёт ошибку Invalid left-hand side expression in postfix operation at HTMLInputElement<anonymous>
Как поменять местами выпадающее меню 1-е(создает только слово) со 2-м (создает function name(){})Или как удалить 1 значение