中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node.js中怎么注冊服務器端

發布時間:2021-07-21 10:02:29 來源:億速云 閱讀:167 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關node.js中怎么注冊服務器端,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

  模塊

  node.js中最強的莫過于“模塊化”了。各式各樣的模塊,諸如:http、https、fs…層出不窮,而且直接調用,簡單便捷。

  引入方式:

  const 變量名 = require('模塊名');

  比如,本demo所用到的:

  const http=require('http')

  const url=require('url')

  const querystring=require('querystring') //“解析數據” 模塊

  const fs=require('fs')

  其中fs算是node中比較重要的模塊了,只要涉及文件讀取,都要用到它。。。

  開始

  首先,因為沒搞數據庫,我們用一個對象來模擬一下:

  let user={

  admin:123456

  }

  (此代碼作用:規定必須是這種格式的存取)

  然后,我們需要和瀏覽器交互——交互即需發請求——請求在node中需用到http/https

  即我們需要寫一個服務器程序 -> http.createServer(function(response,request){}).listen(端口號)

  這個函數內置一個回調函數,其接收兩個參數:請求(request)和響應(response)、最后還有一個listen監聽函數,負責告訴服務器“目標是誰”;

  在其中,需要判斷請求方式——因為不能說登錄注冊兩種方式就放兩個服務器上是吧(你也得看人家服務器愿不愿意啊)

  //獲取數據

  let path,get,post

  if(req.method=='GET'){

  //es6語法:解構

  let {pathname,query}=url.parse(req.url,true) //parse ——url塊 的方法——解析鏈接(req.url,和是否解析query部分(true))

  path=pathname

  get=query

  complete()

  }else if(req.method=='POST'){

  let arr=[]

  path=req.url //因為post傳參不在url展示,故其url要簡便很多,直接取出即可

  //data 事件——post請求 請求數據(buffer指代二進制數據流)

  req.on('data',buffer=>{

  arr.push(buffer)

  })

  //end事件——數據處理結束后的回調函數

  req.on('end',()=>{

  //Buffer.concat——依托于Buffer對象中的concat方法,將arr數組數據“拼接”起來(也可以理解為:擺脫數組形態)

  //toString()——任何數據都可以字符串化

  //querystring——字符串解析->JSON格式

  post=querystring.parse(Buffer.concat(arr).toString())

  complete()

  })

  }

  好了,get和post里都獲取到數據了,接下來要對數據進行處理了,因為處理步驟是相同的,我們就把其放在一個函數(complete)中,再分別在get和post里調用(第7、20行)。

  等等,我們說下 buffer ——二進制數據流

  為什么要對其進行 Buffer.concat 操作? 我們來看一段代碼:

  let http=require('http')

  http.createServer((req,res)=>{

  let result=[]

  req.on('data',buffer=>{

  result.push(buffer)

  })

  req.on('end',()=>{

  console.log(result)

  })

  }).listen(8888)

  它的結果是個名為Buffer的數組

  而加上Buffer.concat以后,就變成了字符串形式:

  然后我們就可以對其 querystring轉換為對象格式 ,然后取出數據了

  API

  寫過文檔(或者看過后端寫文檔)的都知道,寫后端比較重要的就是寫一個API調用文檔——告訴前端,你需要往哪里發請求,需要傳什么,接收什么,字段有哪些,以什么方式。

  這里,我們規定——err為1,代表有錯;反之,代表通過。提示信息寫在msg中,通過end函數返回給頁面:

  function complete(){

  if(path=='/login'){

  res.writeHead(200,{

  "Content-Type":"text/plain;charset=utf-8"

  })

  let {username,password}=get

  if(!user[username]){

  //end :只能用字符串(這里必須用stringify轉一下)

  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:"登錄成功"

  }))

  }

  }else if(path=='/reg'){

  res.writeHead(200,{

  "Content-Type":"text/plain;charset=utf-8"

  })

  let {username,password}=post //把“新增的”數據取出

  if(user[username]){ // ↑ 放到user中

  res.end(JSON.stringify({

  err:1,

  msg:"賬戶已存在"

  }))

  }else{

  user[username]=password

  res.end(JSON.stringify({

  err:0,

  msg:"注冊成功"

  }))

  }

  }else{

  //如果既不是登錄也不是注冊——剛打開頁面的時候!(這一步至關重要:判斷頁面路徑是否正確)

  fs.readFile(`www${path}`,(err,data)=>{

  if(err){

  res.end('404')

  }else{

  res.end(data)

  }

  })

  }

  }

  我們來分析一下:

  res.writeHead(200,{

  "Content-Type":"text/plain;charset=utf-8"

  })

  代碼中這一部分和java寫后端中的:

  response.setHeader("Content-type", "text/html;charset=UTF-8");

  response.setCharacterEncoding("UTF-8");

  是一樣的效果——規范字體格式

  還有一點要注意的是:end函數——只接受字符串形式,故常用JSON.stringify()來轉換。

  下面把HTML代碼放上:

  (關于這個jQuery包的下載,很好玩:在命令行里輸入npm i jquery,回車,即可(前提是你得下載了node))

  用戶名:

  密碼:

  登錄

  注冊

  做完這一切,在命令行輸入:node js文件完整路徑,然后打開瀏覽器,輸入:localhost:監聽的端口號/html文件名,即可測試

看完上述內容,你們對node.js中怎么注冊服務器端有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沂南县| 南雄市| 栾城县| 友谊县| 定兴县| 大厂| 大荔县| 神农架林区| 上虞市| 凉山| 吉林市| 六盘水市| 陆川县| 浪卡子县| 朔州市| 德昌县| 达尔| 绥滨县| 邵东县| 榆林市| 玉门市| 化德县| 达拉特旗| 远安县| 济南市| 贵溪市| 焦作市| 平江县| 满洲里市| 大化| 水城县| 沂南县| 陵水| 宜阳县| 四子王旗| 城固县| 兴国县| 唐海县| 瑞金市| 洛川县| 葫芦岛市|