我是否需要node.js来使用Angularjs?

时间:2014-10-16 07:26:45

标签: javascript node.js angularjs

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

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

8 个答案:

答案 0 :(得分:69)

我感到痛苦。

对于Angular 2开发的新手,我可以感受到必须学习服务器端技术的痛苦,因为它本质上是一种客户端技术。据我所知:

  1. node.js仅用于管理角度2应用程序的依赖关系。如果您能够以某种方式设法在不使用node.jsnpmjspm的情况下获取这些依赖项,那么您可以脱机运行和开发应用程序。但是,手动执行此操作将花费不可避免的时间,因为您必须手动下载文件,这可能具有其他依赖性,这将需要再次下载其他文件(是的,我已经在那里)。 node.jsnpmjspm就此而言自动化了此过程,并采取了配置文件(jspm)的所有必要步骤,以便每当您使用特定的依赖项时在您的应用程序中,您的系统中也会出现该特定依赖关系的其他依赖关系。
  2. 某些浏览器,尤其是Google Chrome会出于安全目的限制本地加载的文件,因此Angular 2使用的某些HTML 5技术在使用file:protocol加载时会产生错误。因此,您需要一台服务器,您可以从该服务器为您的应用程序提供服务,以便Angular 2可以运行所有可用的HTML 5技术。
  3. 快速应用程序开发的node.js功能也需要
  4. hot-module-reload,因为它提供file watcher api来检测源代码的更改。
  5. 但是有一种方法可以在没有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的{​​{1}}页面中查找script如果您使用SystemJS作为模块加载器,那么您可以使用其注册表来查找应用程序所需的文件但是没有加载到页面中,因为它已被转换或其他东西。虽然执行所有这些操作可能会导致系统性能下降以及转换或预处理非本机代码所增加的开销,但此作业可以外包到img.,这将释放系统中的主执行线程你的申请代码。
    4. 不相信我?这是证明。

      1. github上的Angular in Chrome项目包含zipped package,其中包含开发最小Angular 2应用程序所需的必需依赖项(通过最小化,我指的是快速入门页面上提到的英雄之旅教程)。因此,如果您使用的是node.js不支持的系统(例如,是ChromeOS),或者只是在node.js不可用的受限系统上,则可以使用所有必需的依赖项,并且您可以使用不需要npm或jspm来管理所需的依赖项。
      2. 有一个proof of concept extension作为Chrome扩展程序在本地提供英雄之旅教程(开发文件,打字稿和所有)。
      3. 该扩展还通过挂钩由alexis vincent为SystemJS开发的hmr-primitives来实现web worker功能。 hot-module-reload功能由单个javascript文件启用,因此如果不需要此功能或占用太多资源,则可以删除有问题的代码行。
      4. 但是要注意。

        1. 如果您正在使用此系统,那么您需要一种方法来更新您的开发包,因为技术向前发展并且它快速移动(当Angular 2刚刚发布时谈论Angular 3)或者技术您用来开发您的应用程序可能会过时,或者在某个地方进行api更改可能会阻止您的应用程序在将来运行。您也不能保证拥有依赖项的最新存储库,因为这些类型的包是手动维护的。
        2. 将您的应用程序捆绑为Chrome扩展程序(如Chrome中的Angular)会引入性能瓶颈。由于代码被转换并且模块是延迟加载的,因此您将失去JIT编译的进步以及现代JavaScript引擎用于优化在浏览器上运行的代码的其他性能增强。但是,您在性能方面的损失,您可以灵活地使用您喜欢开发的技术。总有一个权衡。此外,性能损失仅在代码加载时才开始。一旦应用程序加载,系统就会知道如何实现性能增强。在分发应用程序时,您确实需要编译所需的资源以利用现代JavaScript引擎的性能增强。
        3. hot-module-reload功能目前是实现文件监视器的一种hackish方式,它使用项目的常用约定(temp1.ts,temp1.css,temp1.htm),因为没有办法(我可能错了) (请参阅此信息)获取应用程序所需的所有资源的确切列表,但未在主页面上加载(已转换或预处理的资源)。

答案 1 :(得分:57)

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

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

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

答案 2 :(得分:9)

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

您不需要node.js来使用angular.js但是,您可以安装npm(节点包管理器)来使用一些非常棒的工具,这些工具将使您作为角度开发人员的生活变得更加容易。 例如:yoeman这是一个很棒的脚手架工具。 npm上还有许多其他工具可用link to their site 在官方角度网站或角度youtube channel

了解有关角度的更多信息

答案 3 :(得分:8)

没有。 Angular用于客户端,Node用于服务器端。

他们用MEAN Stack作为一起,但没有必要。

答案 4 :(得分:3)

AngularJS无需Node.JS即可运行。 NodeJS是服务器端,AngularJS是客户端。

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

答案 5 :(得分:3)

如果不知道影像编辑工具的工作原理,很难回答。但是要回答你的问题,你不需要Node.js来使用AngularJS。

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

Node是一种可以执行javascript的服务,通常在服务器上使用,可能代替PHP(like in MEAN stack)。 此外,因为Node是一个可以执行javascript的服务,所以当开发Angular应用程序来执行后台任务(如缩小css和javascript以及执行测试)时,它可以在本地计算机中使用。

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

在MEAN堆栈上读取以查看Node和Angular适合的位置。您根本不需要Node,但很高兴使用相同的语言进行开发。

答案 6 :(得分:0)

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

答案 7 :(得分:-1)

您必须安装Node.js。

  

Angular需要Node.js版本8.x或10.x。

https://angular.io/guide/quickstart#nodejs