如何在没有节点服务器的情况下运行 AngularJS 应用程序

Posted

技术标签:

【中文标题】如何在没有节点服务器的情况下运行 AngularJS 应用程序【英文标题】:How to run AngularJS2 application without Node server 【发布时间】:2017-01-16 20:00:45 【问题描述】:

是否可以在不使用 NodeJS 作为服务器的情况下在浏览器中运行 Angular 2 应用程序。我不确定,但如果我理解正确,最新的浏览器能够编译/“理解”TypeScript 代码,所以我不必使用任何第三方 js lib 将其编译成普通的 javascript

我想在前端使用 100% Angular 2 创建一个应用程序 后端 REST API 使用 Ruby On Rails,不使用 Rails 的页面渲染、会话等。

我对 Angular2 如何在幕后工作/运行有点困惑......我应该如何配置我的 Angular2 应用程序以在没有 NodeJS 的情况下使用它?

【问题讨论】:

【参考方案1】:

TL;DR

如果你使用 TypeScript 和 Angular 2,你在开发过程中只需要 Node:

DEV:NodeJS 用于将.ts 文件转译为.js 文件。

PROD:生成的.js 文件用于在浏览器中,NodeJS 不再需要了,除非你也碰巧使用它在后台。

注意:如果你只在开发中使用纯 JS,你甚至不需要 Node

【讨论】:

【参考方案2】:

我认为你在这里混淆了一些技术。

服务器

您可以在任何可以托管静态文件的服务器上运行 Angular 应用程序。节点没有什么特别之处。所以是的,你可以使用红宝石。或者 Apache、nginx、lighttpd 等。

这样做的原因是 JavaScript 在客户端运行。服务器的响应只是将 JS/html/CSS 文件传递​​给正在访问您网站的客户端。

TypeScript

如果您使用 TypeScript 编写应用程序,则需要在 任何 浏览器理解它之前将其转换为 JavaScript。您可以 (1) 在将应用程序部署到服务器之前执行此操作,或者 (2) 使用像 System.js 这样的库来即时转换 TypeScript。

虽然 (2) 绝对是一个选项,并且 Angular CLI 直到最近才使用它,但在我看来 (1) 是更好的选项。 Angular CLI 切换到 (1),现在使用 webpack。 Webpack 正在将您的应用程序托管在服务器上之前对其进行转译和捆绑。

希望我能为你澄清一下。

【讨论】:

非常感谢您的回答:) 嗨@SebastianSebald,感谢您的回答。但我有一个疑问。我制作了 angular 2 网站英雄之旅的教程,当我完成后,它在本地运行 npm start 可以完美运行,但如果我将它放在服务器上(使用 apache),它不会加载。你知道会发生什么吗?谢谢! 并非没有任何堆栈跟踪。但这不是讨论您的问题的地方。请创建一个新问题。你肯定会得到一些帮助。附带说明:npm start 也可能会转译您的文件。确保您使用的是 JS 输出,而不是 TS。 AoT,或提前编译,值得任何研究此问题的人研究【参考方案3】:

您可以使用任何服务器端技术,包括 Asp.Net Core、Node.Js、php 来为 js、html 和 css 内容提供服务。

在 IDE 中构建应用程序时,Node.js 将 .ts 文件转换为 .js 文件。

【讨论】:

以上是关于如何在没有节点服务器的情况下运行 AngularJS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有表单的情况下将图像上传到节点 js 服务器?

如何在没有节点的情况下在命令行上执行javascript [关闭]

如何在没有 npm install 的情况下从 github 运行 react 项目

如何在没有kafka服务器的情况下运行spring boot

Camerax 在服务中运行。如何在前台服务中获取生命周期所有者或在没有它的情况下运行?

如何在没有节点边缘重叠的情况下进行力导向布局