Node.js基礎學習(第二幕)

Node.js的模塊系統
    Node.js中使用"Module(模塊)"來規劃不一樣的功能對象。
  模塊的分類:
 (1)核心模塊——nodejs的內置模塊node

    
 (2)第三方模塊(https://www.npmjs.com  經常使用的第三方模塊:express、less、grunt...)
 (3)自定義模塊: 每個被加載的.js文件對應一個模塊對象,包含相應的功能和函數。
    模塊中聲明的變量或函數的做用域是「模塊做用域」,不是golbal的成員,默認只能在當前js文件(即當前模塊)中使用。
    Node.js啓動時運行的第一個模塊,稱爲「主模塊」。——mail module,也是自身模塊。
    除主模塊以外的其餘模塊,稱爲「子模塊」。
    獲取主模塊對象:process.mainModule  require.main
    每個模塊均可以導出(exports)本身內部的對象供其餘模塊使用,也能夠引入(require)並使用其餘模塊中導出的對象。
    每個模塊內部均可以使用一個變量叫「module」,指向當前模塊本身。
    判斷當前模塊是不是主模塊:module===process.mainModuleexpress

 建立模塊:文件式自定義模塊npm

    

 加載模塊:其餘js文件中調用json

     

  
   預約義的模塊做用域成員:
    __dirname      當前模塊文件所在的目錄
    __filename     當前模塊文件所在目錄及文件名
    module          指向當前模塊的引用
    module.exports  指向當前模塊中待導出的供其餘模塊使用的對象
    exports          指向module.exports對象的引用
    require          引入其餘模塊,使用其餘模塊的module.exports對象

   自定義模塊:
    (1)文件模塊
        沒有後綴的文件模塊,被做爲js文件加載;.js後綴的文件模塊,被做爲js文件加載; .json後綴的文件模塊,被做爲JSON字符串加載,自動轉換爲對象;.node後綴的文件模塊,被做爲C/C++二進制加載;數組

   
    (2)目錄模塊:在引入是隻須要引入目錄名的四種形式:
        包含package.json文件的目錄:package.json中包含一個main屬性,指向該模塊的js文件——> {"main":"xx.js"};
        包含index.js文件的目錄;
        包含index.json文件的目錄;
        包含index.node文件的目錄;
      模塊查找順序:(1)文件/目錄模塊的緩存;(2)原生模塊的緩存;(3)原生模塊;(4)文件/目錄模塊;
  包(package):是根據CommonJS規範,對模塊進行標準封裝;
       包規範:包是一個目錄;目錄中包含一個包說明文件package.json,存放於包頂級目錄下;目錄中包含js文件,放在lib目錄下,若是有index.js,能夠放到頂級目錄下;二進制文件應該放到bin目錄下;文檔應該放到doc目錄下;單元測試文件應該放到test目錄下;
      CommonJS規範要求,包應該位於當前目錄或者父目錄下的node_modules文件夾下,require函數由近及遠進行查找。
  npm——包管理器
      Node.js的包管理工具,用於下載、安裝、升級、刪除包,或者發佈並維護包。
      npm官網:www.npmjs.com
      包的下載安裝:
      (1)下載到當前目錄:npm install 包名 會安裝到指定目錄下的node_modules文件夾下 查看目標路徑:npm root
      (2)下載到全局:npm install 包名 -g  會下載到npm目錄下  查看目標路徑:npm root -g
      包的生成:使用npm init 命令能夠在當前目錄下生成一個package.json文件;
      包的發佈:將自定義的包發佈到npmjs.com上:
        (1)在www.npmjs.com註冊帳號;
        (2)使用npm  adduser命令註冊或者登錄已有帳號;
        (3)進入到配置完成的包目錄,使用npm publish命令發佈包;
        (4)搜索或下載使用;
      更新包:npm update 包名;  刪除包:npm uninstall 包名;
  
Node.js核心模塊
一、console
    global.console    用於向stdout和stderr執行輸出
    console class    console模塊中的Console構造函數,能夠向任意輸出流(文件)中執行輸入
  
二、Query String:提供了處理url中「查詢字符串」部分的相關操做
    parse()    //從查詢字符串中解析出數據對象,參數爲要解析的查詢字符串
    stringify()    //將數據對象轉換爲查詢字符串格式,參數1,要轉換的對象;可選參數2,指向鍵值對之間的分隔符;可選參數3,執行鍵和值之間的分隔符;緩存

    
三、Url模塊: 提供了處理url中不一樣部分的相關操做
    parse()    //解析出url中的各個組成部分,參數1:要解析的url字符串;可選參數2:將查詢字符串部分(query)解析爲對象,值爲true或false
    format()    //將對象反向格式化爲url格式,參數爲url對象
    resolve()    //根據基地址解析出相對url,參數1:基地址;參數2,相對地址服務器

    
四、Path模塊:提供了對文件路徑進行操做的相關方法
    parse()    //解析一個路徑爲對象,參數爲路徑字符串
    format()    //將路徑對象格式化爲字符串,參數爲路徑對象
    resolve()    //根據基礎路徑解析出一個目標路徑的絕對地址,參數1:基礎路徑;參數2,目標路徑
    relative()    //根據基礎路徑,獲取目標路徑與其的相對關係,參數1:基礎路徑;參數2,目標路徑app

    
五、Dns模塊: 提供了域名到IP地址的雙向解析功能
    lookup()    //將一個域名解析爲IP地址,從操做系統中查詢(緩存)
    resolve()    //將一個域名解析爲一個dns記錄解析數組,從dns服務器上查詢
    reverse()    //把一個IP地址反向解析爲一組域名(不少狀況下解析不出來你沒)less

    

  
六、Util模塊:工具模塊
    format()    //使用帶佔位符的方式格式化字符串
    inspect()    //返回一個對象的字符串表示
    inherits()    //實現構造方法之間的繼承異步

    
七、Buffer: 緩衝區,一塊專用於存儲數據的內存區域;它是全局對象Global的成員,使用時無需引入。

  
八、fs模塊:fs模塊提供了文件讀寫、改名、刪除、遍歷目錄等操做
    經常使用class:
    fs.stats    //文件或目錄的統計信息描述對象
    fs.ReadStream    //stream.Readable接口的實現對象
    fs.WriteStream    //stream.Writeable接口的實現對象
    fs.FSWatcher    //可用於監視文件修改的文件監視器對象

  ---------------------------------------------------------------------------------------
    經常使用方法:
    fs.mkdir()        //建立目錄
    fs.rmdir()        //刪除目錄
    fs.readdir()    //讀取目錄下的內容
    fs.readFile()    //讀取文件的內容
    fs.writeFile()    //向文件中寫入內容
    fs.appendFile()    //向文件中追加內容
    fs.unlink()        //刪除文件
    fs.rename()    //重命名文件
    fs.stat()        //用於返回一個文件或目錄的統計信息對象(fs.stats對象)
    以上方法中都有異步和同步(Sync)兩種;全部的異步方法都有一個回調函數,回調函數中的第一個參數都是I/O錯誤對象err
    ---------------------------------------------------------------------------------------
    fs.stat() & fs.statSync()    //用於返回一個文件或目錄的統計信息對象(fs.stats對象)
    fs.stats對象方法:
        stats.isFile()            //是否爲文件
        stats.isDirectory()    //是否爲目錄
    ---------------------------------------------------------------------------------------
    操做目錄:
    fs.mkdir()     & fs.mkdirSync()       //建立目錄
    fs.rmdir()     & fs.rmdirSync()       //刪除目錄
    fs.readdir()   & fs.readdirSync()    //讀取目錄下的內容

  

相關文章
相關標籤/搜索