在子目录中开发Angular应用程序

4

我是否有办法配置ng-serve命令,使其在根目录下提供静态html文件,在子目录中提供angular应用程序?


我正在开发一个Angular 2应用程序,基于SEO原因,我想将实际应用程序托管在子目录中,同时从根目录提供静态页面。就像这样:

./
    About.html
    Home.html
    Contact.html
    /app
       app.html //Angular app goes here

我发现了ng build --base-href <base>命令,它可以创建一个生产版本的Angular应用程序,该应用程序可以存在于<base>子目录中,但这意味着我必须单独开发Angular应用程序,然后将输出导入到我的最终项目中。我希望有一个Angular-CLI的解决方案,但我也愿意接受任何想法。
1个回答

7
正如您所了解的,ng build --base-href <base>选项允许您创建一个生产版本的应用程序,该应用程序知道如何从您网站的<base>目录正常工作。这是谜题的一部分——配置Angular能够从服务器的非根文件夹运行。
第二步是配置您的Angular CLI设置,使您的构建文件位于正确的位置。现在,您可以手动完成此操作——将ng-cli应用程序放在完全不同的文件夹中,在构建后将来自Angular应用程序的/dist文件夹中的工件复制到您的网站目录结构中。这是手动完成的方法。在此上下文中,您angular应用程序中的/dist文件夹中的项目基本上是Web服务器的静态内容,并且可以像这样处理。
但是,另一种选择是查看您的angular-cli.json并根据需要更改apps [0] .outDir配置选项。outDir选项指定要放置ng build命令的输出的位置。默认情况下,它设置为/dist,但可以更改为任何需要的内容。
因此,例如,如果我有以下结构:
./public
    About.html
    Home.html
    Contact.html
    /app
       app.html //Angular app BUILD OUTPUT goes here
/angular-app  // Angular app source code

我可以将我的 Angular 应用程序的 `angular-cli.json` 配置成指向 `../public/app` 的 `outDir`。
也就是说,在 `angular-cli.json` 文件中:
app: [ {
  "root": "src",
  "outDir": "../public/app",
  ......
} ]

2
啊,我想我明白了。我可以在/angular-app目录中开发Angular应用本身。然后,当我想要在更大的网站上下文中测试应用程序时,我可以将其构建到正确的目录,并运行一个节点服务器来服务所有路由。感谢您的帮助! - Jesse Sliter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接