所有PHP开发人员应该知道的Node.js的5个特点

2016-01-29 11:21 1 1 收藏

所有PHP开发人员应该知道的Node.js的5个特点,Node项目还非常年轻,但很少看到对一个项目如此狂热的社区,作为一个新技术,php程序员要了解些什么呢?

【 tulaoshi.com - Javascript 】

1. Node.js构建于Chrome的JavaScript引擎

我们知道,Google的Chrome浏览器有一个非常快速的JavaScript引擎,叫做V8。这个JS引擎可以被独立出来。Node.js就是建立在V8之上的。这也是为么Node.js会运行得如此之快。这对于开发者来说,有几个好处:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/javascript/)你不需要重新学习一门新的语言,它就是JS。我常常查看Chrome和Mozilla的JS文档,他们完全通用。受益于V8的 JIT(Just In Time,即时)编译功能,Node.js应用的运行速度可以和本地代码媲美。对比测试表明,Node.js 要比 PHP 和Ruby 快很多。随着V8的进步,Node.js 将同时受益。

2. Node.js不仅仅是一个网页服务器或者平台

和PHP不同,Node.js 不是以网页为中心的。Node.js 是通用目的的JS运行时,带有很多功能强大的库。其中有一个库提供了 HTTP/HTTPS 的实现。

你可以用Node.js做很多事情。你可以很容易地利用它来创建一个命令行程序或者其他TCP/IP服务。

3. Node.js 是面向对象的 (类似于古怪的JavaScript面向对象风格)

我喜欢jQuery。但是它让我变懒,写了很多简单、快速但是很难看毫无架构可言的脚本。这并不是什么坏事,因为处理简单的网页行为,这足够了。但是 Node.js不是仅仅用来处理浏览器上面的事情的,它可以用来构建应用程序,也就是你必须考虑程序架构。当你用Node.js写代码的时候,你将深入到JS的对象模型中。我曾经很讨厌JS的对象模型,常常把我搞疯掉。但是Node.js和NPM(Node Package Manager)很好地利用了JS的原型系统,帮助我清楚了很多类/接口使用中的障碍,让我爱上了面向对象的JS编程。

4. 基于事件的 I/O

这是Node.js最有争议的一点。Node自身在一个线程中运行。是的,只有一个!你可以和传统的 Apache/PHP 的一堆实例对比一下。但是Node运行得很快速、高效。

这是怎么做到的?共享执行时间,把密集的IP处理放到别的线程处理。对于这一点的优点与缺点我可以写很长的文字来讨论,但这里我想说点实际的:当你用 Node.js写代码的时候,你需要考虑你的任务是否是慢的,或者I/O密集型的。使用异步的方法来处理回调或者使用事件处理器来处理执行慢的工作。
最主要的是,你要保证代码不让一个请求占据Node主线程太长事件,并且不给其他请求处理的机会。

5. 必须使用包管理!

老实说,你喜欢PEAR吗?你是不是把你大部分的代码都转换成PEAR或者PECL包了?并没有很多PHP程序员这么做,甚至很多人并不知道PEAR的存在。在Node.js的世界里,你必须把代码打包:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/javascript/)Node.js的设计就是一个最精简的框架。PHP核心的90%的东西都不会在Node.js核心中出现。例如,数据库驱动、邮件发送库、HTML支持等等,都不在核心库中。Node.js的核心就是一个模块化的框架。你会发现它很好用!NPM(Node Package Manager)是你必备的工具。有了它,你就可以下载Node.js的各种代码包、驱动、解析器、编辑器、服务器等。创建并且发布你的代码包非常简单。我在使用Node工作不久就发布了我的第一个代码包。

如果你是一个Drupal开发者,你会觉得Node的包管理系统有点像Drupal的模块,不同的是你现在面对的是开发者,不是建站者。

最后:Node.js是否合适你

在上文中我提到了很多Node.js的特性,而这些是我认为作为PHP开发者应该知道的。本文的基调也是基本趋向于肯定。Node是一个有趣的产品,其结构优雅。但是Node并不是万能药。


来源:https://www.tulaoshi.com/n/20160129/1482203.html

延伸阅读
标签: Android
安卓手机开发人员选项怎么关闭   要关闭开发者选项,其实就是跟新机一样,要将这个开发者选项隐藏掉。这里教大家一个简单的方法,非常简单。下面以图老师小编手中的中兴V5(安卓手机)为例,教大家如何隐藏或者关闭开发者选项,其他安卓手机大小异同。 一、打开手机设置应用程序全部找到设置,然后点击它,如下图所示。 ...
标签: SQLServer
在上一篇文章中,我列出了在面试SQL Server数据库开发者时会提问的一些问题,如果我对应聘者的口头回答部分感到满意,我会让他们参加TSQL编程能力的测试,没有比动手操作数据库更有效的方法了,我认为TSQL测试是考察应聘人员的好办法。 一些免责声明 即使不是全部的话,这些TSQL问题中的大部分都可以使用不同的方法解决,我所提供的答案是...
标签: Web开发
应用程序安全专家表示,HTML5给开发人员带来了新的安全挑战。 苹果公司与Adobe公司之间的口水战带来对HTML 5命运的诸多猜测,尽管HTML 5的实现还有很长的路要走,但可以肯定的一点是,运用HTML 5的开发人员将需要为应用程序安全开发生命周期部署新的安全功能以应对HTML5带来的安全挑战。 那么HTML5将会对我们需要覆盖的攻击面带来怎样...
标签: Web开发
之前我提到过"似Ajax" 的架构,现在我要说的Ajax框架也就是指专门针对这种Ajax架构而提供的框架。目前,我还没有听说过特别好的这个领域的流行框架。但我知道我的身边,.NET领域,J2EE领域或PHP平台上都有这样的框架和应用,我认为,正是因为有很多这样应用,所以Ajax才会像某个模式一样,被撰有一个专门的名词。不过我感觉Ajax ...
标签: Web开发
在这里我将试图考察一下目前.NET平台的下的Ajax框架,我也试图从中总结出来一种方法,使得你可以在众多基于.NET平台的Ajax框架和工具包中找到你所合适的一种,同时也希望你在考察、预研和使用这些流行的这些Ajax-NET 的框架时,做得理性和有的放矢。 我想,文章的方法会给目前使用Ajax的.NET用户带来帮助,从而提高你在.NET平台下使用Aja...

经验教程

959

收藏

99
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部