Ionic “enableProdMode()”和“build --prod”是否等效?

q3aa0525  于 2023-08-01  发布在  Ionic
关注(0)|答案(4)|浏览(159)

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

t98cgbkg

t98cgbkg1#

--prod标志触发--environment=prod标志(以及其他)。这意味着在编译期间使用在.angular-cli.jsonenvironments数组中定义为prod的环境文件。
如果你有默认的main.ts,这将意味着它运行enabledProdMode()。因为他们用这个来触发它:

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

字符串
并且在环境文件中,production属性被设置为true

pxy2qtax

pxy2qtax2#

ng build --prodng build --configuration=production的简写。作为其中的一部分,构建过程将引用您的angular.json文件,特别是在这种情况下的“configurations”部分:

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

字符串
在环境中,prod.ts如下(默认情况下):

export const environment = {
  production: true
};


如果你查看你的main.ts文件,你会看到下面的代码(同样是默认的):

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


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

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

source

cxfofazt

cxfofazt3#

但请记住,如果你这样做:

ng build --env=dev --prod

字符串
那么来自生产嫉妒的标志将被覆盖。我检查了它,因为我仍然有问题的性能,尽管使用--prod标志的非prod嫉妒。这在构建演示、基准构建等时非常重要。

相关问题