nodejs中没有'dist'的Angular 2

Posted

技术标签:

【中文标题】nodejs中没有\'dist\'的Angular 2【英文标题】:Angular 2 without 'dist' in nodejsnodejs中没有'dist'的Angular 2 【发布时间】:2017-11-28 09:05:35 【问题描述】:

是否可以在 nodejs 中没有给定代码的情况下使用 node js 运行 angular2? 如果我不想在 nodejs 中使用 dist 文件夹怎么办?

app.use('/', express.static('dist'));
app.get('/', function(req, res) 
res.sendFile(path.join(__dirname + '/index.html'));
);

【问题讨论】:

dist 文件夹是 typescript 编译为 javascript 因为浏览器不理解 typescript。另外能否请您说明删除上述nodejs代码的原因 @Dhyey 因为我每次进行更改时都必须运行ng build,而我无法通过ng serve进行调整 【参考方案1】:

提问者的主要问题是他/她不想在每次更改时都浪费宝贵的时间打电话给ng build

解决方案是使用ng build --watch,它会立即构建文件并将它们保存在“dist”目录中,并且每次更改任何文件时,都会立即更新“dist”目录。

【讨论】:

【参考方案2】:

IMO,dist 基本上是编译后的角码, 您仍然需要某个地方的角度代码由节点服务器提供服务。 从 express 服务器的角度来看,它是编译代码(dist)还是未编译代码都没有关系。

注意: 编译是指通过前端代码执行的构建任务,诸如缩小、丑化、cdn'ing 等任务。

【讨论】:

但是@shivam,我需要再次运行ng build,如果我做了一个逗号更改。有什么方法可以在没有 ng build 的情况下运行更改? 不幸的是,没有,因为您使用的是打字稿(从使用 ng2 猜测)。您必须触发构建,将其编译为 js 是的,因为 ngserve 不会将其保存到磁盘上……正如我从文档中看到的那样 github.com/angular/angular-cli/wiki/serve 我有最后一个疑问,如果我将完整的文件夹上传到服务器,那么我将从dist 文件夹中调用所有内容。那么,如果我进行一些更改并再次想要更新我的服务器代码怎么办 是的,您必须更新服务器代码。有几种方法可以做到这一点。 1. 在本地创建新的 dist 文件并将其作为 tarball 推送到您的服务器。这种方法有很多限制,但如果它的某些东西不经常改变,那就很好了。 2. 您可以使用Jenkins 设置部署管道(或 CI 管道)并将未编译的代码推送到 github 或任何其他基于 Web 的 VCS。 Jenkins 从 github 拉取并编译代码,创建 dist.从而使流程自动化

以上是关于nodejs中没有'dist'的Angular 2的主要内容,如果未能解决你的问题,请参考以下文章

如何为生产准备 nodejs?

Angular 2 Universal 中的身份验证,nodejs

如何提供 Angular 2 dist 文件夹 index.html

在源代码管理中保存 Angular Dist 文件夹 [关闭]

带有 Angular2 应用程序和 NodeJs 的 Docker 容器没有响应

Heroku 似乎在构建客户端,但我没有看到 dist 文件夹