【发布时间】:2015-12-22 02:16:40
【问题描述】:
我是 Angular 2 的新手。我对 Angular 2 在生产环境中的工作方式感到困惑。
在生产服务器中运行 Angular 2 应用程序的先决条件是什么?
是否可以在 IIS 服务器中部署应用程序,还是需要节点服务器?
在开发机使用node编译文件后,是否需要同时部署.js和.ts到生产环境?
【问题讨论】:
标签: angular
我是 Angular 2 的新手。我对 Angular 2 在生产环境中的工作方式感到困惑。
在生产服务器中运行 Angular 2 应用程序的先决条件是什么?
是否可以在 IIS 服务器中部署应用程序,还是需要节点服务器?
在开发机使用node编译文件后,是否需要同时部署.js和.ts到生产环境?
【问题讨论】:
标签: angular
我使用 JSPM 来准备我的 angular2 项目生产。 JSPM 等其他流行工具包括 webpack 和 browserfy。 JSPM 将完成的一项重要任务是捆绑构成 angular2 项目的各种模块。我还将“selfExecutingBundle”标志设置为 true 并让 JSPM 制作一个捆绑的 js 文件(例如 myApp.bundled.js),然后从那里缩小它(myApp.bundled.min.js),并在index.html 文件。
<html>
<head>
<title>Hello Angular World</title>
</head>
<body>
<div>
<my-app>Loading...</my-app>
</div>
<script src="/js/myApp.bundle.min.js"></script>
</body>
</html>
这就是你所需要的!
将来,当 HTTP/2 规范更普遍时,可能不需要捆绑基于模块的项目,但现在我认为需要捆绑。
没有对您的打字稿文件的引用(因为它们已经在制作 myApp.bundled.js 的过程中进行了转译)。正如 Zama 所说,您可以在任何服务器上运行 angular2(我使用 IIS 并且工作正常)。
更新:自从 Angular 2 的最终版本发布以来,我已经切换到使用 angular-cli 来构建生产环境。设置很简单(没有 gulp 任务的意大利面),并且最终的包是超级优化的(尤其是由于 tree-shaking)。我建议查看 angular-cli 以设置、开发和构建您的 ng2 项目。
【讨论】:
Angular 2 应用程序是用 TS 编写的,但浏览器最后只能理解 JavaScript。因此,任何 TS 项目在开发时都会被转译为 JavaScript first event。
您可以在任何服务器上运行 Angular 2 应用程序。
您只需部署 .js 文件,因为浏览器不会解析 .ts 文件。
【讨论】:
有许多初始种子项目包括服务和构建项目的能力。 我正在使用(并且非常满意)https://github.com/antonybudianto/angular2-starter
您可以在这里找到许多其他人: https://github.com/timjacobi/angular2-education#boilerplates
【讨论】:
npm install -g angular-cli”)如果您使用 angular-cli instructions shown here 创建了应用程序,这会更好。在您的应用程序根目录中,运行以下命令 ng build --env=prod,它将通过 webpack 捆绑 \dist 目录中的可部署项。
复制\dist 目录并将其粘贴到{CATALINA_HOME}\webapps。将 \dist 重命名为文件夹名称,例如 \foo。打开 \foo\index.html 并编辑 base-href 行以表示您的新目录名称:
<base href="/foo/">
通过 startup.bat 或您选择的首选项启动 Tomcat 并导航到 http://localhost:8080/foo/,您应该能够查看您的 Angular 2 应用程序。
注意:如果您没有使用ng new 命令创建项目,我已经阅读了在构建之前执行ng init 将允许您仍然遵循这些步骤的位置。不过我自己还没有测试过。
【讨论】:
在生产环境中上传应用非常简单。 步骤:
如果您的应用程序有路由器,那么不要忘记使用 {useHash: true} 来防止错误无法加载页面。喜欢:
RouterModule.forRoot(routes, { useHash: true })
在您的项目根路径中键入 npm build。
【讨论】:
在开发应用程序时,所有的打字稿文件都会被转译器转译成 js 文件,因此您在生产中不需要 ts 文件。
此外,当您完成开发后,您需要做的就是使用一些捆绑工具(如webpack-starter 或angular2-seed)制作dist 目录的捆绑包。
然后您将此捆绑包部署到您的服务器。
上述软件包提供了大量关于如何将 angular2 应用部署到生产环境的信息。
希望这会有所帮助。
【讨论】: