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

Man*_*lam 78 javascript node.js angularjs

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

我不明白这个场景.如果我不需要那个,当nodejs和angularjs都在一起?

小智 76

我感觉到你的痛苦.

对于Angular 2开发的新手,我可以感受到必须学习服务器端技术的痛苦,这些技术基本上是客户端技术.据我所知:

  1. node.js仅用于管理角度2应用程序的依赖关系.如果您能够以某种方式设法在不使用的情况下获取这些依赖项node.js,npm或者jspm您可以脱机运行和开发应用程序.但是,手动执行此操作将花费不可避免的时间,因为您必须手动下载文件,这可能具有其他依赖性,这将需要再次下载其他文件(是的,我一直在那里).node.jsnpmjspm为此事自动执行此过程以及采取所有配置文件(必要步骤jspm),所以,每当你在你的应用程序中使用特定的依赖,特别是依赖的其它依赖也将出现在您的系统.
  2. 某些浏览器,尤其是Google Chrome会出于安全目的限制本地加载的文件,因此Angular 2使用的某些HTML 5技术在使用file:protocol加载时会产生错误.因此,您需要一台服务器,您可以从该服务器为您的应用程序提供服务,以便Angular 2可以运行所有可用的HTML 5技术.
  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服务器中使用文件观察程序来监视本地系统中文件的更改.由于应用程序可以fetch或应用程序xmlhttprequest所需的资源,您可以定期fetchxmlhttprequest您的应用程序所需的资源,并将其与某些缓存进行比较.但是你怎么知道要检查哪些文件?您可以links在页面中查找script,img.如果您使用SystemJS作为模块加载器,那么您可以使用其注册表来查找应用程序所需的文件但未加载到页面中,因为它已被转换或其他内容.虽然执行所有这些操作可能会导致系统性能下降以及转换或预处理非本机代码所带来的额外开销,但此工作可以外包到一个web worker可以释放系统中主应用程序代码的主执行线程的工作.

不相信我?这是证明.

  1. github上的Angular in Chrome项目包含一个压缩包,其中包含开发最小Angular 2应用程序所需的必需依赖项(最小化,我指的是快速入门页面上提到的Tour of Heroes教程).因此,如果您使用的是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扩展程序(如Chrome中的Angular)会引入性能瓶颈.由于代码被转换并且模块是延迟加载的,因此您将失去JIT编译的进步以及现代JavaScript引擎用于优化在浏览器上运行的代码的其他性能增强.但是,您在性能方面的损失,您可以灵活地使用您喜欢开发的技术.总有一个权衡.此外,性能损失仅在代码加载时才开始.一旦应用程序加载,系统就会知道如何实现性能增强.分发应用程序时,您确实需要编译所需的资源以利用现代JavaScript引擎的性能增强功能.
  3. hot-module-reload功能目前是一种实现文件监视器的hackish方式,该文件监视器使用项目的常用约定(temp1.ts,temp1.css,temp1.htm),因为没有办法(我可能错了)获得一个明确的列表应用程序所需的所有资源,但未加载到主页面上(已转换或预处理的资源).

  • 这应该是公认的答案.我刚才有了这个问题,你清除了我甚至没有的混乱.Bravo ...... (5认同)

Cat*_*ANU 64

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

AngularJS是一个由Google和社区维护的Web应用程序框架,它有助于创建单页面应用程序,该应用程序由客户端的一个带有CSS和JavaScript的HTML页面组成.

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

  • 此外,当您需要服务器时,我建议您从头开始创建一个服务器.在使用像"MEAN"或"SailsJS"这样的复杂框架之前,您需要了解它的工作原理. (2认同)

has*_*ain 9

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

您不需要node.js来使用angular.js,但是,您可以安装npm(节点打包模块)来使用一些非常棒的工具,这些工具将使您作为角度开发人员的生活变得更加容易.例如:yoeman是一个很棒的脚手架工具.npm还有许多其他可用的工具,这里是他们网站链接 了解有关角度的更多信息,请访问官方角度网站或有角度的youtube频道

  • 这个答案让我对Angular和NodeJS感到困惑:在CLIENT上,有许多工具*需要*NodeJS - 基本上是使用节点包管理器(npm)实用程序安装的任何工具.我还不明白的是,在主机上使用NodeJS和客户端上安装了npm的软件包的时候 - 你是否还需要在服务器上安装NodeJS才能使这些已安装的软件包正常工作?如果答案是"可能",那么了解NodeJS是否也需要在Web服务器上涉及哪些因素? (2认同)

kik*_*ike 8

No. Angular用于客户端和Node服务器端.

他们一起使用作为MEAN Stack,但这不是必需的.