node.js的特点与模块化开发

node.js的代码都是构建在模块化开发的基础之上,模块化开始也是node.js的核心之一。

node.js跳过了服务器,它自己不用建设在任何服务器软件之上,node.js的许多设计理念与经典架构(LAMP=linux +apache +mysql+php)有着很大的不同,它可以提供强大的伸缩能力,node.js没有web容器。

node.js的自身哲学:花最小的成本,追求更高的并发,更高的处理性能

node.js的特点:1.单线程

       2.非阻塞I/O   

          什么是IO? 就是输入和输出(input,output),什么会输入输出?如:硬盘,网络,file,socket,其他mysql,tcp都是网络IO的一种

       3.事件驱动

阻塞模式下,一个线程只能处理一个任务,想要提高吞吐量必须通过多线程,而非阻塞模式下,一个线程永远在执行计算操作,这个线程的CPU核心利用率永远是100%。

node.js底层是C++ (V8也是C++写的).底层代码中,近半数都用于事件队列,回调函数队列的构建,用事件驱动来完成服务器的任务调度。(鬼才)

node.js没有根目录,没有web容器,让node.js实现一个静态服务都非常难!!

传统非模块化开发的缺点:1.命名冲突   2.文件依赖

标准的模块化规范:

1。AMD -requirejs

2。CMD- seajs

模块化的规范定义的一些写代码的规则,只要遵循了同样的标准,基本上风格都是一致的

服务端的模块化规范:

1.Common.js  -Node.js

模块化相关的规则:

1.一个js文件 都是一个独立的模块,模块内部的成员都是相互独立的

2.模块化的导入和导出

案例1(exports):

在01.js文件中

var sum=function(a,b){
   sum = parseInt(a)+parseInt(b);
      
}

exports.sum=sum;

在02.js文件中

  //用require 进入模块

var module =require(./01.js)   //当前文件夹下的01.js文件
var ret =module.sum(12,13);
console.log(ret);
View Code

案例2(moudle)

在01.js文件中

var sum=function(a,b){
   sum = parseInt(a)+parseInt(b);
      
}

module.exports=sum;

在02.js文件中

var module=require('./01.js')

var ret=moudle(12,15);
console.log(ret);

成员的导出,还可以用global这个全局对象来实现

模块化的一些特性:

1.已经加载的模块会缓存(根据文件的路径,知晓已经加载的模块,不会重复加载),提高了性能

2.模块文件的后缀的3中情况:  js  json  node   (不加文件后缀,同名文件的优先级是按照从左到右的文件加载)

除了自定义模块还有 

    系统的核心模块(mudule):

  1.fs文件操作

  2.http网络操作   

    创建服务器  http.create( function(req,res)   {... } )

  3.path路径操作

  4.querystring查询参数解析(与url有重叠)

  5.url     url解析   url.parse(a,b)   能将url拆分成很多个部分

 

 

原文地址:https://www.cnblogs.com/JCDXH/p/11382498.html