node.js 的核心模塊


前幾天說以了下Node.js的模塊化,這里再次說一下為什么Node.js中需要模塊化

  在后台開發語言中,比如Java、C#。他們都是隱含模塊化的,Node.js默認幫我們提供了模塊化這種機制。
  在服務器端,我們想要使用底層的一些功能需要導入一些“包”來對其操作,比如操作文件、網絡需要導入對應的包。其它語言中都是基於類來實現的模塊化的思想,使用類來組織文件和文件之間的關聯。
  而Node.js中使用的是JavaScript語言,ECMAScript僅僅規定了基本的語法的書寫,並沒有規定文件之間
關聯,也就是說每個js文件之間是獨立的,Node.js已經幫我們實現了js文件之間的關聯(模塊化)
  Node.js中的模塊化是基於CommonJS規范的


JavaScript的局限性
  • 沒有模塊系統
  • 系統提供的接口較少,比如:缺少操作文件、I/O流等常用的接口
  • 沒有標准接口,缺少如web服務器、數據庫等統一接口
  • 缺乏管理系統導師JavaScript應用中基本沒

 

  • CommonJS規范
    • Node.js開發之初遵守了CommonJS規范
    • 使JavaScript達到像Java、Python、PHP等語言一樣有開發大型應用的基本能力
    • CommonJS規范規定每一個模塊都有一個單獨的作用域
    • CommonJS規范規定每個模塊對外公布的成員使用module.exports或者exports
    • 有了模塊化系統之后,Node.js提供了許多系統模塊:文件、Buffer、I/O流、Socket等

 

那么接下來看一下核心模塊

  今天接觸到的核心模塊:

    • path模塊

      • 導入模塊 var path = require("path");
      • basename() 獲取文件名+后綴

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

dirname() 獲取目錄

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

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

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

join() 合並路徑

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

parse() 把路徑轉換為一個對象

  path.parse("c:\\home\\hello\\world\\123.html")

  { root: 'c:/',
    dir: 'c://home/hello/world',
    base: '123.html',
    ext: '.html',
    name: '123' }

format() 把一個路徑對象轉換成一個路徑字符串

  var obj = { root: 'c:\\',
      dir: 'c:\\home\\hello\\world',
      base: '123.html',
      ext: '.html',
      name: '123' }

  console.log(path.format(obj));

 

delimiter 環境變量的分隔符,可以跨平台 windows下是; 其它平台 :

 

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

isAbsolute() 是否是絕對路徑

 

  • URL模塊
    • 導入模塊var url=requre("url")
    • parse()把字符串的路徑傳換成對象
      var uri = "http://www.baidu.com:8080/images/1.jpgversion=1.0&time=1123#abcd";
        console.log(url.parse(uri));

      format() 把路徑對象轉換成字符串

      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模塊

      • 導入模塊 var querystring = require("querystring");
      • parse() 把參數字符串解析成對象

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

stringify() 把一個對象轉換成一個字符串

escape() url進行編碼

unescape() url進行解碼

 

----------------------------------------------------分割線-----------------------------------------------

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

  • 核心模塊存儲在node.exe中,當node.exe運行的時候,核心模塊會被加載,require的時候會加載到內存
  • 在github上可以找到源代碼,lib文件夾下
  • 核心模塊的執行速度比較快

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM