gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

一文詳解Node中的模塊化、文件系統與環境變量

本篇文章帶大家深入了解Node中的模塊化、文件系統與環境變量,有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

一文詳解Node中的模塊化、文件系統與環境變量

一、Node.js模塊化

1.0、變量作用域

(1)、在瀏覽器端使用var或不使用關鍵字定義的變量屬于全局作用域,也就是可以使用window對象訪問。【相關教程推薦:nodejs視頻教程、編程教學】

    <script>       var a = 100;        (function () {         b = 200;       })();        console.log(window.a, a);       console.log(window.b, b);     </script>
登錄后復制

結果:

一文詳解Node中的模塊化、文件系統與環境變量

(2)、在Node.js中沒有window對象

一文詳解Node中的模塊化、文件系統與環境變量

(3)、在Node.js的交互環境下,定義的變量屬于global,global是類似瀏覽器端的window對象

一文詳解Node中的模塊化、文件系統與環境變量

(4)、在模塊中(文件中)有global對象,使用關鍵字var,let,const定義的成員不屬于global對象,僅在當前模塊中有效,而不使用關鍵字定義的對象屬于global對象。

var a=100; b=200; let c=300; const d=400; console.log(global); console.log(global.a); console.log(global.b); console.log(global.c); console.log(global.d);
登錄后復制

終端輸出:

一文詳解Node中的模塊化、文件系統與環境變量

1.1、模塊概要

早期的javascript版本沒有塊級作用域、沒有類、沒有包、也沒有模塊,這樣會帶來一些問題,如復用、依賴、沖突、代碼組織混亂等,隨著前端的膨脹,模塊化顯得非常迫切。

一文詳解Node中的模塊化、文件系統與環境變量

前端模塊化規范如下:

一文詳解Node中的模塊化、文件系統與環境變量

常見的的JavaScript模塊規范有:CommonJS、AMD、CMD、UMD、原生模塊化。

雖然我們學習過ES6的模塊化但是ES6與NodeJS使用不同的模塊化規范,單獨學習NodeJS的模塊化非常有必要。

模塊化是指解決一個復雜問題時,自頂向下逐層把系統劃分成若干模塊的過程。對于整個系統來說,模塊是可組合、分解和更換 的單元。

JavaScript在早期的設計中就沒有模塊、包、類的概念,開發者需要模擬出類似的功能,來隔離、組織復雜的JavaScript代碼,我們稱為模塊化。

模塊就是一個實現特定功能的文件,有了模塊我們就可以更方便的使用別人的代碼,要用什么功能就加載什么模塊

模塊化開發的四點好處:

  (1)、 避免變量污染,命名沖突

  (2)、提高代碼復用率

  (3)、提高了可維護性

  (4)、方便依賴關系管理

nodejs中根據模塊的來源不同,將模塊分為了3大類,分別是:

  • 內置模塊(內置模塊是由Node.js官方提供的,例如fs、path、http等)
  • 自定義模塊 (用戶創建的每個 .js文件,都是自定義模塊)
  • 第三方模塊 (由第三方開發出來的模塊,并非官方提供的內置模塊,也不是用戶創建的自定義模塊,使用前需要先下載)

模塊作用域。

和函數作用域類似,在自定義模塊中定義的變量、方法等成員,只能在當前模塊內被訪問,這種模塊級別的訪問限制,叫做模塊作用域。

模塊作用域的好處:防止了全局變量污染的問題

1.2、CommonJS

CommonJS就是一個JavaScript模塊化的規范,該規范最初是用在服務器端NodeJS中,前端的webpack也是對CommonJS原生支持的。

根據這個規范

(1)、每一個文件就是一個模塊其內部定義的變量是屬于這個模塊的,不會對外暴露,也就是說不會污染全局變量。

(2)、導入自定義的模塊時路徑需要以./或../開始,同一路徑下也不能省略。

(3)、如果反復多次require模塊,只加載一次。

(4)、require引入模塊時,后綴名.js可以省略

(5)、每個模塊文件都是一個獨立的函數級作用域,在其它模塊中不能直接訪問

m1.js:

console.log("這是模塊m1"); let a=100; b=200;
登錄后復制

m2.js

var m11=require("./m1"); console.log(a); console.log(b);
登錄后復制

結果:

一文詳解Node中的模塊化、文件系統與環境變量

從上面的示例可以看出a在模塊2中是訪問不到的,模塊其實就是一個封閉的函數:

m1.js的代碼如下:

console.log("這是模塊m1"); let a=100; b=200; //輸出當前函數 console.log(arguments.callee+"");
登錄后復制

實際輸出結果:

一文詳解Node中的模塊化、文件系統與環境變量

function (exports, require, module, __filename, __dirname) { console.log("這是模塊m1"); let a=100; b=200; //輸出當前函數 console.log(arguments.callee+""); }
登錄后復制

(6)、每個模塊中都包含如下5個對象:

exports:導出對象,默認為{}

一文詳解Node中的模塊化、文件系統與環境變量

require:導入函數,使用該函數可以實現模塊的依賴

一文詳解Node中的模塊化、文件系統與環境變量

module:模塊信息,用于記錄當前模塊的所有信息

一文詳解Node中的模塊化、文件系統與環境變量

__filename:當前模塊的文件全路徑,含文件名

一文詳解Node中的模塊化、文件系統與環境變量

__dirname:當前模塊的文件路徑不含文件名

一文詳解Node中的模塊化、文件系統與環境變量

(7)、使用exports或module.exports對象可以將當前模塊中需要導出的內容暴露出去。

m1.js

let a=100; let b=()=>{     return 200; };  exports.a=a; exports.b=b;
登錄后復制

m2.js

const m1=require("./m1"); console.log(m1); console.log(m1.a); console.log(m1.b());
登錄后復制

結果:

一文詳解Node中的模塊化、文件系統與環境變量

(8)、導入模塊內容可以結合結構語法

m1.js

exports.a=100; exports.b=function(){     return 200; };
登錄后復制

m2.js

const {a,b:fun}=require("./m1"); console.log(a); console.log(fun());
登錄后復制

結果:

一文詳解Node中的模塊化、文件系統與環境變量

1.3、NodeJS中使用CommonJS模塊管理

CommonJS的核心思想就是通過 require 方法來同步加載所要依賴的其他模塊,然后通過 exports 或者 module.exports 來導出需要暴露的接口。

CommonJS API編寫應用程序,然后這些應用可以運行在不同的JavaScript解釋器和不同的主機環境中。

2009年,美國程序員Ryan Dahl創造了node.js項目,將javascript語言用于服務器端編程。這標志"Javascript模塊化編程"正式誕生。因為老實說,在瀏覽器環境下,以前沒有模塊也不是特別大的問題,畢竟網頁程序的復雜性有限;但是在服務器端,一定要有模塊,與操作系統和其他應用程序互動,否則根本沒法編程。NodeJS是CommonJS規范的實現,webpack 也是以CommonJS的形式來書寫。

CommonJS定義的模塊分為:{模塊引用(require)} {模塊定義(exports)} {模塊標識(module)} //require()用來引入外部模塊; //exports對象用于導出當前模塊的方法或變量,唯一的導出口; //module對象就代表模塊本身。
登錄后復制

Nodejs的模塊是基于CommonJS規范實現的,通過轉換也可以運行在瀏覽器端。

一文詳解Node中的模塊化、文件系統與環境變量

特點:

1、所有代碼都運行在模塊作用域,不會污染全局作用域。
2、模塊可以多次加載,但是只會在第一次加載時運行一次,然后運行結果就被緩存了,以后再加載,就直接讀取緩存結果。要想讓模塊再次運行,必須清除緩存。
3、模塊加載的順序,按照其在代碼中出現的順序。

1.3.1、模塊定義

根據commonJS規范,一個單獨的文件是一個模塊每一個模塊都是一個單獨的作用域,也就是說,在該模塊內部定義的變量,無法被其他模塊讀取,除非為global對象的屬性

模塊擁有像函數一樣的函數級作用域:

一文詳解Node中的模塊化、文件系統與環境變量

  • 每個模塊內部,module變量代表當前模塊

  • module變量是一個對象,它的exports屬性(即module.exports)是對外的接口

  • 加載某個模塊,其實是加載該模塊的module.exports屬性。require()方法用于加載模塊。

模塊只有一個出口,module.exports對象,我們需要把模塊希望輸出的內容放入該對象。

mathLib.js模塊定義

var message="Hello CommonJS!";  module.exports.message=message; module.exports.add=(m,n)=>console.log(m+n);
登錄后復制

在 Node.js 中,創建一個模塊非常簡單,如下我們創建一個 'main.js' 文件,代碼如下:

var hello = require('./hello'); hello.world();
登錄后復制

以上實例中,代碼 require('./hello') 引入了當前目錄下的hello.js文件(./ 為當前目錄,node.js默認后綴為js)。

Node.js 提供了exports 和 require 兩個對象,其中 exports 是模塊公開的接口,require 用于從外部獲取一個模塊的接口,即所獲取模塊的 exports 對象。

接下來我們就來創建hello.js文件,代碼如下:

exports.world = function() {   console.log('Hello World'); }
登錄后復制

在以上示例中,hello.js 通過 exports 對象把 world 作為模塊的訪 問接口,在 main.js 中通過 require('./hello') 加載這個模塊,然后就可以直接訪 問main.js 中 exports 對象的成員函數了。

有時候我們只是想把一個對象封裝到模塊中,格式如下:

module.exports = function() {  // ...}
登錄后復制

例如:

//hello.js  function Hello() {      varname;      this.setName = function(thyName) {          name = thyName;      };      this.sayHello = function() {          console.log('Hello ' + name);      };  };  module.exports = Hello;
登錄后復制

這樣就可以直接獲得這個對象了:

//main.js  var Hello = require('./hello');  hello = new Hello();  hello.setName('BYVoid');  hello.sayHello();
登錄后復制

模塊接口的唯一變化是使用 module.exports = Hello 代替了exports.world = function(){}。 在外部引用該模塊時,其接口對象就是要輸出的 Hello 對象本身,而不是原先的 exports。

1.3.2、模塊依賴

加載模塊用require方法,該方法讀取一個文件并且執行,返回文件內部的module.exports對象。

在用require加載自定義模塊期間,可以省略.js這個后綴名。

myApp.js 模塊依賴

var math=require('./mathLib'); console.log(math.message); math.add(333,888);
登錄后復制

3、測試運行

安裝好node.JS

打開控制臺,可以使用cmd命令,也可以直接在開發工具中訪問

一文詳解Node中的模塊化、文件系統與環境變量

運行

一文詳解Node中的模塊化、文件系統與環境變量

1.3.3、內置模塊加載

也許你已經注意到,我們已經在代碼中使用了模塊了。像這樣:

var http = require("http");  ...  http.createServer(...);
登錄后復制

Node.js中自帶了一個叫做"http"的模塊,我們在我們的代碼中請求它并把返回值賦給一個本地變量。

這把我們的本地變量變成了一個擁有所有 http 模塊所提供的公共方法的對象。

Node.js 的 require方法中的文件查找策略如下:

由于Node.js中存在4類模塊(原生模塊和3種文件模塊),盡管require方法極其簡單,但是內部的加載卻是十分復雜的,其加載優先級也各自不同。如下圖所示:

一文詳解Node中的模塊化、文件系統與環境變量

從文件模塊緩存中加載

盡管原生模塊與文件模塊的優先級不同,但是都不會優先于從文件模塊的緩存中加載已經存在的模塊。

從原生模塊加載

原生模塊的優先級僅次于文件模塊緩存的優先級。require方法在解析文件名之后,優先檢查模塊是否在原生模塊列表中。以http模塊為例,盡管在目錄下存在一個http/http.js/http.node/http.json文件,require("http")都不會從這些文件中加載,而是從原生模塊中加載。

原生模塊也有一個緩存區,同樣也是優先從緩存區加載。如果緩存區沒有被加載過,則調用原生模塊的加載方式進行加載和執行。

從文件加載

當文件模塊緩存中不存在,而且不是原生模塊的時候,Node.js會解析require方法傳入的參數,并從文件系統中加載實際的文件,加載過程中的包裝和編譯細節在前一節中已經介紹過,這里我們將詳細描述查找文件模塊的過程,其中,也有一些細節值得知曉。

require方法接受以下幾種參數的傳遞:

  • http、fs、path等,原生模塊。
  • ./mod或../mod,相對路徑的文件模塊。
  • /pathtomodule/mod,絕對路徑的文件模塊。
  • mod,非原生模塊的文件模塊。

node_modules文件夾用來存放所有已安裝到項目中的包。require()導入第三方包時,就是從這個目錄中查找并加載包。

package-lock.json配置文件用來記錄node_modules目錄下的每一個包的下載信息,例如包的名字、版本號、下載地址等。

注意:不要手動修改node_modules或package-lock.json文件中的任何代碼,npm包管理工具會自動維護它們。

1.3.4、module對象

在每個.js自定義模塊中都有一個module對象,它里面存儲了和當前模塊有關的信息

一文詳解Node中的模塊化、文件系統與環境變量

每個模塊內部,module變量代表當前模塊
module變量是一個對象,它的exports屬性(即module.exports)是對外的接口
加載某個模塊,其實是加載該模塊的module.exports屬性。require()方法用于加載模塊。

二、Node.js 文件系統

Node.js 提供一組類似 UNIX(POSIX)標準的文件操作API。 Node 導入文件系統模塊(fs)語法如下所示:

var fs = require("fs")
登錄后復制

2.1、異步和同步

Node.js 文件系統(fs 模塊)模塊中的方法均有異步和同步版本,例如讀取文件內容的函數有異步的 fs.readFile() 和同步的 fs.readFileSync()。

異步的方法函數最后一個參數為回調函數,回調函數的第一個參數包含了錯誤信息(error)。

建議大家是用異步方法,比起同步,異步方法性能更高,速度更快,而且沒有阻塞。

實例

創建 input.txt 文件,內容如下:

foo
登錄后復制

創建 filereaddemo.js 文件, 代碼如下:

const fs=require("fs");  //依賴內置模塊fs,用于文件管理  //異步讀取文件students.txt,設置讀取成功時的回調函數,err表示錯誤信息,data表示數據 fs.readFile("students.txt",function(err,data){     if(err) throw err;     console.log("異步:"+data+""); });  console.log("---------------");  //同步讀取 let data=fs.readFileSync("students.txt"); console.log("同步:"+data+"");
登錄后復制

以上代碼執行結果如下:

一文詳解Node中的模塊化、文件系統與環境變量

接下來,讓我們來具體了解下 Node.js 文件系統的方法。

2.2、獲取文件信息

以下為通過異步模式獲取文件信息的語法格式:

fs.stat(path, callback)
登錄后復制

參數使用說明如下:

  • path – 文件路徑。

  • callback – 回調函數,帶有兩個參數如:(err, stats), stats 是 fs.Stats 對象。

fs.stat(path)執行后,會將stats類的實例返回給其回調函數。可以通過stats類中的提供方法判斷文件的相關屬性。例如判斷是否為文件:

const fs=require("fs");  fs.stat("students.txt",(err,stats)=>{     console.log("是文件嗎?"+stats.isFile());     console.log("是目錄嗎?"+stats.isDirectory());     console.log(stats); });
登錄后復制

結果:

一文詳解Node中的模塊化、文件系統與環境變量

stats類中的方法有:

方法 描述
stats.isFile() 如果是文件返回 true,否則返回 false。
stats.isDirectory() 如果是目錄返回 true,否則返回 false。
stats.isBlockDevice() 如果是塊設備返回 true,否則返回 false。
stats.isCharacterDevice() 如果是字符設備返回 true,否則返回 false。
stats.isSymbolicLink() 如果是軟鏈接返回 true,否則返回 false。
stats.isFIFO() 如果是FIFO,返回true,否則返回 false。FIFO是UNIX中的一種特殊類型的命令管道。
stats.isSocket() 如果是 Socket 返回 true,否則返回 false。

接下來我們創建 file.js 文件,代碼如下所示:

var fs = require("fs");  console.log("準備打開文件!"); fs.stat('input.txt', function (err, stats) {    if (err) {        return console.error(err);    }    console.log(stats);    console.log("讀取文件信息成功!");     // 檢測文件類型    console.log("是否為文件(isFile) ? " + stats.isFile());    console.log("是否為目錄(isDirectory) ? " + stats.isDirectory());     });
登錄后復制

以上代碼執行結果如下:

$ node file.js 準備打開文件! { dev: 16777220,   mode: 33188,   nlink: 1,   uid: 501,   gid: 20,   rdev: 0,   blksize: 4096,   ino: 40333161,   size: 61,   blocks: 8,   atime: Mon Sep 07 2015 17:43:55 GMT+0800 (CST),   mtime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST),   ctime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST) } 讀取文件信息成功! 是否為文件(isFile) ? true 是否為目錄(isDirectory) ? false
登錄后復制

2.3、寫入文件

以下為異步模式下寫入文件的語法格式:

fs.writeFile(filename, data[, options], callback)
登錄后復制

如果文件存在,該方法寫入的內容會覆蓋舊的文件內容。

參數使用說明如下:

  • path – 文件路徑。

  • data – 要寫入文件的數據,可以是 String(字符串) 或 Buffer(流) 對象。

  • options – 該參數是一個對象,包含 {encoding, mode, flag}。默認編碼為 utf8, 模式為 0666 , flag 為 'w'

  • callback – 回調函數,回調函數只包含錯誤信息參數(err),在寫入失敗時返回。

接下來我們創建 file.js 文件,代碼如下所示:

const fs=require("fs");  fs.writeFile("output1.txt","異步hello","utf-8",function(err){     if(!err){         console.log("異步文件寫入成功!");     }     else{         throw err;     } }); console.log("---------------"); fs.writeFileSync("output2.txt","同步hello","utf-8"); console.log("同步文件寫入成功");
登錄后復制

以上代碼執行結果如下:

一文詳解Node中的模塊化、文件系統與環境變量

2.4、刪除文件

以下為刪除文件的語法格式:

fs.unlink(path, callback)
登錄后復制

參數使用說明如下:

  • path – 文件路徑。

  • callback – 回調函數,沒有參數。

接下來我們創建 file.js 文件,代碼如下所示:

const fs=require("fs");  fs.unlink("output1.txt",function(err){     if(err){         throw err;     }     else{         console.log("異步刪除文件成功!");     } }); console.log("--------------------"); fs.unlinkSync("output2.txt"); console.log("同步刪除文件成功!");
登錄后復制

以上代碼執行結果如下:

一文詳解Node中的模塊化、文件系統與環境變量

2.5、創建目錄

以下為創建目錄的語法格式:

fs.mkdir(path[, mode], callback)
登錄后復制

參數使用說明如下:

  • path – 文件路徑。

  • mode – 設置目錄權限,默認為 0777。

  • callback – 回調函數,沒有參數。

接下來我們創建mkdirfile.js 文件,代碼如下所示:

const fs=require("fs");  fs.mkdir("dir1",function(err){     if(err){         throw err;     }     else{         console.log("異步創建目錄成功!");     } }); console.log("---------------------"); fs.mkdirSync("dir2"); console.log("同步創建目錄成功!");
登錄后復制

以上代碼執行結果如下:

一文詳解Node中的模塊化、文件系統與環境變量

2.6、讀取目錄

以下為讀取目錄的語法格式:

fs.readdir(path, callback)
登錄后復制

參數使用說明如下:

  • path – 文件路徑。

  • callback – 回調函數,回調函數帶有兩個參數err, files,err 為錯誤信息,files 為 目錄下的文件數組列表。

接下來我們創建 file.js 文件,代碼如下所示:

const fs=require("fs");  fs.readdir("dir1",(err,files)=>{     if(err)      {throw err;}     else{         console.log("異步獲取目錄下的文件成功!");         files.forEach(file=>console.log(file));     } }); console.log("-----------------------"); let files=fs.readdirSync("dir2"); console.log("同步獲取目錄下的文件成功!"); files.forEach(file=>console.log(file));
登錄后復制

以上代碼執行結果如下:

一文詳解Node中的模塊化、文件系統與環境變量

2.7、刪除目錄

以下為刪除目錄的語法格式:

fs.rmdir(path, callback)
登錄后復制

參數使用說明如下:

  • path – 文件路徑。

  • callback – 回調函數,沒有參數。

接下來我們創建 file.js 文件,代碼如下所示:

var fs = require("fs");  console.log("準備刪除目錄 /tmp/test"); fs.rmdir("/tmp/test",function(err){    if (err) {        return console.error(err);    }    console.log("讀取 /tmp 目錄");    fs.readdir("/tmp/",function(err, files){       if (err) {           return console.error(err);       }       files.forEach( function (file){           console.log( file );       });    }); });
登錄后復制

以上代碼執行結果如下:

$ node file.js 準備刪除目錄 /tmp/test input.out output.out test test.txt 讀取 /tmp 目錄 ……
登錄后復制

2.8、文件模塊方法參考手冊

以下為 Node.js 文件模塊相同的方法列表:

方法 描述
fs.rename(oldPath, newPath, callback) 異步 rename().回調函數沒有參數,但可能拋出異常。
fs.ftruncate(fd, len, callback) 異步 ftruncate().回調函數沒有參數,但可能拋出異常。
fs.ftruncateSync(fd, len) 同步 ftruncate()
fs.truncate(path, len, callback) 異步 truncate().回調函數沒有參數,但可能拋出異常。
fs.truncateSync(path, len) 同步 truncate()
fs.chown(path, uid, gid, callback) 異步 chown().回調函數沒有參數,但可能拋出異常。
fs.chownSync(path, uid, gid) 同步 chown()
fs.fchown(fd, uid, gid, callback) 異步 fchown().回調函數沒有參數,但可能拋出異常。
fs.fchownSync(fd, uid, gid) 同步 fchown()
fs.lchown(path, uid, gid, callback) 異步 lchown().回調函數沒有參數,但可能拋出異常。
fs.lchownSync(path, uid, gid) 同步 lchown()
fs.chmod(path, mode, callback) 異步 chmod().回調函數沒有參數,但可能拋出異常。
fs.chmodSync(path, mode) 同步 chmod().
fs.fchmod(fd, mode, callback) 異步 fchmod().回調函數沒有參數,但可能拋出異常。
fs.fchmodSync(fd, mode) 同步 fchmod().
fs.lchmod(path, mode, callback) 異步 lchmod().回調函數沒有參數,但可能拋出異常。Only available on Mac OS X.
fs.lchmodSync(path, mode) 同步 lchmod().
fs.stat(path, callback) 異步 stat(). 回調函數有兩個參數 err, stats,stats 是 fs.Stats 對象。
fs.lstat(path, callback) 異步 lstat(). 回調函數有兩個參數 err, stats,stats 是 fs.Stats 對象。
fs.fstat(fd, callback) 異步 fstat(). 回調函數有兩個參數 err, stats,stats 是 fs.Stats 對象。
fs.statSync(path) 同步 stat(). 返回 fs.Stats 的實例。
fs.lstatSync(path) 同步 lstat(). 返回 fs.Stats 的實例。
fs.fstatSync(fd) 同步 fstat(). 返回 fs.Stats 的實例。
fs.link(srcpath, dstpath, callback) 異步 link().回調函數沒有參數,但可能拋出異常。
fs.linkSync(srcpath, dstpath) 同步 link().
fs.symlink(srcpath, dstpath[, type], callback) 異步 symlink().回調函數沒有參數,但可能拋出異常。 type 參數可以設置為 'dir', 'file', 或 'junction' (默認為 'file') 。
fs.symlinkSync(srcpath, dstpath[, type]) 同步 symlink().
fs.readlink(path, callback) 異步 readlink(). 回調函數有兩個參數 err, linkString。
fs.realpath(path[, cache], callback) 異步 realpath(). 回調函數有兩個參數 err, resolvedPath。
fs.realpathSync(path[, cache]) 同步 realpath()。返回絕對路徑。
fs.unlink(path, callback) 異步 unlink().回調函數沒有參數,但可能拋出異常。
fs.unlinkSync(path) 同步 unlink().
fs.rmdir(path, callback) 異步 rmdir().回調函數沒有參數,但可能拋出異常。
fs.rmdirSync(path) 同步 rmdir().
fs.mkdir(path[, mode], callback) S異步 mkdir(2).回調函數沒有參數,但可能拋出異常。 mode defaults to 0777.
fs.mkdirSync(path[, mode]) 同步 mkdir().
fs.readdir(path, callback) 異步 readdir(3). 讀取目錄的內容。
fs.readdirSync(path) 同步 readdir().返回文件數組列表。
fs.close(fd, callback) 異步 close().回調函數沒有參數,但可能拋出異常。
fs.closeSync(fd) 同步 close().
fs.open(path, flags[, mode], callback) 異步打開文件。
fs.openSync(path, flags[, mode]) 同步 version of fs.open().
fs.utimes(path, atime, mtime, callback) ?
fs.utimesSync(path, atime, mtime) 修改文件時間戳,文件通過指定的文件路徑。
fs.futimes(fd, atime, mtime, callback) ?
fs.futimesSync(fd, atime, mtime) 修改文件時間戳,通過文件描述符指定。
fs.fsync(fd, callback) 異步 fsync.回調函數沒有參數,但可能拋出異常。
fs.fsyncSync(fd) 同步 fsync.
fs.write(fd, buffer, offset, length[, position], callback) 將緩沖區內容寫入到通過文件描述符指定的文件。
fs.write(fd, data[, position[, encoding]], callback) 通過文件描述符 fd 寫入文件內容。
fs.writeSync(fd, buffer, offset, length[, position]) 同步版的 fs.write()。
fs.writeSync(fd, data[, position[, encoding]]) 同步版的 fs.write().
fs.read(fd, buffer, offset, length, position, callback) 通過文件描述符 fd 讀取文件內容。
fs.readSync(fd, buffer, offset, length, position) 同步版的 fs.read.
fs.readFile(filename[, options], callback) 異步讀取文件內容。
fs.readFileSync(filename[, options])
fs.writeFile(filename, data[, options], callback) 異步寫入文件內容。
fs.writeFileSync(filename, data[, options]) 同步版的 fs.writeFile。
fs.appendFile(filename, data[, options], callback) 異步追加文件內容。
fs.appendFileSync(filename, data[, options]) The 同步 version of fs.appendFile.
fs.watchFile(filename[, options], listener) 查看文件的修改。
fs.unwatchFile(filename[, listener]) 停止查看 filename 的修改。
fs.watch(filename[, options][, listener]) 查看 filename 的修改,filename 可以是文件或目錄。返回 fs.FSWatcher 對象。
fs.exists(path, callback) 檢測給定的路徑是否存在。
fs.existsSync(path) 同步版的 fs.exists.
fs.access(path[, mode], callback) 測試指定路徑用戶權限。
fs.accessSync(path[, mode]) 同步版的 fs.access。
fs.createReadStream(path[, options]) 返回ReadStream 對象。
fs.createWriteStream(path[, options]) 返回 WriteStream 對象。
fs.symlink(srcpath, dstpath[, type], callback) 異步 symlink().回調函數沒有參數,但可能拋出異常。

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
日韩高清第一页| 一二三级黄色片| 欧美黄网在线观看| 992tv人人草| 深夜黄色小视频| 蜜臀久久99精品久久久酒店新书 | 动漫av免费观看| 欧美视频免费播放| 久久久999视频| 激情综合网婷婷| 色婷婷成人在线| 国产精品久久久久久久av福利| 中文字幕久久av| 亚洲精品中文字幕乱码无线| 一级日本黄色片| 91嫩草国产丨精品入口麻豆| 337p亚洲精品色噜噜狠狠p| 黄色a级片免费看| 黄色一级视频片| 少妇人妻互换不带套| 57pao国产成永久免费视频| 手机在线视频一区| 国产成人在线小视频| 黄色片一级视频| 亚洲涩涩在线观看| 欧美一级免费播放| 亚洲国产精品三区| 日韩精品福利片午夜免费观看| 妞干网在线观看视频| 亚洲色精品三区二区一区| 天堂av8在线| 精品人妻大屁股白浆无码| 男人添女人下面高潮视频| 亚洲精品综合在线观看| 国产毛片久久久久久国产毛片| 黄色av免费在线播放| 黄频视频在线观看| 成人黄色一区二区| 男人天堂新网址| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 亚洲免费999| 日韩中文字幕在线视频观看| 99精品视频免费版的特色功能| 妺妺窝人体色777777| 手机在线免费毛片| 亚洲 欧美 日韩系列| 免费极品av一视觉盛宴| 污污网站免费看| 大肉大捧一进一出好爽视频| 一级全黄肉体裸体全过程| 三级在线免费看| 日韩欧美亚洲天堂| 成人黄色大片网站| 欧美少妇在线观看| 五月婷婷丁香综合网| 97国产精东麻豆人妻电影| 国产精品视频一二三四区| 三日本三级少妇三级99| 在线能看的av网站| 少妇一级淫免费播放| 日本成人在线免费视频| 阿v天堂2017| 日韩中文字幕在线视频观看| 蜜臀精品一区二区| 亚洲色欲久久久综合网东京热| 日本黄色播放器| 樱空桃在线播放| 色婷婷综合在线观看| 色黄视频免费看| 色爽爽爽爽爽爽爽爽| 日韩欧美一级在线| 亚洲国产一二三精品无码| 穿情趣内衣被c到高潮视频| 18视频在线观看娇喘| 4444在线观看| 777精品久无码人妻蜜桃| 自慰无码一区二区三区| 超碰网在线观看| 国模私拍视频在线观看| 中文字幕成人免费视频| 日韩中文在线字幕| 久久av高潮av| 欧美在线观看成人| 日韩在线xxx| 国产亚洲视频一区| a级片一区二区| 日本一道本久久| 国产精品久久久毛片| 亚洲热在线视频| 干日本少妇首页| 欧美日韩第二页| 六月婷婷在线视频| 国产又爽又黄ai换脸| 青青草影院在线观看| 国产精品久久久久9999爆乳| 人妻精品无码一区二区三区| 亚洲77777| av免费观看国产| 日日躁夜夜躁aaaabbbb| 无套内谢丰满少妇中文字幕| 日本在线xxx| 日本精品一区在线| 国产成人无码a区在线观看视频| 免费涩涩18网站入口| 欧美乱做爰xxxⅹ久久久| 波多野结衣作品集| 污污污污污污www网站免费| 狠狠热免费视频| avav在线播放| www.亚洲自拍| 国产欧美精品aaaaaa片| 五月婷婷丁香综合网| av之家在线观看| 男人日女人的bb| 激情在线观看视频| 欧美黄色一级片视频| 男女视频网站在线观看| 日本三日本三级少妇三级66| 亚洲欧美另类动漫| www.亚洲天堂网| 天天夜碰日日摸日日澡性色av| 亚洲欧美日韩不卡| 欧美精品aaaa| 99久久激情视频| 日韩精品视频一区二区在线观看| 影音先锋成人资源网站| 激情在线观看视频| 激情在线观看视频| 在线观看免费av网址| 亚洲免费999| 欧美成人黄色网址| 丰满少妇在线观看| 日本女优爱爱视频| 男女爽爽爽视频| 男人天堂成人在线| 久久撸在线视频| 亚洲另类第一页| 国产小视频精品| 国产不卡的av| 欧美在线观看黄| 黄页网站大全在线观看| 131美女爱做视频| 毛葺葺老太做受视频| www.xxx亚洲| 成人免费在线观看视频网站| 中文字幕第100页| 手机福利在线视频| 农民人伦一区二区三区| 国产精品秘入口18禁麻豆免会员| 成人综合视频在线| 久热精品在线播放| 日本女人高潮视频| 日韩av在线播放不卡| 日本网站免费在线观看| 无需播放器的av| 久久精品一二三四| 欧美啪啪免费视频| 色18美女社区| 国产av人人夜夜澡人人爽麻豆| 欧美a v在线播放| 中文字幕 日韩 欧美| 中国丰满熟妇xxxx性| xxxx一级片| 亚洲色图都市激情| 欧美日韩在线免费播放| 亚洲欧美一二三| 亚洲中文字幕无码不卡电影| 亚洲激情在线看| 丰满人妻中伦妇伦精品app| 日韩a一级欧美一级| 国产精品后入内射日本在线观看| 日本不卡一区二区在线观看| 国产精品久久久久久久乖乖| 91精品无人成人www| 黄色三级中文字幕| 亚洲涩涩在线观看| 欧美综合在线观看视频| av一区二区三区免费观看| 国内自拍视频一区| www.av片| 9色porny| 青青在线视频免费观看| 九九九九九国产| 成年人视频在线免费| 国产精品无码人妻一区二区在线| 国产探花在线观看视频| 青青在线免费观看视频| ww国产内射精品后入国产| 久久观看最新视频| 一区二区三区四区久久| 色七七在线观看| 免费黄色福利视频| 浮妇高潮喷白浆视频| 狠狠97人人婷婷五月| 成人性免费视频| 国产一级做a爰片久久毛片男| 欧美 日韩 国产 在线观看| 91性高潮久久久久久久| 6080国产精品| 强开小嫩苞一区二区三区网站|