亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

node.js 的核心模塊

原創(chuàng) 2016-11-07 10:40:31 568
摘要:在后臺(tái)開(kāi)發(fā)語(yǔ)言中,比如Java、C#。他們都是隱含模塊化的,Node.js默認(rèn)幫我們提供了模塊化這種機(jī)制。  在服務(wù)器端,我們想要使用底層的一些功能需要導(dǎo)入一些“包”來(lái)對(duì)其操作,比如操作文件、網(wǎng)絡(luò)需要導(dǎo)入對(duì)應(yīng)的包。其它語(yǔ)言中都是基于類來(lái)實(shí)現(xiàn)的模塊化的思想,使用類來(lái)組織文件和文件之間的關(guān)聯(lián)。  而Node.js中使用的是JavaScript語(yǔ)言,ECMAScript僅僅規(guī)定了

在后臺(tái)開(kāi)發(fā)語(yǔ)言中,比如Java、C#。他們都是隱含模塊化的,Node.js默認(rèn)幫我們提供了模塊化這種機(jī)制。  在服務(wù)器端,我們想要使用底層的一些功能需要導(dǎo)入一些“包”來(lái)對(duì)其操作,比如操作文件、網(wǎng)絡(luò)需要導(dǎo)入對(duì)應(yīng)的包。其它語(yǔ)言中都是基于類來(lái)實(shí)現(xiàn)的模塊化的思想,使用類來(lái)組織文件和文件之間的關(guān)聯(lián)。  而Node.js中使用的是JavaScript語(yǔ)言,ECMAScript僅僅規(guī)定了基本的語(yǔ)法的書(shū)寫(xiě),并沒(méi)有規(guī)定文件之間 關(guān)聯(lián),也就是說(shuō)每個(gè)js文件之間是獨(dú)立的,Node.js已經(jīng)幫我們實(shí)現(xiàn)了js文件之間的關(guān)聯(lián)(模塊化)  Node.js中的模塊化是基于CommonJS規(guī)范的
JavaScript的局限性

  • 沒(méi)有模塊系統(tǒng)

  • 系統(tǒng)提供的接口較少,比如:缺少操作文件、I/O流等常用的接口

  • 沒(méi)有標(biāo)準(zhǔn)接口,缺少如web服務(wù)器、數(shù)據(jù)庫(kù)等統(tǒng)一接口

  • 缺乏管理系統(tǒng)導(dǎo)師JavaScript應(yīng)用中基本沒(méi)

  • CommonJS規(guī)范

  • Node.js開(kāi)發(fā)之初遵守了CommonJS規(guī)范

  • 使JavaScript達(dá)到像Java、Python、PHP等語(yǔ)言一樣有開(kāi)發(fā)大型應(yīng)用的基本能力

  • CommonJS規(guī)范規(guī)定每一個(gè)模塊都有一個(gè)單獨(dú)的作用域

  • CommonJS規(guī)范規(guī)定每個(gè)模塊對(duì)外公布的成員使用module.exports或者exports

  • 有了模塊化系統(tǒng)之后,Node.js提供了許多系統(tǒng)模塊:文件、Buffer、I/O流、Socket等

那么接下來(lái)看一下核心模塊

今天接觸到的核心模塊:

  • path模塊

  • 導(dǎo)入模塊 var path = require("path");

  • basename() 獲取文件名+后綴

path.basename("/foo/hello/world/123.html")    //第二個(gè)參數(shù),去掉獲取的文件名中的相同部分
path.basename("c:/foo/hello/world/123.html",".html")

dirname() 獲取目錄

path.dirname("/foo/hello/world/123.html")

extname() 獲取文件的擴(kuò)展名(尾綴名)

path.extname("/foo/hello/world/123.html")

join() 合并路徑

var p1 = "c://abc/xyz";     var p2 = "/123/456";
console.log(path.join(p1,p2));

parse() 把路徑轉(zhuǎn)換為一個(gè)對(duì)象

path.parse("c:\\home\\hello\\world\\123.html")
{ root: 'c:/',
    dir: 'c://home/hello/world',
    base: '123.html',
    ext: '.html',
    name: '123' }

format() 把一個(gè)路徑對(duì)象轉(zhuǎn)換成一個(gè)路徑字符串

 var obj = { root: 'c:\\',
      dir: 'c:\\home\\hello\\world',
      base: '123.html',
      ext: '.html',
      name: '123' }
  console.log(path.format(obj));

delimiter 環(huán)境變量的分隔符,可以跨平臺(tái) windows下是; 其它平臺(tái) :

path.sep 路徑的分隔符 windows下是\ 其它下是/

isAbsolute() 是否是絕對(duì)路徑

URL模塊

  • 導(dǎo)入模塊 var querystring = require("querystring");

  • parse() 把參數(shù)字符串解析成對(duì)象

var obj = querystring.parse("version=1.0&time=123");
  console.log(obj);

format() 把路徑對(duì)象轉(zhuǎn)換成字符串

var obj =  {
      protocol: 'http:',
      slashes: true,
      auth: null,
      host: 'www.baidu.com:8080',
      port: '8080',
      hostname: 'www.baidu.com',
      hash: '#abcd',
      search: '?version=1.0&time=1123',
      query: 'version=1.0&time=1123',
      pathname: '/images/1.jpg',
      path: '/images/1.jpg?version=1.0&time=1123',
      href: 'http://www.baidu.com:8080/images/1.jpg?version=1.0&time=1123#abcd' };  var str = url.format(obj);
  console.log(str);

querystring模塊

  • 導(dǎo)入模塊 var querystring = require("querystring");

  • parse() 把參數(shù)字符串解析成對(duì)象

var obj = querystring.parse("version=1.0&time=123");
  console.log(obj);

stringify() 把一個(gè)對(duì)象轉(zhuǎn)換成一個(gè)字符串

escape() url進(jìn)行編碼

unescape() url進(jìn)行解碼

那么核心模塊存在哪里呢,

核心模塊存儲(chǔ)在node.exe中,當(dāng)node.exe運(yùn)行的時(shí)候,核心模塊會(huì)被加載,require的時(shí)候會(huì)加載到內(nèi)存

在github上可以找到源代碼,lib文件夾下

核心模塊的執(zhí)行速度比較快


發(fā)佈手記

熱門(mén)詞條