目前,Node.js是在前端页面开发中十分受欢迎的,它是一套用来编写高性能网络服务器的JavaScript工具包,在本文中,将带领各位初学者介绍Node JS的基本知识,要求本文的阅读对象为有一定Javascript和其他开发语言基础的读者。

  什么是Node.js

  Node是一个Javascript运行环境(runtime)。实际上它是对GoogleV8引擎(应用于Google Chrome浏览器)进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。例 如,在服务器环境中,处理二进制数据通常是必不可少的,但Javascript对此支持不足,因此,V8.Node增加了Buffer类,方便并且高效地 处理二进制数据。因此,Node不仅仅简单的使用了V8,还对其进行了优化,使其在各环境下更加给力。

  发展历史

  2009年2月,Ryan Dahl在博客上宣布准备基于V8创建一个轻量级的Web服务器并提供一套库。

  2009年5月,Ryan Dahl在GitHub上发布了最初版本的部分Node.js包,随后几个月里,有人开始使用Node.js开发应用。

  2009年11月和2010年4月,两届JSConf大会都安排了Node.js的讲座。

  2010年年底,Node.js获得云计算服务商Joyent资助,创始人Ryan Dahl加入Joyent全职负责Node.js的发展。

  2011年7月,Node.js在微软的支持下发布Windows版本。

  初识Node.js

  要开始使用Node.js的,必须先了解Node.js和传统的服务器端脚本环境(如:PHP,Python和Ruby的,等等)之间的差异。

  相信大部分读者都已经对ajax编程十分熟悉了,其中ajax中的a(asynchronous)指的是异步编成,所以在node.js世界中,一切的方法都是异步执行的,因此比如你需要程序中阅读一个操作系统中的文件,则必须指定一个回调方法,则在读取完这个文件后,则会执行这个回调方法的内容。

  下面,就Node.js跟其他语言来做个小的对比,读者可以可以看出其中的端倪。因为Node.js不是服务器运行环境,它实际上是在服务端运行的javascript,因此在性能上是十分高效的。下面是Node.js编写的一个小程序代码:

var i, a, b, c, max;
max = 1000000000;
var d = Date.now();
for (i = 0; i < max; i++) {
a = 1234 + 5678 + i;
b = 1234 * 5678 + i;
c = 1234 / 2 + i;
}
 而相同的PHP代码如下:
$a = null;
$b = null;
$c = null;
$i = null;
$max = 1000000000;
$start = microtime(true);
for ($i = 0; $i < $max; $i++) {
$a = 1234 + 5678 + $i;
$b = 1234 * 5678 + $i;
$c = 1234 / 2 + $i;
}
var_dump(microtime(true) - $start);

  下面的表是两者对比的性能列表,以微秒为单位,如下:

  在命令行执行这两个应用程序,所以没有服务器端的延迟执行。对每个应用分别测试10次,取平均值,结果。如果循环的次数比较少,则php的速度快点,但这种优势,随着迭代次数的增加而减少,会发现都比nodejs慢了!

  可以看到Node.js速度是很快,但必须正确地使用它。下面介绍Node.js中几个重要的概念:

  Modules模块

  Node.js使用Module模块去划分不同的功能,以简化应用的开发。Modules模块有点象C语言中的类库。每一个Node.js的类库都包含了十分丰富的各类函数,比如http模块就包含了和http功能相关的很多函数,可以帮助开发者很容易地对比如http,tcp/udp等进行操作,还可以很容易的创建http和tcp/udp的服务器。

  要在程序中使用模块是十分方便的,只需要如下:

  在这里,引入了http类库,并且对http类库的引用存放在http变量中了。这个时候,node.js会在我们应用中搜索是否存在node_modules的目录,并且搜索这个目录中是否存在http的模块。如果node.js找不到这个目录,则会到全局模块缓存中去寻找,用户可以通过相对或者绝对路径,制定模块的位置,比如:

  var myModule = require('./myModule.js');

  模块中包含了很多功能代码片断,在模块中的代码大部分都是私有的,意思是在模块中定义的函数方法和变量,都只能在同一个模块中被调用。当然,可以将某些方法和变量暴露到模块外,这个时候可以使用export是对象去实现,比如如下代码:

var PI = Math.PI;
exports.area = function (r) {
return PI * r * r;
};
exports.circumference = function (r) {
return 2 * PI * r;
};

  上面的代码中,创建了PI这个变量,这个变量只能在同一个模块中被访问,并且用exports分别将两个方法area和circumference对外暴露出去了,因此在其他模块中可以访问。

  尽量避免使用全局变量

  Node.js是使用Google的V8 JavaScript引擎。因此,我们应该遵循的最��实践去进行客户端的开发。比如,我们应该尽量避免将所有东西都放在全局变量中。然而,这并不总是可能的。在node.js中,要声明全局变量的话,甚至可以省略var关键字,这样你可以很容易地创建一个全局变量的函数,比如:

globalVariable = 1;

  globalFunction = function () { ... };

  但是尽可能的话,还是应该少在Node.js中到处使用全局变量。

  Node.js的安装

  下面介绍下Node.js的安装,首先在nodejs.org的网站上根据操作系统下载相关的安装包,对于linux下的安装,可以如下进行: 

sudo apt-get update

  sudo apt-get install node

  或者:

 sudo aptitude update

  sudo aptitude install node

  Node.js就会在sid库,现在可以将它们增加到sources来源列表中

  sudo echo deb http://ftp.us.debian.org/debian/ sid main > /etc/apt/sources.list.d/sid.list

  但要注意的是,在完成安装后,需要移走/etc/apt/sources.list.d/sid.list。

更多关于Node.js的详细信息,或者下载地址请点这里       阅读原文

Node.js简介(转)的更多相关文章

  1. 01 Node.js简介, 安装&配置

    Node.js 简介 Node.js 是什么 Node.js 有着强大而灵活的包管理器(node package manager,npm) 目前, 已经有强大第三方工具模块, 例如数据库连接, 网站开 ...

  2. 《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  3. node.js 简介

    简介:     Node,是一个可以让 JavaScript 运行在服务器端的平台.它可以让 JavaScript 脱离浏览器的束缚运行在一般的服务器环境下     Node.js 是一个为实时Web ...

  4. 写给Java开发者的Node.JS简介

    前言 今天上推特看见这篇文章,点进去发现是新货. 正好最近想入Node的坑,又有一些Java基础,所以希望翻译出来给大家,同时也让自己加深理解. 才疏学浅,如有不妥之处请指正. 原文链接:Node f ...

  5. node.js入门系列(一)--Node.js简介

    什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一 ...

  6. 【个人笔记】《知了堂》node.js简介及创建应用

    Node.js是什么? Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的Web应用程序框架.Node.js自带运行时环境可在Javascript脚本的基础上可以解释和执行 ...

  7. Node.js学习(第一章:Node.js简介)

    Node.js是什么? Node.js 诞生于 2009 年,由 Joyent 的员工 Ryan Dahl 开发而成, 目前官网最新版本已经更新到 12.0.0版本,最新稳定的是10.15.3.Nod ...

  8. Node.js学习笔记(1) - Node.js简介

    近期在看一些Node.js的知识,看完后觉得,一些前面的东西忘记了,于是整理一下,方便自己查阅,也希望对学习Node.js的朋友有些帮助: 当然以下只是我个人的观点和理解,不喜勿喷,也望大神指教. 一 ...

  9. Node.js—简介

    一.Node.js是什么 1. 基本概述 Node.js是一个可以让JavaScript运行在服务器端的平台.它是一个为实时Web应用开发而诞生的平台,它从诞生之初就充分考虑了在实时响应.超大规模数据 ...

随机推荐

  1. 使用 Excel 可以很方便的做程序原型

    使用 Excel 可以很方便的做程序原型 比如计算 单片机的端口模式,可以使用 Excel 很方便的计算出来,花了 15 分钟做好. 还可以使用函数自动根据二进制计算出 十六进制. 然后如果再使用软件 ...

  2. 聊聊Oracle 11g的Snapshot Standby Database(下)

    3.Snapshot Standby行为研究 下面我们分析一下Snapshot Standby的工作性质和行为性质.我们在主库方向研究当前状态. --主库日志情况 SQL> select gro ...

  3. Java 设计模式之抽象工厂模式(三)

    原文地址:Java 设计模式之抽象工厂模式(三) 博客地址:http://www.extlight.com 一.前言 上篇文章 <Java 设计模式之工厂模式(二)>,介绍了简单工厂模式和 ...

  4. angular中的ng-bind-html和$sce服务

    输入的内容存储在数据库中,然后再在数据库中将这些数据读写到页面上,比如你使用了某个第三方的脚本或者库.加载了一段html等等,可能会多了一些css的样式(显示在界面上) 这个时候我们可以利用angul ...

  5. 本地Office Project计划表同步到SharePoint2013任务列表的权限问题

    使用SharePoint做项目管理时,项目任务列表往往比较重要,通常使用任务列表体现项目计划,而这个任务列表经常会根据项目计划的变更而进行调整,但更多时候项目管理者会习惯在本地Project中维护这份 ...

  6. mysql索引相关理解

    1.索引是高效获取数据的数据结构, 2.唯一索引,索引值不重复unique create unique index 索引名 on 表名(字段) alter table 表名 add unique in ...

  7. Kossel的一种滑块位置计算方法

    做了一个小激光雕刻机之后,研究了一下这款3D打印机的结构和工作原理,一下就对这个运动过程很感兴趣,这三个杆是怎么联动使得喷头保持在一个平面上运动呢?打算先做一个架构,然后把激光器放在上面不是可以方便雕 ...

  8. GOF23设计模式之中介者模式(mediator)

    一.中介者模式概述 如果一个系统中对象之间的联系呈现网状结构,对象之间存在大量多对多的关系,导致关系及其复杂,这时可以引入一个中介者对象,使得各个对象只跟中介者对象打交道,从而将复杂的网络结构化为星型 ...

  9. sklearn中的predict与predict_proba的区别(得到各条记录每个标签的概率(支持度))

    假定在一个k分类问题中,测试集中共有n个样本.则: predict返回的是一个大小为n的一维数组,一维数组中的第i个值为模型预测第i个预测样本的标签: predict_proba返回的是一个n行k列的 ...

  10. Java-Runoob-高级教程:Java 文档注释

    ylbtech-Java-Runoob-高级教程:Java 文档注释 1.返回顶部 1. Java 文档注释 Java 支持三种注释方式.前两种分别是 // 和 /* */,第三种被称作说明注释,它以 ...