目前,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,还对其进行了优化,使其在各环境下更加给力。

 初识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);

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

Node.JS初学者指南之基础介绍篇

  在命令行执行这两个应用程序,所以没有服务器端的延迟执行。对每个应用分别测试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 服务器端的JavaScript脚本新秀:Node.js相关推荐

  1. 服务器端执行javascript脚本

    想实现这样的功能: 单击一个服务器端按钮(登陆)后,如果登陆成功隐藏页面上的一个HTML按钮. 于是想通过在服务器端执行javascript脚本实现: private void Btn_login_C ...

  2. 【JS】把JavaScript脚本作为书签收藏起来并可单击执行

    效果说明 从操作上说,是将JavaScript脚本作为书签,想用的时候点一下收藏栏中对应的书签,即可执行脚本: 从作用上说,主要可以对当前页面进行一些脚本上的操作,比如对特定页面DOM进行操作.改变字 ...

  3. php能反序列化js的吗,javascript – 如何在node.js中反序列化PHP会话?

    我将 PHP $_SESSION数据存储在数据库中. 然后从Node.js服务器,我想获取该数据并反序列化它. con.query('SELECT user_id, data ' + 'FROM se ...

  4. 小汤学编程之JavaScript学习day01——认识JS、JS基础语法

    一.认识JS 1.JavaScript的组成     2.浏览器执行js简介     3.JavaScript是什么?     4.扩展内容 二.JS基础语法 1.代码书写位置     2.变量    ...

  5. 在服务器端运行JavaScript文件(一)

    rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cyc%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C0 ...

  6. Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)...

    什么是Node.js?还服务器端javascript?对于这个概念我在这篇文章不做解释,可以自己去搜索了解下,服务器端js不是新技术,只是最近的node.js的火爆让他爆发了,我会在以后的文章里解释什 ...

  7. JavaScript教程9 - Node.js

    Node.js 安装Node.js https://nodejs.org/ npm npm其实是Node.js的包管理工具(package manager). 命令行模式 执行node hello.j ...

  8. js是运行在服务器端的脚本语言,JavaScript脚本语言

    JavaScript脚本语言 JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行.下文为大家分享的是JavaScript ...

  9. paip.最好的脚本语言node js 环境搭建连接mysql

    paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模 ...

最新文章

  1. 实战:使用 Python 用不到 10 行代码计算汽车数量
  2. listview 的 selection mode 训练小例子
  3. 5G | 5G新基建最新进展及投资机会【包含五大板块】
  4. leetcode-13-罗马数字转整数
  5. 【算法】Bellman-Ford算法(单源最短路径问题)(判断负圈)
  6. Hello world开始
  7. Android生命周期函数执行顺序
  8. ie浏览器模拟器_航空飞机模拟器安卓版下载-航空飞机模拟器游戏下载
  9. python入门基础知识实例-Python入门基础知识实例,值得收藏!
  10. 力扣-876 链表的中间结点
  11. 传智播客-刘意-java深入浅出精华版学习笔记Day06
  12. Android计分器课程设计,课程设计题八:篮球比赛计分器
  13. Android init.rc介绍及其语法
  14. 2022华为机试真题 C++ 实现【勾股数元组】
  15. linux用户motd,linux需要装?那就和我一起来配置一个动态的MOTD登陆效果吧
  16. CE修改Eternium永恒之金【LUA篇】
  17. 史上非常简单、快速的解决Excel导出遇到Excel导出错误
  18. php 豆瓣isbn接口,ISBN书号查询
  19. 解读-m addrtype --dst-type LOCAL -j DOCKER
  20. Ubuntu下mount cifs

热门文章

  1. Linux splint命令
  2. flex java mysql,关于从Flex到Java到mysql:从Flex到Java到mysql-连接失败,从剪贴簿到Java到mysql-成功连接...
  3. [gitsourcetree]cherry pick和遴选的使用
  4. html display none取消,display none是什么意思?
  5. 蓝桥杯 安慰奶牛Python版
  6. ihs服务器限制文件上传,请教IHS配置问题
  7. android干不过苹果,安卓和苹果已经做到了平起平坐,为什么口碑上还超不过苹果?...
  8. linux获取符号表调试
  9. 蓝海创意云丨稀缺又高端,为电影“补妆”的调色师是怎样炼成的!
  10. GlusterFS 和 Ceph 比较