【发布时间】:2015-08-18 09:17:54
【问题描述】:
我正在开发一个基于 mean.js 样板的应用程序。
在我的一个 Angular 控制器中,我需要“知道”应用程序是在开发、测试还是产品中运行。
当托管 Node 应用启动时,这通过 NODE_ENV 环境变量指示,因此 Node 知道它在哪里运行。
如何将这些知识传递到应用程序的 Angular 部分?
【问题讨论】:
标签: javascript angularjs node.js mean-stack meanjs
我正在开发一个基于 mean.js 样板的应用程序。
在我的一个 Angular 控制器中,我需要“知道”应用程序是在开发、测试还是产品中运行。
当托管 Node 应用启动时,这通过 NODE_ENV 环境变量指示,因此 Node 知道它在哪里运行。
如何将这些知识传递到应用程序的 Angular 部分?
【问题讨论】:
标签: javascript angularjs node.js mean-stack meanjs
如果您在后端有这方面的知识,为什么不创建一个端点,您可以在 AngularJS 中调用 run 方法。虽然我不知道您的后端实现的细节,但您肯定可以返回一个代表此信息的变量。你可以简单地制作类似下面的东西......
app.run(['$rootScope', '$http', function ($rootScope, $http) {
$http.get('/yourEndoint').success(function(response) {
$rootScope.whereAmI = response.whereAmI;
});
}]);
wereAmI 是您从后端返回并返回到此调用的某个值。如果您将其放在 $rootScope 上,所有其他 $scope 将继承此值,因此您将了解应用程序范围内的“您所在的位置”。
有关run 函数的更多信息,请查看AngularJS module docs
Run 块是 Angular 中最接近 main 方法的东西。一次跑步 block 是启动应用程序需要运行的代码。它 在所有服务都已配置并且 注射器已创建。运行块通常包含以下代码 难以进行单元测试,因此应该单独声明 模块,以便在单元测试中可以忽略它们。
【讨论】:
就我而言,我使用 gulp/grunt 构建任务来选择请求的config.js 文件(即production.config.js)。然后,您可以在运行构建任务时使用npm args 之类的东西来设置--env=production 或--env=development 变量,然后gulp/grunt 任务使用该变量来获取请求的配置文件。
那么您的实际配置文件将只是一个 angular.constant(...) 组件,其中包含用于您的应用程序的设置。
【讨论】: