对于最终构建为的 Angular 7 应用程序
- main.js
- assets
-- assets/img
Run Code Online (Sandbox Code Playgroud)
使用引用资产的组件/html
src='./assets/img/img1.jpeg'
Run Code Online (Sandbox Code Playgroud)
该应用程序将提供给不同的团队,并且可以托管在不同的根上
example.com/route/first
example2.com/route/second
Run Code Online (Sandbox Code Playgroud)
如果消费者将我的构建内容称为
<script src=''../some-dir/libs/main.js">
Angular 应用程序将查看当前路径以查找资产(example.com/route/first/assets),这将强制他们将我提供的资产文件夹复制粘贴到其根目录。我想如果我的组件可以在相对于我的构建内容 ( '../some-dir/libs/asset')的位置而不是它们的目录根目录中查找我的资产,那么对于客户来说会简单得多。但是我不太确定我的期望是否符合行业标准或适当
如何通过提取和引用/导入我的构建内容来正确构建/捆绑/引用消费者可以在任何地方使用的资产?(我不需要知道消费者的项目结构,消费者也不需要改变我/他的文件夹结构)
只需在应用程序中使用相对网址,如下所示:
<img src='./assets/img/img1.jpeg' />
Run Code Online (Sandbox Code Playgroud)
如果您知道哪里有根上下文,建立与您的应用程序base-href和deploy-url参数如下:
ng build --prod --base-href=/route1/ --deploy-url=/route1/
Run Code Online (Sandbox Code Playgroud)
如果您需要部署到不同的根上下文,请更改参数的值并重新构建。
但是如果您不知道部署根上下文,则计划 B 是:
更改useHash到true在app-routing.module.ts
const routes: Routes = [/* your routes goes here */];
@NgModule({
imports: [
RouterModule.forRoot(routes, {
useHash: true, // change useHash to true
enableTracing: !environment.production
})
],
exports: [RouterModule]
})
export class AppRoutingModule { }
Run Code Online (Sandbox Code Playgroud)
并将base hrefin更改index.html为./,
<head>
<base href="./">
</head>
Run Code Online (Sandbox Code Playgroud)
不要添加base-href和deploy-url参数 with ng build,然后您可以将您的应用程序部署到任何网络根目录。但网址将以/{webroot}/#/{client-route}
| 归档时间: |
|
| 查看次数: |
6150 次 |
| 最近记录: |