如何在Angular 2中启用生产模式
我是Angular2的新手,我正在阅读已解决的问题,并且发现了这个问题
Angular2方法绑定错误:“值被检查后发生了变化”
这是非常有趣的,但是我的问题是我怎么能从开发转向生产呢,就是在看完这个问题之后才有了分歧
Angular2的生产和开发模式有什么区别?
我search,但没有发现任何可以指示的模式,以及你必须指示模式(开发)或模式(生产)。
在控制台我可以看到....Call enableProdMode() to enable the production mode.
但在System.config({
或在组件类中。
是否需要特定的导入?
通过导入和执行函数(在调用bootstrap之前)启用它:
import {enableProdMode} from '@angular/core'; enableProdMode(); bootstrap(....);
但是这个错误是指示你的绑定有什么问题,所以你不应该把它解雇掉,而是试着弄清楚为什么会这样。
这对我来说,使用最新版本的Angular 2(2.0.0-rc.1):
main.ts
import {enableProdMode} from '@angular/core'; enableProdMode(); bootstrap(....);
以下是他们的文档中的函数参考: https : //angular.io/api/core/enableProdMode
为Angular 2应用程序启用生产模式的最佳方法是使用angular-cli并使用ng build -prod
构build应用程序。 这将生成生产configuration文件的应用程序。 使用angular-cli的好处是能够在开发的同时使用ng serve
或ng build
开发模式而不必一直改变代码。
当我使用angular-cli构build一个新项目时。 包含一个名为environment.ts的文件。 在这个文件里面有一个像这样的variables。
export const environment = { production: true };
然后在main.ts你有这个。
import './polyfills.ts'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { enableProdMode } from '@angular/core'; import { environment } from './environments/environment'; import { AppModule } from './app/'; if (environment.production) { enableProdMode(); } platformBrowserDynamic().bootstrapModule(AppModule);
你可以把它添加到一个非angular-cli项目中,我假设,因为enableProdMode()是从@ angular / core导入的。
对于那些没有切换到TypeScript的升级path,使用:
ng.core.enableProdMode()
对我来说(在JavaScript中)这看起来像:
var upgradeAdapter = new ng.upgrade.UpgradeAdapter(); ng.core.enableProdMode() upgradeAdapter.bootstrap(document.body, ['fooApp']);
转到src/enviroments/enviroments.ts
并启用生产模式
export const environment = { production: true };
为Angular 2
我的Angular 2项目没有“main.ts”文件提到其他的答案,但它有一个“ boot.ts ”文件,这似乎是大约相同的事情。 (差异可能是由于Angular的不同版本。)
在“boot.ts”中的最后一个import
指令之后添加这两行代码适用于我:
import { enableProdMode } from "@angular/core"; enableProdMode();
您不需要任何environment.ts文件或您的种子项目提供的文件。 只需要一个configuration.ts并添加所有需要运行时决定的条目(例如: – 日志loggingconfiguration和url)。 这将适合任何devise结构,也有助于未来
configuration.ts
export class Configuration { isInProductionMode : bool = true; // other configuration serviceUrl : string = "http://myserver/myservice.svc"; logFileName : string = "..."; }
//现在在你的启动代码中使用(main.ts或类似的项目devise
import { Configuration } from './configuration'; import { enableProdMode } from '@angular/core'; .... if (Configuration.isInProductionMode) enableProdMode();