我需要 node.js 来使用 Angularjs 吗?

我想使用我的图像编辑工具在我的网站 angular.js。我需要 node.js也?

我不明白这个场景,如果我不需要它,那我们什么时候同时使用 nodejs 和 angularjs?

67270 次浏览

在客户端使用 Angular,在服务器端使用 Node

他们用来一起去作为 吝啬堆栈,但这是没有必要的。

AngularJS 不需要 Node.JS 就可以工作,NodeJS 是服务器端,AngularJS 是客户端。

如果你是 AngularJS 的新手,我建议你看看这个教程 AngularJS 教程。 在本教程中,您将使用 NodeJS,您将理解为什么这两者可以一起工作,但是没有必要。

您不需要 NodeJS 来创建客户端图像编辑工具。

AngularJS 是一个 Web 应用程序框架,由 Google 和社区维护,用于协助创建单页应用程序,这些应用程序由一个 HTML 页面组成,客户端使用 CSS 和 JavaScript。

但是,如果有一天你想上传和存储这些图像在一个服务器上,使他们可以由多个客户端-那么是的,你也需要一个服务器。这个服务器可以用 NodeJS 创建。

Js 用于在服务器端编写 Javascript。 Js 是一个客户端框架。

您不需要 node.js 来使用 angular.js,但是您可以安装 npm (node package manager)来使用一些非常棒的工具,这些工具将使您作为角度开发人员的生活变得更加轻松。 例如: 约曼,这是一个伟大的脚手架工具。 在 npm 上还有许多其他工具可用,这里是 链接到他们的网站 更多关于棱角的信息请访问官方的棱角网站,或者访问有棱角的 youtube 频道

如果不知道您的成像编辑工具是如何工作的,就很难回答这个问题。但是为了回答你的问题,你不需要 Node.js 来使用 AngularJS。

Angular 是一个在客户端浏览器中运行的前端 javascript 框架。

Node 是一个可以执行 javascript 的服务,通常用于服务器上,可以替代 PHP (就像是在“意味着什么”堆里)。 另外,由于 Node 是一个可以执行 javascript 的服务,因此在开发 Angular 应用程序时,可以在本地计算机上使用它来完成后台任务,例如缩小 css 和 javascript 并执行测试。

因此,如果您的成像编辑工具是用 javascript 开发的,并且您的应用程序使用了 Angular 和 Node (作为 Web 服务器) ,那么代码可以在客户端或服务器端执行。

有一个平均堆栈阅读,看看哪里节点和角度适合。您甚至根本不需要 Node,但是使用同一种语言进行开发非常好。

我能感受到你的痛苦。

对于刚刚接触角2开发的人来说,我能感受到为了一个本质上是 客户端技术的东西而学习 服务器端技术的痛苦。据我所知:

  1. node.js仅用于管理角度为2的应用程序的依赖关系。如果您可以设法不使用 node.jsnpmjspm而获得这些依赖项,那么您可以离线运行和开发您的应用程序。然而,手动下载将花费大量的时间,因为你必须手动下载文件,这可能有其他的依赖性,需要其他文件再次下载(是的,我已经在那里)。就此而言,node.jsnpmjspm会自动化这个过程,并采取配置文件(jspm)的所有必要步骤,以便每当您在应用程序中使用某个特定依赖项时,该特定依赖项的其他依赖项也会出现在您的系统中。
  2. 一些浏览器,特别是 Google Chrome,出于安全考虑,限制本地加载的文件,以至于 Angular 2使用的某些 HTML 5技术在使用 file: protocol 加载时会产生错误。因此,您需要一个服务器,您可以从中服务您的应用程序,以便所有可用的 HTML 5技术都可以为 Angular 2运行。
  3. node.js对于快速应用程序开发的 hot-module-reload能力也是必需的,因为它提供了一个 file watcher api来检测源代码的变化。

但是有一种方法可以在没有 node.js 的情况下离线开发 Angular 2应用程序。

  1. 还记得我说过,如果能够获得所有必需的依赖项,就可以离线运行和开发应用程序吗?如果您能够以某种方式找到或创建一个包,其中包含应用程序将需要的所有必需依赖项,那么您就不需要 npm 或 jspm 来为您管理这些依赖项。
  2. 对于 file-access-restriction问题,可以将项目作为扩展加载。扩展能够使用所有可用的 HTML 5技术以及一些强大的 api (甚至对服务器上的应用程序也不可用) ,同时在您的开发环境中本地化。因此,如果您将应用程序作为扩展来使用,则不需要启动 Web 服务器来访问 HTML5技术。
  3. 对于 hot-module-reload功能,您可以从其他方式接近它。您可以通过应用程序本身来监视本地系统中文件的更改,而不必在 Web 服务器中安装文件监视器。由于应用程序可以使用应用程序所需的 fetchxmlhttprequest资源,因此可以定期使用应用程序所需的 fetchxmlhttprequest资源,并将其与某些缓存进行比较。但是你怎么知道要检查哪些文件呢?你可以在 img.script页面中查找 links如果你使用 SystemJS 作为模块加载器,那么你可以使用它的注册表来查找你的应用程序所需要的文件,但是没有在页面中加载,因为它已经被翻译或者其他什么。尽管这样做会导致系统性能下降,并增加传输或预处理非本机代码的额外开销,但是这项工作可以外包给 web worker,它将为您的应用程序代码释放系统中的主执行线程。

不相信我? 这就是证据。

  1. 在 github 上的 Angular in Chrome 项目包含一个 拉链包裹,它包含了开发一个最小的 Angular 2应用程序所需的依赖关系(最小的依赖关系,我指的是在快速启动页面上提到的英雄之旅教程)。因此,如果你在一个不支持 node.js 的系统上(是的,有,比如 ChromeOS)或者只是在一个受限制的系统上,node.js 不可用,所有必需的依赖项都可用,你不需要 npm 或 jspm 来管理所需的依赖项。
  2. 有一个 概念扩展的证明,它服务于英雄教程(开发文件,打印脚本和所有)本地作为一个铬扩展。
  3. 该扩展还通过挂接到 Alexis Vincent 为 SystemJS 开发的 hmr- 原语来实现 hot-module-reload功能。hot-module-reload功能是由一个 javascript 文件启用的,因此,如果不需要这个功能或者占用了太多资源,那么您可以删除这行代码。

但是要注意。

  1. 如果你正在使用这个系统,那么你需要一种方法来更新你的开发软件包,因为技术的进步和它的快速发展(当角度2刚刚发布的时候谈论角度3) ,或者你正在使用的技术来开发你的应用程序可能会变得过时,或者沿着线的某个地方 API 的变化可能会阻止你的应用程序在未来的功能。还不能保证为依赖项提供最新的存储库,因为这些类型的包是手动维护的。
  2. 将你的应用程序捆绑成像 Chrome 中的 Angular 那样的 Chrome 扩展会导致性能瓶颈。因为代码是透明的,模块是延迟加载的,所以您失去了 JIT 编译和其他性能增强的优势,现代 javascript 引擎使用这些优势来优化在浏览器上运行的代码。但是,如果您在性能方面有所损失,那么您将获得使用您希望在其中开发的技术的灵活性。总是有一个交易。此外,在加载代码时,性能只是在开始时受到影响。一旦应用程序加载了它,系统就会知道如何实现性能增强。在分发应用程序时,您确实需要编译所需的资源,以利用现代 javascript 引擎的性能增强。
  3. hot-module-reload功能目前是一种实现文件监视器的骇客方式,它使用项目的常见约定(tem1.ts,tem1.css,tem1.htm) ,因为没有办法(我可能错了)获得应用程序所需的所有资源的明确列表,但是没有加载到主页上(传输或预处理的资源)。

安装 NodeJs 的原因 作为一个像 Chrome、 Firefox 等浏览器只能理解 JavaScript 的浏览器,我们必须将我们的类型转换为 JavaScript。因此,类型脚本传输器需要 Node.js 来生成 JavaScript 的类型脚本代码。