NodeJS學(xué)習(xí)筆記

1.命令

npm init //初始化
//安裝包
npm install xxx 或者 npm i xxx 
//卸載包
npm uninstall XXX 或者 npm un xxx

2.模塊

  1. 全局模塊:隨時隨地都能訪問存崖,不需要引用
    • process.env:環(huán)境變量

    • process.argv:會返回一個數(shù)組竣灌,其中包含當(dāng)Node.js 進程被啟動時傳入的命令行參數(shù)仔沿。

      • 第一個元素是 process.execPath。 如果需要訪問 argv[0] 的原始值,則參見 process.argv0阁将。
      • 第二個元素是正被執(zhí)行的 JavaScript 文件的路徑潦刃。
      • 其余的元素是任何額外的命令行
    • process.cwd():返回運行當(dāng)前腳本的工作目錄的路徑侮措。參考鏈接:node中__dirname、__filename乖杠、process.cwd()分扎、process.chdir()表示的路徑

      __dirname 表示當(dāng)前文件所在的目錄的絕對路徑
      __filename 表示當(dāng)前文件的絕對路徑
      module.filename ==== __filename 等價
      process.cwd() 返回運行當(dāng)前腳本的工作目錄的路徑
      process.chdir() 改變工作目錄
      
      例子,文件路徑有如下結(jié)構(gòu):
      newapp > demo > hello.js//在hello.js文件中編寫如下代碼:
      console.log(__dirname);
      console.log(__filename);
      console.log(module.filename===__filename);
      console.log(process.cwd());
      process.chdir('/Users/jerry')
      console.log(process.cwd());
      
      /Users/jerry/51talk/newapp/demo
      /Users/jerry/51talk/newapp/demo/hello.js
      true
      /Users/jerry/51talk/newapp
      /Users/jerry
      
  2. 系統(tǒng)模塊:需要require()胧洒,但不需要單獨下載
    • path:用于處理文件路徑和目錄路徑的實用工具
      • path.join:用于連接路徑畏吓。該方法的主要用途在于墨状,會正確使用當(dāng)前系統(tǒng)的路徑分隔符,Unix系統(tǒng)是”/“菲饼,Windows系統(tǒng)是”\“肾砂。
      • path.resolve:用于將相對路徑轉(zhuǎn)為絕對路徑。它可以接受多個參數(shù)宏悦,依次表示所要進入的路徑通今,直到將最后一個參數(shù)轉(zhuǎn)為絕對路徑。如果根據(jù)參數(shù)無法得到絕對路徑肛根,就以當(dāng)前所在路徑作為基準(zhǔn)辫塌。除了根目錄,該方法的返回值都不帶尾部的斜杠派哲。
    let path=require('path')
    console.log(path.dirname('/node/a/b/1.jpg'))  #  /node/a/b目錄 
    console.log(path.basename('/node/a/b/1.jpg')) #  1.jpg
    console.log(path.basename('/node/a/b/1.jpg')) # .jpg 擴展名
    console.log(path.resolve('/node/a/b/c','../../','d')) # /node/a/d
    console.log(path.resolve(_dirname,'index.js')) #得到文件的絕對路徑 //__dirname 總是指向被執(zhí)行 js 文件的絕對路徑臼氨,所以當(dāng)你在 /d1/d2/myscript.js 文件中寫了 __dirname, 它的值就是 /d1/d2 芭届。相反储矩,./ 會返回你執(zhí)行 node 命令的路徑,例如你的工作路徑褂乍。
    
    • fs:用于文件讀寫操作
      • fs.readFile

          fs.readFile('./a.text',(err,data)=>{
              if(err){
                  console.log(err)
              }else{
                  data.toString()
              }
          })
        
      • fs.readFileSynclet data=fs.readFileSync('./a.text')同步寫法

      • fs.writeFile

        //flag:a為追加內(nèi)容的意思
        fs.writeFile('b.text','啦啦啦',{flag:'a'},(err)=>{
            if(err){
               throw err
            }
        })
        
      • fs.writeFileSynclet data=fs.writeFileSync('b.text','啦啦啦')同步寫法

      • fs.accessSync(path[, mode]) :同步地測試用戶對 path 指定的文件或目錄的權(quán)限

        • F_OK持隧,表明文件對調(diào)用進程可見。 這對于判斷文件是否存在很有用逃片,但對 rwx權(quán)限沒有任何說明屡拨。如果未指定模式,則默認(rèn)值為該值褥实。
        • R_OK呀狼,表明調(diào)用進程可以讀取文件。
        • W_OK损离,表明調(diào)用進程可以寫入文件哥艇。
        • X_OK,表明調(diào)用進程可以執(zhí)行文件僻澎。 在 Windows 上無效(表現(xiàn)得像 fs.constants.F_OK
  1. 自定義模塊
    • exports
    • module:可以導(dǎo)出對象貌踏、functionclass
    • require
      • 如果有路徑就去路徑里邊找
      • 沒有的話就去node_modules中找

3.http模塊

  • get請求
<form action="http://localhost:8080/aaa" method="GET">
用戶名<input type="text" name="userName" >
密碼<input type="password" name="password" >
<input type="submit" value="提交">
</form>
let http=require('http')
let url=require('url')
http.createServer((req,res)={
   let {pathname,query}=url.parse(req.url,true) //為true轉(zhuǎn)成json格式
}).listen(8080)
  • post請求
<form action="http://localhost:8080/aaa" method="POST">
用戶名<input type="text" name="userName" >
密碼<input type="password" name="password" >
<input type="submit" value="提交">
</form>
let http=require('http')
let querystring=require('querystring')
http.createServer((req,res)={
  let result=[]
  req.on('data',buffer=>{
    result.push(buffer)
  })
  req.on('end',()=>{
  })
}).listen(8080)

4.實現(xiàn)一個登錄接口

這里只是做一個用法示范窟勃,工作中主要用第三方庫來做

let http=require('http')
let url=require('url')
let querystring=require('querystring')
let user={
    admin:'123456'
}
http.createServer((req,res)={
  let path,post,get
  if(req.method=='GET'){
      let {pathname,query}=url.parse(req.url,true)
      path=pathname
      get=query
      complete()
  }else if(req.method=='POST'){
      let result=[]
      path=req.url
      req.on('data',buffer=>{
       result.push(buffer)
      })
      req.on('end',()=>{ 
          complete()
      })
      
  }
  function complete(){
      if(path=='/login'){
          let {password,username}=get
           res.writeHead(200,{
                  "Content-Type":"text/plain;charset=utf-8"
              })
          if(!user[username]){
              res.end(JSON.stringify({
                  err:1,
                  msg:'用戶名不存在'
              }))
          }else if(user[username]!=password){
              res.end(JSON.stringify({
                  err:1,
                  msg:'密碼錯誤'
              }))
          }else{
              res.end(JSON.stringify({
                  err:0,
                  msg:'登錄成功'
              }))
          }
      }
  }
}).listen(8080)

5.框架有express祖乳、koa2等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拳恋,隨后出現(xiàn)的幾起案子凡资,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隙赁,死亡現(xiàn)場離奇詭異垦藏,居然都是意外死亡,警方通過查閱死者的電腦和手機伞访,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門掂骏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人厚掷,你說我怎么就攤上這事弟灼。” “怎么了冒黑?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵田绑,是天一觀的道長。 經(jīng)常有香客問我抡爹,道長掩驱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任冬竟,我火速辦了婚禮欧穴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泵殴。我一直安慰自己涮帘,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布笑诅。 她就那樣靜靜地躺著调缨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苟鸯。 梳的紋絲不亂的頭發(fā)上同蜻,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天,我揣著相機與錄音早处,去河邊找鬼。 笑死瘫析,一個胖子當(dāng)著我的面吹牛砌梆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贬循,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼咸包,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杖虾?” 一聲冷哼從身側(cè)響起烂瘫,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后坟比,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芦鳍,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年葛账,在試婚紗的時候發(fā)現(xiàn)自己被綠了柠衅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡籍琳,死狀恐怖菲宴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情趋急,我是刑警寧澤喝峦,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站呜达,受9級特大地震影響愈犹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜闻丑,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一漩怎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嗦嗡,春花似錦勋锤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至矮冬,卻和暖如春谈宛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胎署。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工吆录, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人琼牧。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓恢筝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親巨坊。 傳聞我的和親對象是個殘疾皇子撬槽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,995評論 2 361

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

  • 個人入門學(xué)習(xí)用筆記、不過多作為參考依據(jù)趾撵。如有錯誤歡迎斧正 目錄 簡書好像不支持錨點侄柔、復(fù)制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,479評論 1 37
  • Node.js 全局對象 JavaScript 中有一個特殊的對象,稱為全局對象(Global Object),它...
    FTOLsXD閱讀 407評論 0 2
  • 起因 原文收錄在我的 GitHub博客 (https://github.com/jawil/blog) 啸胧,喜歡的可...
    微醺歲月閱讀 4,946評論 5 12
  • 零赶站、什么是Node.js? 引用Node.js官方網(wǎng)站的解釋如下: Node.js? is a JavaScrip...
    JokerPeng閱讀 3,015評論 0 15
  • 你的問題來源于你出生后和父母互動時你被迫總結(jié)出來的應(yīng)對方式纺念;你小的時候內(nèi)在的需求沒被滿足贝椿,才會有今天的外顯行為,這...
    朵朵頤閱讀 160評論 0 2