是enableProdMode();和build -prod是等价的吗?

时间:2017-06-27 13:43:39

标签: angular ionic-framework ionic2

我有一个愚蠢的问题。我想知道如何加快我的应用程序。在大多数情况下,流行的是在构建期间使用--prod标志。但我也找到了一个建议,以启用Angular生产模式 enableProdMode();中的main.ts。这些行为是否相同并触发相同的机制?

3 个答案:

答案 0 :(得分:2)

--prod标志触发--environment=prod标志(以及其他内容)。这意味着在编译期间使用prod environments数组中定义为.angular-cli.json的环境文件。

如果你有默认的main.ts,这确实意味着它会运行enabledProdMode()。因为他们用它来触发它:

if (environment.production) {
    enableProdMode();
}

并在环境文件中production属性设置为true

答案 1 :(得分:0)

但是请记住,如果您执行以下操作:

ng build --env=dev --prod

然后,生产环境羡慕的标志将被覆盖。我检查了它,因为尽管在非prod envy上使用了--prod标志,但我仍然遇到性能问题。在构建演示,基准测试构建等时,这一点很重要。

答案 2 :(得分:0)

ng build --prodng build --configuration=production的简写。在此过程中,构建过程将引用您的angular.json文件,在这种情况下,尤其是“配置”部分:

"configurations": {
    "production": {
        "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.prod.ts"
            }
         ],
         ...

在environment.prod.ts中为以下内容(默认情况下):

export const environment = {
  production: true
};

如果您随后查看自己的main.ts文件,则会看到以下代码(同样,默认情况下):

if (environment.production) {
  enableProdMode();
}

因此,如您所见,ng build --prod将启用产品模式。启用prod模式将禁用某些验证,从而加快了代码的速度。使用生产配置运行时,附加的构建过程还将执行以下操作(同样,默认情况下):

  • Ahead-of-Time (AOT) Compilation:预编译Angular组件模板。
  • Production mode:部署启用生产模式的生产环境。
  • 捆绑:将您的许多应用程序和库文件合并为几个捆绑。
  • 缩小:删除多余的空格,注释和可选标记。
  • 丑陋化:重写代码以使用简短的,隐秘的变量和函数名。
  • 消除死代码:删除未引用的模块和大量未使用的代码。

source