node.js 相关笔记

一,什么是node.js: 

      node.js并不是一门语言,而是一个平台 。 node.js是一个构建在Chrome JavaScript运行环境的平台,

      因为, node.js很巧妙的借用了web开发人员已经非常熟悉的JavaScript语法,使用V8 JavaScript 引擎(是Goole开发的一个用于Chrome浏览器的底层JavaScript引擎,用于解析JavaScript语句创建其运行环境) 来解析语句,并将其重建可在服务器上使用。所以严格上说node.js并不是服务器端运行的Javascript,而是可以在服务器端运行JavaScript语法(core JavaScript)的平台。node.js并不仅仅运行core JavaScript,node.js中还有文件系统、模块包、操作系统API、网络通信、二进制类型处理等。

 node.js 的架构:

 

       其中http、fs、net等都是node.js提供的核心模块,使用C/C++实现,外部用JavaScript封装。

 

二,node.js的优势:  

  1. node.js致力于使构建速度快、稳定的网络程序更简单
  2. node.js具有事件驱动和非阻塞I/O的特色,使之轻量级并且高效率
  3. node.js非常适合在分布式设备运行数据密集型实时应用程序

 

       node.js中代码是单进程、单线程执行的,使用事件轮询机制和非阻塞I/O(在回调函数中处理结果,在不新增额外线程的情况下对任务进行并行处理。

虽然JavaScript是单线程执行的,但浏览器是多线程的,负责调度管理JavaScript代码,让它们在恰当的时机执行。回调函数就是由浏览器调用的。

 // 我们所说的node.js单线程,是指node.js并没有给我们创建一个线程的能力,所有我们自己写的代码都是单线程执行的,在同一时间内,只能执行我们写的一句代码。但浏览器并不是单线程的,它会维护一个执行队列,循环检测,调度JavaScript线程来执行。因此单线程执行和并发操作并不冲突。

 

   在这些场景下使用node.js是非常合适的

 

  • web socket服务器
  • TCP/UDP套接字应用程序
  • 复杂逻辑的web应用
  • 命令行工具
  • 客户端Javascript编译器

 

 

三、node.js module初步理解 

在开发一个复杂的应用程序的时候,我们需要把各个功能拆分、封装到不同的文件,在需要的时候引用该文件。 而node.js使用模块和包来组织,其机制实现参照了CommonJS标准,虽未完全遵守,但差距不大,使用起来非常简单。

在 node.js中,一个node.js文件就是一个模块,文件内容可能是我们封装好的一些JavaScript方法、JSON数据、编译过的C/C++拓展等。

node.js使用exports和require对象来解决对外提供接口和引用模块的问题。

示例:

 

// test.js  ,此为一个模块(module)
var name='';

function setName(n){
    name=n;
} 

function printName(){
    console.log(name);
}

exports.setName=setName;
exports.printName=printName;



//index.js  此为另一个模块
var test1=require('./test'),
    test2=require('./test');
//无论调用多少次require,对于同一模块node.js只会加载一次,引用多次获取的仍是相同的实例




test1.setName(
'Byron'); test2.printName();

 

运行结果:

 

 

 

在上面例子中我们使用了相对路径 './test'来获取自定义文件模块,那么node.js有几种搜索加载模块方式呢?

  1. 核心模块优先级最高,直接使用名字加载,在有命名冲突的时候首先加载核心模块
  2. 文件模块只能按照路径加载(可以省略默认的.js拓展名,不是的话需要显示声明书写)
    1. 绝对路径
    2. 相对路径

 

  

npm是什么 

npm是node packaged modules的缩写,其实是一个nodejs的module的管理工具

 

什么是module 

所谓module和java中的包的概念很类似,一些解决方案的集合,官方会提供核心的几个,第三方的很多

 

如何安装第三方module 

因为nodejs的社区很活跃,有很多好用的第三方的包,我们可以在终端中使用npm的命令安装 

  • npm install [-g] <name>:使用install指令可以把nodule下载安装的nodejs的全局的path处,不加的话会安装到当前路径
  • npm remove <name>:移除module
  • npm update <name>:更新 module  

     还有一些常用命令可以看看npm常用命令

posted @ 2014-01-11 20:55  aspnet_如月  阅读(194)  评论(0编辑  收藏  举报