Node的模塊之fs,readline,url

node的模塊

  1. require:導(dǎo)入一個(gè)模塊
  2. exports:導(dǎo)出模塊
  3. module.exports:導(dǎo)出模塊
  • 代碼(一)
    a.js:
    //以函數(shù)的形式進(jìn)行導(dǎo)出,函數(shù)的名稱為li
    exports.li = function(){
    console.log("heheda!");
    }

      b.js:
      //因?yàn)閍.js不是核心模塊真椿,所以使用require時(shí)要使用路徑
      var mo = require('./a.js');
      //直接調(diào)用函數(shù)什荣,此時(shí)的函數(shù)相當(dāng)于mo模塊的方法
      mo.li();
    
  • 代碼(二)
    a.js:
    function li(){
    console.log('hello nodejs');
    }
    //將函數(shù)作為模塊導(dǎo)出
    module.exports = li;

      b.js:
      //導(dǎo)出模塊
      var mo = require('./a.js');
      mo();
    
      *tip:所有的exports收集到的屬性和方法,都賦值給了    Module.exports汽馋。當(dāng)然供填,這有個(gè)前提泡一,就是Module.exports本身不具備任何屬性和方法创夜。
      如果,Module.exports已經(jīng)具備一些屬性和方法通惫,那么exports收集來(lái)的信息將被忽略轧拄。*
    

node的文件操作

  1. 文件操作使用文件系統(tǒng)模塊fs

  2. 操作文件有兩種方法,同步操作和異步操作讽膏。
    同步讀取:fs.readFileSync()
    異步讀戎舴帷:fs.readFile(文件地址府树,文件編碼,回調(diào)函數(shù)(err,data))
    eg:

     //導(dǎo)入文件系統(tǒng)模塊
     var fs = require('fs');
     //讀取文件料按,第一個(gè)參數(shù)是文件路徑奄侠,第二個(gè)參數(shù)是一個(gè)可選參數(shù),是文件的格式载矿,第三個(gè)參數(shù)是回調(diào)函數(shù)
     //回調(diào)函數(shù)的參數(shù)垄潮,第一個(gè)參數(shù)是錯(cuò)誤對(duì)象,第二個(gè)參數(shù)是讀取文件的內(nèi)容
     fs.readFile('1.txt',function(err,data){
             //判斷是否出錯(cuò)
           if(err){
                   console.log(err);
             } else {
                    //toString():將對(duì)象轉(zhuǎn)化為字符串
                     console.log(data.toString());
             }
     });
    

異步模式下寫入文件的語(yǔ)法格式:
fs.writeFile(filename, data[, options], callback(err))闷盔;
如果文件存在弯洗,該方法寫入的內(nèi)容會(huì)覆蓋舊的文件內(nèi)容。

node的io鍵盤交互

tip:Readline是node里實(shí)現(xiàn)標(biāo)準(zhǔn)輸入輸出的封裝好的模塊逢勾。通過(guò)這個(gè)模塊我們可以以逐行的方式讀取數(shù)據(jù)流牡整。eg:

    //導(dǎo)入readline模塊
     var readline = require('readline');
    //創(chuàng)建readline接口實(shí)例
    var rl = readline.createInterface({
        //使用全局對(duì)象process進(jìn)行獲取輸入和輸出的對(duì)象
        input:process.stdin,
        output:process.stdout
    });
    //設(shè)置提示符
    rl.setPrompt('請(qǐng)輸入一些東西');
    rl.prompt();
    rl.on('line',(line) => {
        var str = line.trim();
        console.log(123);
        rl.prompt();
    }).on('close',() => {
        console.log('exit');
        process.exit();
    });

tip:

  • 方法setPromat(promat),就是給每一行設(shè)置一個(gè)提示符
  • prompt:就是在等待用戶輸入數(shù)據(jù),以行為單位讀取數(shù)據(jù).
    + 這里又監(jiān)聽(tīng)了’line’ 事件溺拱,因?yàn)閜romat方法調(diào)用一次就只會(huì)讀取一次數(shù)據(jù)逃贝,所以,在這個(gè)方法又調(diào)用了一次promat方法迫摔,這樣就可以繼續(xù)讀取用戶輸入沐扳,從而達(dá)到一種命令行的效果。

node的url判斷渲染模塊

    //導(dǎo)入http模塊
    var http = require("http");
    //導(dǎo)入文件系統(tǒng)模塊
    var fs = require("fs");
    //導(dǎo)入url模塊
    var urlapi = require("url");

    //創(chuàng)建http.server實(shí)例
    http.createServer(function(req,res){
       //解析請(qǐng)求的URL
        var url = urlapi.parse(req.url);
        console.log(url.pathname);
    }).listen(3000);

tip:可以通過(guò)判斷url.pathname的不同渲染不同的頁(yè)面

作業(yè)

    nodejs實(shí)現(xiàn)IO鍵盤交互或?yàn)g覽器輸入交互
    nodejs判斷url請(qǐng)求渲染2個(gè)簡(jiǎn)單的模板
    寫3個(gè)靜態(tài)的頁(yè)面句占,首頁(yè)沪摄,列表頁(yè),詳情頁(yè)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卓起,隨后出現(xiàn)的幾起案子和敬,更是在濱河造成了極大的恐慌,老刑警劉巖戏阅,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昼弟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡奕筐,警方通過(guò)查閱死者的電腦和手機(jī)舱痘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門离赫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人渊胸,你說(shuō)我怎么就攤上這事◆崦停” “怎么了胖翰?”我有些...
    開(kāi)封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵切厘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我疫稿,道長(zhǎng)培他,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任遗座,我火速辦了婚禮舀凛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘途蒋。我一直安慰自己腾降,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布碎绎。 她就那樣靜靜地躺著螃壤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪筋帖。 梳的紋絲不亂的頭發(fā)上奸晴,一...
    開(kāi)封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音日麸,去河邊找鬼寄啼。 笑死逮光,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的墩划。 我是一名探鬼主播涕刚,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼乙帮!你這毒婦竟也來(lái)了杜漠?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤察净,失蹤者是張志新(化名)和其女友劉穎驾茴,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體氢卡,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锈至,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了译秦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峡捡。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖筑悴,靈堂內(nèi)的尸體忽然破棺而出棋返,到底是詐尸還是另有隱情,我是刑警寧澤雷猪,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站晰房,受9級(jí)特大地震影響求摇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜殊者,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一与境、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猖吴,春花似錦摔刁、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至拗引,卻和暖如春幌衣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工欲间, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留断部,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓嘱能,卻偏偏與公主長(zhǎng)得像虱疏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子对粪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • Node.js是目前非匙芭睿火熱的技術(shù),但是它的誕生經(jīng)歷卻很奇特牍帚。 眾所周知,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,609評(píng)論 2 41
  • topics: 1.The Node.js philosophy 2.The reactor pattern 3....
    宮若石閱讀 1,061評(píng)論 0 1
  • 個(gè)人入門學(xué)習(xí)用筆記、不過(guò)多作為參考依據(jù)蹂随。如有錯(cuò)誤歡迎斧正 目錄 簡(jiǎn)書好像不支持錨點(diǎn)、復(fù)制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,458評(píng)論 1 37
  • Node.js是目前非臣ㄖ裕火熱的技術(shù),但是它的誕生經(jīng)歷卻很奇特咳燕。 眾所周知,在Netscape設(shè)計(jì)出JavaScri...
    Myselfyan閱讀 4,066評(píng)論 2 58
  • 1 Node.js模塊的實(shí)現(xiàn) 之前在網(wǎng)上查閱了許多介紹Node.js的文章,可惜對(duì)于Node.js的模塊機(jī)制大都著...
    zlx_2017閱讀 1,227評(píng)論 0 1