【问题标题】:Angular2 deploying to production environment questionsAngular2部署到生产环境问题
【发布时间】:2016-04-06 21:59:25
【问题描述】:

将angular2 web项目放到生产环境的一些问题

  1. 我们在 lite 服务器上进行开发,但什么最适合生产?是nodejs 的其他服务器模块吗?从技术上讲,我们可以拥有任何服务器(apache、tomcat 等)。
  2. 我们应该如何对以下上下文进行源代码管理。
    • 浏览器必须包含 js 文件,因此项目在部署时应该有 js 文件
    • 在标准 java 项目中,我们只需提交 .java 文件并使用 jenkins(可能是其他工具)编译并制作可部署的结构
    • 我们应该在这里遵循相同的策略吗?即不要提交已编译的 js 文件并使用一些 node 编译器进行部署,该编译器采用 ts 文件并将其编译为 js
  3. 缩小/混淆 js 文件的最佳方法是什么
    • 我知道一种将outDiroutFilegrump 结合使用的方法,但我不希望每个文件都包含在一个缩小的文件中,因为它扼杀了延迟加载的概念
    • 有没有办法仅在编译时压缩和混淆 js 文件?
  4. enableProdMode() 做什么?与不使用有何不同?

【问题讨论】:

  • 无法评论以上所有内容,但我从 lite-server 更改为 express,这是一个非常容易的过渡。使用 node,您可以随时编写自己的服务器,而无需使用 node 模块。

标签: node.js angular


【解决方案1】:

以下是您问题的一些答案:

  1. Angular2 应用程序仅包含静态文件,因此它们可以由任何静态 Web 服务器或可以定义静态文件夹(Express、...)的服务器应用程序提供服务

  2. 关于源代码管理,您必须有一个打包阶段来优化应用程序加载(gater 文件、uglify 等)。您的源代码必须包含您的 TypeScript 文件(或 JS 文件,如果使用 ES5 或 ES6)。例如,可以使用 Gulp 完成此类打包。您的 Jenkins 服务器将能够签出源代码、构建它并执行测试。

  3. 事实上,当不使用 TypeScript 编译器的 outFile 属性时,您将无法将所有 JS 编译文件收集到一个文件中,因为每个 JS 文件中都会创建匿名模块。

    有关此问题的更多详细信息,请参阅此问题:

  4. 关于 prod 模式,这里是文档的摘录:

    禁用 Angular 的开发模式,这会关闭框架内的断言和其他检查。

    此禁用的一个重要断言验证更改检测通过不会导致对任何绑定(也称为单向数据流)的其他更改。

【讨论】:

  • 我使用的是 AOT 编译器,带有用于 PROD 和 JIT 编译器的 apache http 服务器和用于开发的 lite-server
猜你喜欢
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多