【问题标题】:Angular Universal Production Build ProcessAngular 通用生产构建过程
【发布时间】:2021-05-11 01:26:43
【问题描述】:

我正在使用 Angular Universal 10,我想预渲染我的网站。

我对生产环境的正确构建过程感到困惑。

Angular 给出了这两个命令:

"build:ssr": "ng build --prod && ng run my-app.spa:server:production",
"prerender": "ng run my-app.spa:prerender"

仅仅这样做就足以获得生产就绪的输出了吗?

npm run prerender

或者我需要同时运行这两个?

npm run build:ssr
npm run prerender

有什么区别?

【问题讨论】:

    标签: angular angular-cli server-side-rendering angular-universal angular10


    【解决方案1】:

    要了解这两个命令之间的区别,请运行一个并查看编译后的输出。

    第一个命令npm run build:ssr 会将您的网站编译成一个可以使用 NodeJS Express 应用程序提供服务的文件,正如您在server.ts 中看到的那样。这样你仍然只有一个 index.html 文件,但是根据你的路由,universal 会为该路由提供一个渲染的 html 文件到浏览器。所以,你在服务器上渲染,服务器端渲染

    第二个命令npm run prerender 将使用server.ts 来“预渲染”每条带有自己单独的index.html 文件的路由,所有这些都根据您的路由放置在一个目录结构中。编译后的代码看起来像一个传统的静态网站。因此,您在部署之前进行渲染,预渲染

    那么哪个最适合你?

    build:ssr

    • 优点:如果内容是动态创建的,则无需重新部署
    • 缺点:服务器必须始终运行可靠且快速的 NodeJS 进程。好消息是有很多方法可以做到这一点,例如无服务器功能、应用引擎等。

    prerender

    • 优势:您的应用可以托管在常规的 http 服务器上
    • 缺点:添加新内容页面时可能需要重新部署

    This post on Medium 有一个很好的概述和更详细的信息。

    【讨论】:

    • 所以 prerender 命令确实构建了生产就绪输出,对吗?另外,如果一个页面没有被预渲染,那么它仍然会被通用引擎提供服务吗?
    • 是的,如果您的 angular.json 指定,它将是一个生产版本。我认为 prerender 默认设置为 prod 。如果您从预渲染中查看已编译的 .html 文件,您可能不会将每条路由都视为单独的文件。没关系,这意味着您的某些路由是动态的,并且通过 SPA 功能,预渲染的构建仍将具有这些页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2020-05-07
    • 2019-06-22
    • 2019-09-01
    • 2018-03-01
    • 2018-03-16
    • 1970-01-01
    相关资源
    最近更新 更多