我需要node.js才能使用Angularjs吗?


79

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

我不了解这种情况。如果我不需要它,那么我们什么时候可以同时使用nodejs和angularjs?


不同的东西。(只有普通的东西是JavaScript)
Sergiu Paraschiv

一个是客户端,一个是服务器。客户端中的JavaScript不依赖于服务器上的相同语言。这里有什么困惑?
尼尔·伦

1
简单来说,答案是否定的
Raunak Kathuria

1
在知道什么是角和节点js之后,这个问题对我来说似乎很愚蠢。.:-P
Manikandan Arunachalam

6
我认为Angular官方网站上的教程会让所有人感到困惑。它使用NodeJS作为后端服务器。实际上,除非您使用AJAX或类似的工具,否则您可以在计算机上完全运行Angular,而不会出现问题。
亚伦刘

Answers:


65

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

AngularJS是一个由Google和社区维护的Web应用程序框架,可帮助创建单页应用程序,该应用程序由一个HTML页组成,客户端包含CSS和JavaScript。

但是,如果有一天您想将这些图像上传并存储在服务器上,并使它们可以被多个客户端访问,那么是的,您还需要一台服务器。该服务器可以用NodeJS制成。


1
谢谢@Catalin Munteanu。现在我明白它的意思了。
Manikandan Arunachalam

2
另外,当您需要一台服务器时,我建议您从头开始创建一个。在使用类似MEAN或的复杂框架之前,您需要了解其工作原理SailsJS
Catalin MUNTEANU 2014年

1
,我正在通过php处理服务器上的图片
Manikandan Arunachalam

如果我有一个后端应用程序已启动并正在运行,而我只想构建前端该怎么办?角度仅够好吗?
阿伦(Arun)

@Arun,如果要使用AngularJS构建前端,则不需要NodeJS。
Catalin MUNTEANU

80

我感到你很痛苦。

对于Angular 2开发的新手来说,我会感到不得不学习本质上是客户端技术的服务器端技术的痛苦。据我了解:

  1. node.js仅用于管理angular 2应用程序的依赖项。如果你能以某种方式设法让那些依赖不使用node.jsnpmjspm则你可以运行你的应用程序脱机发展。但是,手动执行此操作将花费大量时间,因为您必须手动下载文件,而文件可能具有其他依赖性,这将需要再次下载其他文件(是的,我去过那里)。node.jsnpmjspm为此事自动执行此过程以及采取配置文件的所有必要的步骤(jspm),这样无论你使用一个特定的依赖在你的应用程序,该特定依赖的其它依赖也将出现在您的系统。
  2. 某些浏览器(尤其是Google Chrome浏览器)出于安全目的限制本地加载的文件,以便Angular 2使用的某些HTML 5技术在使用file:协议加载时会产生错误。因此,您需要一台服务器,可以从中为应用程序提供服务,以便所有可用的HTML 5技术都可以用于Angular 2运行。
  3. node.jshot-module-reload快速应用程序开发的功能也需要它,因为它提供了一种file watcher api检测源代码更改的功能。

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

  1. 还记得我说过,如果您可以设法获取所有必需的依赖项,那么可以脱机运行和开发应用程序?如果您能以某种方式找到或创建一个具有应用程序所需的所有必需依赖项的程序包,则您不需要npm或jspm来为您管理依赖项。
  2. 对于此file-access-restriction问题,您可以将项目作为扩展加载。扩展程序可以使用所有可用的HTML 5技术以及一些强大的api(甚至不适用于服务器上提供的应用程序),而同时又位于开发环境的本地。因此,如果将应用程序作为扩展服务,则无需触发Web服务器即可访问HTML 5技术。
  3. 对于此hot-module-reload功能,您可以从其他方法进行处理。您可以从应用程序本身执行此操作,而不是在Web服务器中使用文件监视程序来监视本地系统中文件的更改。由于应用程序可以使用应用程序所需的资源fetchxmlhttprequest资源,因此您可以定期fetchxmlhttprequest应用程序需要的资源并将其与某些缓存进行比较。但是您怎么知道要检查哪些文件?你可以看看links的页面内,script中,img.如果将SystemJS用作模块加载器,则可以使用其注册表来查找应用程序所需但未加载到页面中的文件,因为它已经被编译了。虽然所有这些操作可能会浪费系统性能,但会增加编译或预处理非本机代码的开销,但可以将此工作外包给,web worker这将为您的应用程序代码释放系统中的主执行线程。

不相信我吗 这是证明。

  1. github上的Angular in Chrome项目包含一个压缩包,其中包含开发最小的Angular 2应用程序所需的必需依赖项(至少,我指的是快速入门页面上介绍的“英雄之旅”教程)。因此,如果您使用的是node.js不支持的系统(例如,有ChromeOS),或者仅在受限的系统(其中node.js根本不可用)上,那么所有必需的依赖项都可用,而您不需要需要npm或jspm为您管理所需的依赖项。
  2. 有一个概念证明扩展,可作为chrome扩展在本地提供英雄之旅教程(开发文件,打字稿等)。
  3. 该扩展还hot-module-reload通过插入由Alexis vincent为SystemJS开发的hmr-primitives来实现功能。该hot-module-reload功能由单个javascript文件启用,因此,如果不需要此功能或占用过多资源,则只需删除有问题的代码行。

但是请注意。

  1. 如果您使用的是此系统,那么您需要一种方法来随着技术的进步和技术的快速发展(如刚刚发布Angular 2时谈论Angular 3)或您正在使用的技术来更新开发包。开发您的应用程序可能已过时,或者api更改可能会阻止您的应用程序在将来运行。由于这些类型的软件包是手动维护的,因此也不保证您具有最新的依赖关系存储库。
  2. 将您的应用程序捆绑为Chrome扩展程序(例如在Angular in Chrome中)会带来性能瓶颈。由于代码已被编译,模块被延迟加载,因此您将失去JIT编译的进步以及现代javascript引擎用来优化在浏览器上运行的代码的其他性能增强。但是,在性能方面所损失的是,您获得了使用自己喜欢开发的技术的灵活性。总会有一个权衡。而且,性能下降只是在代码加载之初。一旦应用程序将其加载,系统将知道如何实施性能增强。分发应用程序时,您确实需要编译所需的资源,以利用现代javascript引擎的性能增强功能。
  3. hot-module-reload功能当前是一种实现文件监视程序的不可靠的方式,该文件监视程序对项目使用了通用约定(temp1.ts,temp1.css,temp1.htm),因为没有办法(对此我可能是错的)应用程序需要但未加载到主页上的所有资源中的所有资源(已转译或预处理的资源)。

7
这应该是公认的答案。我只是有这个问题,您清除了我什至没有的困惑。棒极了...
Gaurav Chauhan

我不同意,nodejs不是唯一的服务器端技术。我认为问题更多是关于使用grunt,yeoman等需要安装nodejs的问题。
杰罗姆乙

9

node.js用于在服务器端编写Javascript。angular.js是一个客户端框架。

您不需要node.js来使用angular.js,但是,您可以安装npm(节点程序包管理器)来使用一些很棒的工具,这些将使您作为angular开发者的生活更加轻松。例如:yoeman这是一个很棒的脚手架工具。npm上还有许多其他工具可用,这是其网站链接。可 在官方的angular网站或youtube频道了解有关angular的更多信息。


2
这个答案使我对Angular和NodeJS感到困惑:在CLIENT上,有太多需要NodeJS的工具-基本上是使用节点包管理器(npm)实用程序安装的任何工具。我仍然不明白的是,何时需要使用在客户端上使用NodeJS和npm安装的软件包的站点-您还需要在服务器上安装NodeJS才能使那些已安装的软件包起作用吗?如果答案是“也许”,那么知道NodeJS是否也需要在Web服务器上涉及哪些因素?
亚兹莫夫

1
要回答您的问题,是和否。npm是包裹经理。使用安装软件包与npm将软件包及其依赖项复制到本地目录相同。因此,如果您想要附带的出色功能,npm则应该安装npm并需要使用节点来完成。如果您不需要的功能,npm 则不必安装它,您可以自己复制软件包。假设您的网站需要运行此日期选择器,如果您运行安装注释以将其复制并下来并删除angularjs,或者可以手动执行。
hasanain '16

谢谢-我可能会发布一个新问题,以便进一步跟进。但是我理解你的榜样。我是.NET程序员,将托管在运行IIS的Windows服务器上。大多数托管公司似乎并不在服务器上支持NodeJS。再说一次,我在使用Node的客户端上所做的大部分工作都是使用其npm(程序包管理器)实用程序来“安装”加载项/依赖项。之后,我确实希望可以将配置的文件复制到Web服务器,并且它们在没有节点的情况下也可以正常运行。我不明白为什么我要服务器上的节点,除非我无论如何都具有控制台访问权限,并且可以根据需要在其上运行npm
Jazimov '16

8

编号Angular在客户端和Node服务器端使用。

它们曾经作为MEAN Stack一起使用,但这不是必需的。


3

您不需要Node.JS来使AngularJS正常工作。NodeJS是服务器端,AngularJS是客户端。

如果您不熟悉AngularJS,建议您使用AngularJS教程。在本教程中,您将使用NodeJS,您将理解为什么两者可以一起工作,但不是必须的。


3

不知道映像编辑工具的工作原理就很难回答。但是要回答您的问题,不,您不需要Node.js即可使用AngularJS。

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

Node是一种可以执行javascript的服务,通常在服务器上使用,也许可以代替PHP(例如在MEAN stack中)。另外,由于Node是一项可以执行javascript的服务,因此在开发Angular应用程序以执行后台任务(例如最小化css和javascript并执行测试)时,可以在本地计算机中使用它。

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

阅读MEAN堆栈以了解Node和Angular的适合位置。您甚至根本不需要Node,但是用相同的语言进行开发很不错。


现在,我刚刚决定可以使用angularjs进行处理,用户可以上传图像并使用(旋转,裁剪)之类的选项。我需要管理这些图像,这些都在我的图像编辑工具功能中。
Manikandan Arunachalam 2014年

1
对于诸如旋转和裁剪之类的用户图像操作,在前端具有该功能是有意义的。对于诸如图像大小调整之类的常规功能,您可以将其放在节点服务器上以释放客户端资源。这些天,客户端硬件非常强大,可能不需要。
2014年

0

安装NodeJ的原因由于Web浏览器(例如Chrome,Firefox等)仅了解JavaScript,因此我们必须将Typescript转换为JavaScript。因此,Typescript编译器需要Node.js才能将Typescript代码生成为JavaScript。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.