And*_*rit 5 angular-cli angular nrwl
我有一个带有子模块的主模块,最初我想让这些模块预先加载,所以我做了什么:
第一次尝试 - 急切加载
import {DashboardModule} from './module/dashboard/dashboard.module';
export const _dashboardModule = () => DashboardModule;
export const routes: Routes = [
{
path: '',
children: [
{
path: 'dashboard',
loadChildren: _dashboardModule
}
]
}
];
Run Code Online (Sandbox Code Playgroud)
在我开始使用 aot 编译构建 prod 之前,它对我来说很好用。在那一刻,我遇到了这里提到的问题:https : //github.com/angular/angular-cli/issues/4192
第二次尝试 - 延迟加载
根据我上面链接的票证,我开始使用模块的字符串路径,例如
loadChildren: './path/to/module/dashboard.module#DashboardModule'
Run Code Online (Sandbox Code Playgroud)
为每个模块生成单独的包。对于构建,我使用了 angular-cli 命令
ng build --output-path=../my/ouput/path --prod --aot --output-hashing none --vendor-chunk
Run Code Online (Sandbox Code Playgroud)
因为我的应用程序是庞大的现有应用程序的一部分,所以我不能使用生成的应用程序,index.html但我使用.ftl文件,我指定从哪里加载所有脚本,如下所示:
<body>
<my-app></my-app>
<script src="<@versionedUri src="${base}/path/to/file/runtime.js"/>"></script>
<script src="<@versionedUri src="${base}/path/to/file/polyfills.js"/>"></script>
<script src="<@versionedUri src="${base}/path/to/file/styles.js"/>"></script>
<script src="<@versionedUri src="${base}/path/to/file/vendor.js"/>"></script>
<script src="<@versionedUri src="${base}/path/to/file/main.js"/>"></script>
</body>
Run Code Online (Sandbox Code Playgroud)
如果您尝试延迟加载,这是一个问题,因为我的构建的输出文件位于不同的文件夹中,那么我.ftl使用的文件而不是index.html问题是,当您在浏览器中打开应用程序时,它尝试从所在的同一文件夹加载块,.ftl并且它们那里不存在。
我的问题是:
children: dashboardRoutes生成延迟加载块(和所有其他.js脚本)的路径在angular.json 文件中指定,@ (projects: < projectName >: Architect: options:) outputPath: < your-output-path > ...
我自己遇到了麻烦,让 Angular 应用程序在这个位置寻找块,它似乎在根(baseUrl)寻找它。
我的情况与 OP 类似,将 Angular 应用程序嵌入到 .NET MVC5 应用程序中,因此不是使用 Angular 生成的 index.html,而是“服务”应用程序的文件是 MVC Home/Index 视图。我的Index.cshtml文件看起来与 OP 的.ftl文件非常相似……我的困惑是如何告诉 Angular 应用程序在 outputPath 位置查找块?
小智 5
我也有类似的情况,帮助的是将部署 url 添加到我的 angular.json 中。赫尔曼特·贾恩 (Hermant Jain) 的评论很有帮助。我只是添加这个答案来指定在 angular.json 中添加此设置的位置。
在 angular.json 中遵循以下路径:
项目 -> 您的项目 -> 架构师 -> 构建 -> 选项 -> deployUrl
另一种不指定的方法是将其作为参数传递,如下所示:
ng build --watch --deploy-url /dist/
Run Code Online (Sandbox Code Playgroud)
这样,我的块就会从 myWeb/dist/ 加载
| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |