成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Node.js 學習筆記(三)

sorra / 1949人閱讀

摘要:在瀏覽器中的全局對象是對象。程序是由事件驅(qū)動執(zhí)行的單線程模型,也不例外。不斷執(zhí)行響應(yīng)事件的函數(shù),直到?jīng)]有任何響應(yīng)事件的函數(shù)可以執(zhí)行,就退出了。方法此方法可以在下一次事件響應(yīng)中執(zhí)行代碼。它會返回一個對象,告訴我們文件的詳細信息。

global

JS在瀏覽器中的全局對象是window對象。在Node.js環(huán)境中,全局對象則叫global。我們可以用它來區(qū)分當前JavaScript的執(zhí)行環(huán)境:

if(typeof(window)==="undefined"){
  console.log("node.js");
}else{
  console.log("browser");
}
process

process是Node.js提供的一個對象,它代表當前Node.js的進程。

JavaScript程序是由事件驅(qū)動執(zhí)行的單線程模型,Node.js也不例外。Node.js不斷執(zhí)行響應(yīng)事件的JavaScript函數(shù),直到?jīng)]有任何響應(yīng)事件的函數(shù)可以執(zhí)行,Node就退出了。

nextTick方法

此方法可以在下一次事件響應(yīng)中執(zhí)行代碼。

fs模塊

fs模塊是Node.js的內(nèi)置模塊,是負責處理讀寫文件的。它同時提供了異步和同步方法。

異步和同步

異步是在JS執(zhí)行IO操作時,無需等待執(zhí)行結(jié)果,而是傳入回調(diào)函數(shù)后,繼續(xù)執(zhí)行下面的代碼,以jQuery的getJSON()為例:

$.getJSON("http://example.com/ajax",function(data){
  console.log("IO結(jié)果返回后執(zhí)行……");
});
console.log("不等待IO結(jié)果直接執(zhí)行后續(xù)代碼‘);

而同步則是線形的,需要等待IO操作返回結(jié)果后,再執(zhí)行后續(xù)代碼:
var data=getJSONSync("http://example.com/ajax");

同步代碼更少,但是異步在實際的用戶體驗更好。

異步讀文件

以下是一個異步讀取文本文件的實例:

‘use strict";

var fs=require("fs");

fs.readFile("sample.txt","utf-8",function(err,data){
    if(err){
        console.log(err);
    }else{
        console.log(data)
    }
})

要注意的是,sample.txt必須在當前的目錄之下,且文件的編碼格式為utf-8。

如果我們要讀取的是二進制文件呢?下面是一個讀取圖片的例子:

"use strict";

var fs = require("fs");

fs.readFile("sample.png", function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
        console.log(data.length + " bytes");
    }
});

當讀取二進制文件時,不傳入文件編碼(如utf-8)時,data會返回一個Buffer對象。

這里提一下Buffer對象,它是Node處理二進制數(shù)據(jù)的一個接口,也是Node原生的全局對象,可以直接使用,不需要require(‘buffer’)。它的作用類似于數(shù)組。
同步讀文件

同步讀文件相比異步讀文件,只是在readFile上加了一個sync,看下面的例子:

"use strict"

var fs=require("fs");
try{
  var data=fs.readFileSync("sample.txt","utf-8");
  console.log(data);
}
catch(err){
  //錯誤信息
}

如果發(fā)生錯誤,只能通過try...catch捕獲。

寫文件

通過fs.writeFile()實現(xiàn)。

"use strict"

var fs=require("fs");

var data="Hello Node.js!";
fs.writeFile("output.txt",data,function(err){
  if(err){
    console.log(err);
  }else{
    console.log("ok");
  }
});

和讀文件相同,writeFile()也有一個同步方法writeFileSync()。

"use strict";
var fs=require("fs");

var data="hello Node.js";
fs.writeFileSync("output.txtx",data);
stat

可以通過fs.stat()獲取文件大小、創(chuàng)建時間等信息。它會返回一個stat對象,告訴我們文件的詳細信息。

"use strict";

var fs=require("fs");
fs.stat("sample.txt",function(err,stat){
  if(err){
    console.log(err);
  }else{
    // 是否是文件:
        console.log("isFile: " + stat.isFile());
        // 是否是目錄:
        console.log("isDirectory: " + stat.isDirectory());
        if (stat.isFile()) {
            // 文件大小:
            console.log("size: " + stat.size);
            // 創(chuàng)建時間, Date對象:
            console.log("birth time: " + stat.birthtime);
            // 修改時間, Date對象:
            console.log("modified time: " + stat.mtime);
        }
    }
});

同樣,它也有一個同步函數(shù)statSync()

"use strict";

var fs=require("fs");
var stats=fs.statSync("sample.txt");

console.log(stats.isFile());     //true

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110124.html

相關(guān)文章

  • Laravel學習筆記-前端工作流

    摘要:本節(jié)將學習是如何利用形成一套完整的前端工作流模式的。你也可以使用下面命令來強制安裝所有模塊,不管該模塊之前是否安裝過由于國內(nèi)墻的原因,使用安裝會非常緩慢,慢到想切,不過還好,我們可以使用淘寶提供的國內(nèi)鏡像進行下載。 本節(jié)將學習 Laravel 是如何利用 Sass, NPM, Gulp形成一套完整的前端工作流模式的。 一、句法強大的樣式表Sass Sass 是一種可用于編寫CSS的語言...

    liuchengxu 評論0 收藏0
  • Vue學習筆記之vue-cli項目搭建及解析

    摘要:樣式通過標簽包裹,默認是影響全局的,如需定義作用域只在該組件下起作用,需在標簽上加,如要引入外部文件,首先需給項目安裝依賴包,打開,進入項目目錄,輸入回車。 showImg(https://segmentfault.com/img/remote/1460000013235090); (一)安裝node.js 首先需要安裝node環(huán)境,可以直接到中文官網(wǎng)http://nodejs.cn/...

    Caizhenhao 評論0 收藏0
  • AI開發(fā)書籍分享

    摘要:編程書籍的整理和收集最近一直在學習深度學習和機器學習的東西,發(fā)現(xiàn)深入地去學習就需要不斷的去提高自己算法和高數(shù)的能力然后也找了很多的書和文章,隨著不斷的學習,也整理了下自己的學習筆記準備分享出來給大家后續(xù)的文章和總結(jié)會繼續(xù)分享,先分享一部分的 編程書籍的整理和收集 最近一直在學習deep learning深度學習和機器學習的東西,發(fā)現(xiàn)深入地去學習就需要不斷的去提高自己算法和高數(shù)的能力然后...

    huayeluoliuhen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<