node.js中怎么注册服务器端

发布时间:2021-07-21 10:02:29 作者:Leah
来源:亿速云 阅读:166

今天就跟大家聊聊有关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中怎么注册服务器端有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. 如何搭建Node.js(Express)用户注册、登录以及授权的环境
  2. Node.js实现注册邮箱激活功能的方法示例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

node.js

上一篇:Laravel如何解决JWT-Auth刷新token的问题

下一篇:node.js中怎么对CQS进行操作

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》