Nodejs

nodejs的模塊


  1. require():導(dǎo)入一個模塊
  2. exports():導(dǎo)出一個模塊
  3. exports()與module.exports()區(qū)別
    所有的exports收集到的屬性和方法平项,都賦值給了 Module.exports撑教。當(dāng)然,這有個前提娇妓,就是Module.exports本身不具備任何屬性和方法。如果,Module.exports已經(jīng)具備一些屬性和方法,那么exports收集來的信息將被忽略阅酪。

代碼1:

a.js

exports.li = function(){
    console.log('Hello node!');
};

b.js

var mo = require('./a.js');
mo.li();

代碼2:
a.js

function a(){
    console.log('Hello node!');
}
module.exports = a;

b.js

var mo = require('./a.js');
mo();

nodejs文件操作


Node.js 文件系統(tǒng)(fs 模塊)模塊中的方法均有異步和同步版本,例如讀取文件內(nèi)容的函數(shù)有異步的 fs.readFile() 和同步的 fs.readFileSync()汁针。
異步的方法函數(shù)最后一個參數(shù)為回調(diào)函數(shù)术辐,回調(diào)函數(shù)的第一個參數(shù)包含了錯誤信息(error)。
建議大家是用異步方法施无,比起同步辉词,異步方法性能更高,速度更快猾骡,而且沒有阻塞瑞躺。

  1. 異步和同步:

input.txt

測試文本hello world!

file.js

var fs = require('fs');
// 異步讀取
fs.readFile('input.txt', function (err, data) {
  if (err) {
     return console.error(err);
  }
  console.log("異步讀取: " + data.toString());
});

// 同步讀取
var data = fs.readFileSync('input.txt');
console.log("同步讀取: " + data.toString());
console.log("程序執(zhí)行完畢。");

運(yùn)行結(jié)果:

$ node file.js 
同步讀取: 測試文本hello world!
程序執(zhí)行完畢兴想。
異步讀取: 測試文本hello world!

2.打開文件

文件打開方式:

  r 以讀取模式打開文件幢哨。如果文件不存在拋出異常。
  r+   以讀寫模式打開文件嫂便。如果文件不存在拋出異常捞镰。
  rs   以同步的方式讀取文件。
  rs+  以同步的方式讀取和寫入文件。
  w    以寫入模式打開文件岸售,如果文件不存在則創(chuàng)建践樱。
  wx   類似 'w',但是如果文件路徑存在凸丸,則文件寫入失敗拷邢。
  w+   以讀寫模式打開文件,如果文件不存在則創(chuàng)建屎慢。
  wx+  類似 'w+'瞭稼, 但是如果文件路徑存在,則文件讀寫失敗腻惠。
  a 以追加模式打開文件环肘,如果文件不存在則創(chuàng)建。
  ax   類似 'a'妖枚, 但是如果文件路徑存在廷臼,則文件追加失敗苍在。
  a+   以讀取追加模式打開文件绝页,如果文件不存在則創(chuàng)建。
  ax+  類似 'a+'寂恬, 但是如果文件路徑存在续誉,則文件讀取追加失敗。

代碼:

var fs = require('fs');
//異步打開文件
console.log('準(zhǔn)備打開文件');
fs.open('input.txt','r+',function(err,fd){
    if(err){
        return console.err(err);
    }
    console.log('文件打開成功');
})

3.獲取文件信息(判斷是否為文件)

var fs = require("fs");
console.log("準(zhǔn)備打開文件初肉!");
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());
});

4.寫入文件
file.js

var fs = require("fs");
console.log("準(zhǔn)備寫入文件");
fs.writeFile('input.txt', '我是通過寫入的文件內(nèi)容!',  function(err) {
    if (err) {
       return console.error(err);
     }
     console.log("數(shù)據(jù)寫入成功牙咏!");
     console.log("--------我是分割線-------------")
     console.log("讀取寫入的數(shù)據(jù)臼隔!");
     fs.readFile('input.txt', function (err, data) {
        if (err) {
           return console.error(err);
        }
        console.log("異步讀取文件數(shù)據(jù): " + data.toString());
     });
});

運(yùn)行結(jié)果

$ node file.js 
 準(zhǔn)備寫入文件數(shù)據(jù)寫入成功!
--------我是分割線-------------
讀取寫入的數(shù)據(jù)妄壶!
異步讀取文件數(shù)據(jù): 我是通過寫入的文件內(nèi)容

5.讀取文件

var fs = require("fs");
var buf = new Buffer(1024);
console.log("準(zhǔn)備打開已存在的文件摔握!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   } 
   console.log("文件打開成功!");
   console.log("準(zhǔn)備讀取文件:");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
       if (err){
          console.log(err);
       }
       console.log(bytes + "  字節(jié)被讀取");
       // 僅輸出讀取的字節(jié)
       if(bytes > 0){
           console.log(buf.slice(0, bytes).toString());
       }
   });
});

nodejs的IO鍵盤交互


var readline = require('readline');
const rl = readline.createInterface({
    input:process.stdin,
    output:process.stdout
});
rl.setPrompt('請和鍵盤交互:');
rl.prompt();
rl.on('line',(line)=>{
    var str = line.trim();
    console.log('你輸入的是:'+str);
    rl.prompt();
}).on('close',()=>{
    console.log('exit');
    process.exit(0);
});

nodejs的URL判斷渲染模板


var http = rquire('http');
var fs = require('fs');
var urlapi = require('url');
http.createServer(function(request,response){
    //解析請求的url
    var url = urlapi.parse(request.url);
    console.log(url.pathname);
    console.log(request.url);
}).listen(3000,'127.0.0.1');

nodejs實(shí)現(xiàn)IO鍵盤交互或?yàn)g覽器輸入交互
nodejs判斷url請求渲染2個簡單的模板
寫3個靜態(tài)的頁面丁寄,首頁氨淌,列表頁,詳情頁

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伊磺,一起剝皮案震驚了整個濱河市盛正,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌屑埋,老刑警劉巖豪筝,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡壤蚜,警方通過查閱死者的電腦和手機(jī)即寡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袜刷,“玉大人聪富,你說我怎么就攤上這事≈罚” “怎么了墩蔓?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長萧豆。 經(jīng)常有香客問我奸披,道長,這世上最難降的妖魔是什么涮雷? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任阵面,我火速辦了婚禮,結(jié)果婚禮上洪鸭,老公的妹妹穿的比我還像新娘样刷。我一直安慰自己,他們只是感情好览爵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布置鼻。 她就那樣靜靜地躺著,像睡著了一般蜓竹。 火紅的嫁衣襯著肌膚如雪箕母。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天俱济,我揣著相機(jī)與錄音嘶是,去河邊找鬼。 笑死蛛碌,一個胖子當(dāng)著我的面吹牛聂喇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播左医,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼授帕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浮梢?” 一聲冷哼從身側(cè)響起跛十,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秕硝,沒想到半個月后芥映,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年奈偏,在試婚紗的時候發(fā)現(xiàn)自己被綠了坞嘀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡惊来,死狀恐怖丽涩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情裁蚁,我是刑警寧澤矢渊,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站枉证,受9級特大地震影響矮男,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜室谚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一毡鉴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秒赤,春花似錦猪瞬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽含思。三九已至崎弃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間含潘,已是汗流浹背饲做。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遏弱,地道東北人盆均。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像漱逸,于是被迫代替她去往敵國和親泪姨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,327評論 0 6
  • 文件系統(tǒng)模塊是一個封裝了標(biāo)準(zhǔn)的 POSIX 文件 I/O 操作的集合饰抒。通過require('fs')使用這個模塊肮砾。...
    保川閱讀 779評論 0 0
  • Node.js是目前非常火熱的技術(shù)袋坑,但是它的誕生經(jīng)歷卻很奇特仗处。 眾所周知,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,613評論 2 41
  • 一吃环、異步編程 異步操作 Node大量采用異步操作,即任務(wù)不是馬上執(zhí)行洋幻,而是直接插入任務(wù)隊(duì)列的尾部郁轻,等前面任務(wù)執(zhí)行完...
    EndEvent閱讀 495評論 0 2
  • 我二十歲范咨,青春正好,給了你厂庇。 還清晰記得上班第一天渠啊,我滿是興奮地去找我的同齡大先,當(dāng)時學(xué)校的腥酰花替蛉,從此我們成了閨蜜...
    盛小利閱讀 744評論 2 2