【发布时间】:2019-08-27 12:54:02
【问题描述】:
我正在用 Angular 开发一个网站。这个应用程序分为两部分:客户端部分和管理员部分。后者可通过登录屏幕访问。 这个机制的核心是通过这两个文件来完成的:
main.ts:
import {enableProdMode} from '@angular/core';
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {AppModule} from './app/app.module';
import {environment} from './environments/environment';
import {AdministrationModule} from "./administration/administration.module";
if (environment.production) {
enableProdMode();
}
if (window.location.href.indexOf("admin") != -1) {
platformBrowserDynamic().bootstrapModule(AdministrationModule);
}
else {
platformBrowserDynamic().bootstrapModule(AppModule);
}
index.html:
<!doctype html>
<html lang="it">
<head>
<meta charset="utf-8">
<title>MyWebsite</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="icon.ico">
</head>
<body>
<app-root></app-root>
<app-administration></app-administration>
</body>
</html>
基本上,如果我正常指向网站http://mywebsite.com,我将上传客户端部分,而使用http://mywebsite.com/admin,我将使用登录屏幕加载管理部分。
我的问题是,如果我使用这些命令编译应用程序,一切正常:ng build 或 ng serve
而当我编译它进行生产时它不起作用:
ng build --prod
我现在有两个问题:这是一个角度错误吗?简单地使用ng build 而不是ng build --prod 命令投入生产是否可靠?我已经用ng build(在生产中)进行了测试,一切正常。
啊,一件事:在编译过程中出现以下警告:
延迟路由发现中的警告未启用。因为有 既不是 entryModule 也不是静态可分析的引导代码 主文件。
【问题讨论】:
-
我的假设是因为在执行
--prod时它使用aot而ng serve和ng build使用jit -
好吧……而且……为什么会有一些不同?
-
Ahead-of-Time (AOT),在构建时编译您的应用程序。即时 (JIT),在运行时在浏览器中编译您的应用程序。
-
@penleychan 是的,我知道。但它们之间的本质区别在哪里?为什么即时编译器工作正常而 AOT 没有?无论如何谢谢你
标签: angular production