Разработка без backend. Отключение mock-данных для production

147
12 сентября 2019, 23:50

Для целей разработки без зависимости от 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>

Answer 1

Используйте переменную окружения process.env.NODE_ENV.

if (process.env.NODE_ENV !== "production") {
  // init your angular-mock
}
READ ALSO
Invalid left-hand side expression in postfix operation at HTMLInputElement.&lt;anonymous&gt;

Invalid left-hand side expression in postfix operation at HTMLInputElement.<anonymous>

Как исправить код что бы он работал? Выдаёт ошибку Invalid left-hand side expression in postfix operation at HTMLInputElement<anonymous>

148
как в vscode редактировать выпадающее меню подсказок (картинка внутри) или как добавить свои сниппеты

как в vscode редактировать выпадающее меню подсказок (картинка внутри) или как добавить свои сниппеты

Как поменять местами выпадающее меню 1-е(создает только слово) со 2-м (создает function name(){})Или как удалить 1 значение

137
Как узнать атрибут input max в JavaScript?

Как узнать атрибут input max в JavaScript?

Как получить значение input max в JavaScript?

110