选择Nodejs的N个理由
选择Nodejs的N个理由
作者 马德奎 发布于 2014年9月25日
Caleb Madrigal是 来自美国密尔沃基市的一名软件顾问。四年前,他在听说“将JavaScript用作服务器端语言”这样的说法时,认为那是一个荒唐的想法。有那么多服务器 端语言可供选择,为什么要选JavaScript?这是他当时的想法。但现在,他在当前的项目中选用了JavaScript/Node.js。他近日撰文对自己的这一转变进行了解释。
首先,许多顶级企业都使用了Node.js,并且效果非常好,其中包括PayPal、Walmart、Ebay、Groupon和LinkedIn。 这些企业在生产环境中大量使用了Node.js。Madrigal举了PayPal的例子。PayPal针对他们网站上其中一个流量最大的应用,对比了它 的Node.js版本和Java版本,发现前者在多个方面优于后者,并最终决定由Java切换到JavaScript。InfoQ对此有过报道。
其次,Node.js有一个很棒的包管理系统NPM。通过运行“npm install 包名”几乎可以安装任何包/库。另外,通过package.json文件可以跟踪依赖关系。因此,Node.js库很容易克隆,运行“npm install”可以安装所有的依赖关系。
再次,Node.js社区异常活跃,总是有新的库产生。这些库非常好用,使JavaScript成为一个非常高效的平台。
然后是Node.js 的REPL(read-evaluate-print loop)命令行。开发人员只需要在终端中输入“node”,就可以对Node.js进行逐行测试。
最后,Node.js有一个很重要的特性:非阻塞函数。这就是为什么我们会在Node.js的代码中看到大量的callbacks和promises。这种设计模式给Node.js带来了非常优异的性能。
此外,Node.js的最大一个优点是:它是JavaScript。任何人都知道JavaScript,所以使用Node.js不需要学习一门新语言。有了它,开发人员可以只使用一种语言,浏览器端用JavaScript,服务器端用Node.js。在使用像MongoDB和CouchDB这样存储JSON对象的文档数据库时,这会极大地简化数据库和用户界面之间的数据传递任务。
选择Nodejs的N个理由的更多相关文章
- 选择或者放弃MySQL的理由
MySQL 作为一个开源数据库,自从被 Oracle 接管后,其发展前景就一直受到开发社区的关注,其中也有质疑,最近,两位开发者分别发表了选择和放弃MySQL 的理由,值得数据库相关人员参考. And ...
- Android IOS WebRTC 音视频开发总结(七九)-- WebRTC选择H.264的四大理由
本文主要介绍WebRTC选择H.264的理由(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacke ...
- JDBC、ORM、JPA、Spring Data JPA,傻傻分不清楚?一文带你厘清个中曲直,给你个选择SpringDataJPA的理由!
序言 Spring Data JPA作为Spring Data中对于关系型数据库支持的一种框架技术,属于ORM的一种,通过得当的使用,可以大大简化开发过程中对于数据操作的复杂度. 本文档隶属于< ...
- Nodejs学习路线图
前言 用Nodejs已经1年有余,陆陆续续写了48篇关于Nodejs的博客文章,用过的包有上百个.和所有人一样,我也从Web开发开始,然后到包管 理,再到应用系统的开发,最后开源自己的Nodejs项目 ...
- 从现在开始使用nodejs开发的几点答疑
1.为什么要开始用nodejs, 而不是php 理由有三点: 因为我是前端程序员出身,nodejs都是用javascript写的,这样相当于前端和后端都使用javascript,开发更加有效率.当然很 ...
- NodeJS的一些总结
NodeJS的一些总结 Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”. 当前的服务器程序有什么问题?我们来做个数学题. 在 Java™ 和 PHP 这类语言中,每个连接都 ...
- nodeJs学习路线
转载自:http://blog.fens.me/nodejs-roadmap/ 前言 用Nodejs已经1年有余,陆陆续续写了48篇关于Nodejs的博客文章,用过的包有上百个. 和全部人一样,我也从 ...
- Nodejs的介绍
Nodejs的介绍 Node.js的是建立在Chrome的JavaScript的运行时,可方便地构建快速,可扩展的网络应用程序的平台.Node.js使用事件驱动,非阻塞I/O模型,轻量.高效,可以完美 ...
- 初识NodeJS,一个基于GoogleV8引擎的Javascript运行环境
思考 首先我们来思考一个问题:我们都知道几乎所有现代主流浏览器都全面支持了ECMAScript 5.1版标准,而JavaScript的标准是ECMAScript.那么我们就容易认为JavaScript ...
随机推荐
- hdu 5033 单调栈 ****
看出来是单调栈维护斜率,但是不会写,2333,原来是和询问放在一起的 #include <iostream> #include <cstdio> #include <cs ...
- (一)WebRTC手记之初探
转自:http://www.cnblogs.com/fangkm/p/4364553.html WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的We ...
- android开源项目和框架(转)
特效: http://www.androidviews.net/ http://www.theultimateandroidlibrary.com/ 常用效果: 1. https://github.c ...
- Linux学习笔记(14)文件系统管理
1 回顾分区与系统 (1)分区类型 Linux的分区一般包括主分区,扩展分区和逻辑分区.其中: 主分区最多只能分4个: 扩展分区只能有一个,也算作主分区的一种,即主分区加扩展分区最多有4个.但扩展分区 ...
- Loadrunner中参数化实战(6)-Random+Each occurrence
参数化数据30条: 脚本如下,演示登录,投资,退出操作是,打印手机号: 首先验证Vugen中迭代: Random+Each occurrence 设置迭代4次Action 结果如下:
- C#中Invoke的用法()
invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和beg ...
- windows修改虚拟内存
右键电脑属性: 高级系统设置: 性能设置: 虚拟内存更改:
- DSP using MATLAB 示例Example3.21
代码: % Discrete-time Signal x1(n) % Ts = 0.0002; n = -25:1:25; nTs = n*Ts; Fs = 1/Ts; x = exp(-1000*a ...
- BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊 ——Link-Cut Tree
[题目分析] 以前用分块的方法做过这道题目,现在再用LCT水一边,发现思路确实巧妙. 每次弹射,可以看作在一条边上走了过去,而且很重要的性质,每一个点的出边只有一条. 那么就很容易知道,可以用LCT维 ...
- 原生 js 写分页
欢迎留言或者加本人QQ172360937咨询 这段代码是用原生 js 写的一个分页的效果 <!doctype html> <html lang="en"> ...