gpt4 book ai didi

angular - 如何为其他地方加载的 Angular 应用程序捆绑 Assets

转载 作者:太空狗 更新时间:2023-10-29 17:45:56 26 4
gpt4 key购买 nike

对于最终构建为的 Angular 7 应用程序

- main.js
- assets
-- assets/img

使用引用 Assets 的组件/html

src='./assets/img/img1.jpeg'

应用程序将提供给不同的团队,并且可以托管在不同的根上

example.com/route/first
example2.com/route/second

如果消费者将我的构建内容称为 <script src=''../some-dir/libs/main.js">

Angular 应用程序将查看当前路径以查找 Assets (example.com/route/first/assets),这将迫使它们复制粘贴我提供给它们根目录的 Assets 文件夹。 我想如果我的组件可以在与我的构建内容 ('../some-dir/libs/asset') 相关的位置而不是他们的目录根目录中查找我的 Assets ,那么对客户来说会简单得多。但是我不太确定我期望的是行业标准还是合适的

我如何通过提取和引用/导入我的构建内容来正确构建/捆绑/引用消费者可以在任何地方使用的 Assets ?(我不需要知道消费者的项目结构,消费者也不需要改变我/他的文件夹结构)

最佳答案

只需在应用中使用相对 url,如下所示:

<img src='./assets/img/img1.jpeg' />

如果您知道根上下文在哪里,请使用 base-hrefdeploy-url 参数构建您的应用,如下所示:

ng build --prod --base-href=/route1/ --deploy-url=/route1/

如果您需要部署到不同的根上下文,请更改参数值并重新构建。

但如果您不知道部署根上下文,B 计划是:

app-routing.module.ts 中的 useHash 更改为 true

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 { }

并将index.html中的base href改为./,

<head>
<base href="./">
</head>

不要ng build中添加base-hrefdeploy-url参数,这样你就可以将您的应用程序部署到任何网络根目录。但是 url 将以 /{webroot}/#/{client-route}

结尾

关于angular - 如何为其他地方加载的 Angular 应用程序捆绑 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55255390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com