文章目录

  • Node.js的安装
  • 了解Node.js模块系统
  • 服务器的搭建
    • 一、创建一个Web服务器
      • 注意
      • 程序代码
      • 运行
    • 二、静态资源托管
      • 静态资源
      • 注意
      • 程序代码
      • 运行
    • 三、简单接口的实现(简单服务器搭建完成)
      • 注意
      • 程序代码
      • 运行
      • postman 测试接口软件

Node.js的安装

  • 登录Node.js中文官网直接下载安装
  • 点击查看Node.js的环境安装

了解Node.js模块系统

  • 利用Node.js搭建一个简单的服务器,需要先了解Node.js模块化系统,可以进行简单的Node.js内置模块操作
  • 点击查看Node.js的模块化系统

服务器的搭建

一、创建一个Web服务器

注意

  • 引入http模块,创建http对象,监听端口
  • 创建服务器成功后,每次对文件的更改都需要服务器重启,也就是重新node + 文件名,因此推荐使用命令行工具自动重启,安装方式npm install nodemon -g 指令 nodemon + 文件名,自动重启,ctrl + c退出
  • res.end()必须要写,后端结束响应,如果不写页面将会一直加载
  • res.write()返回数据,如果数据是一段文字,需要res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"})设置响应头,数据也可以是一段html代码
  • 监听的端口可以是1~65535,但是1024以下一般系统占用,不推荐使用

程序代码

//1.引入http模块
const http = require("http")//2.创建http服务对象
//http.createServer(回调函数)const app = http.createServer((req,res)=>{//req  request  请求    res  respond   响应//后端需要设置响应头 res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"})res.write("你好!")// res.write(`<!DOCTYPE html>// <html lang="en">// <head>//     <meta charset="UTF-8">//     <meta name="viewport" content="width=device-width, initial-scale=1.0">//     <title>Document</title>// </head>// <body>//     你好呀!大兄弟// </body>// </html>`)res.end() //后端需要结束响应  必须要写的
})//3.监听端口
app.listen(8000)

运行


  • res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"})设置响应头
  • res.write()可以返回html代码
  • ctrl + c退出

二、静态资源托管

静态资源

  • xx.css xx.html xx.js xx.图片 xx.json xx.字体 等等都属于静态资源…本文中,我们简单的用几个html文件作为静态资源,你也可以放一些页面及更多的资源。
  • 前端资源请求方式
    • <a href=".."></a> <img src="..."/> location.href="..." body{ background:url(....)}
  • 后端资源读取
    • fs.readFile(文件名,[编码方式],回调(err,data));

注意

  • 引入httpfs,模块
  • 字符串index of方法, 用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回-1,就表示不匹配。返回-1表示不存在
  • try...catch 可以测试代码中的错误。try 部分包含需要运行的代码,而 catch 部分包含错误发生时运行的代码。,在这里,使用它来让页面请求错误时跳转到事先写好的404页面

程序代码

  • 同级目录下放入静态资源
  • req.url,就是得到请求静态资源的地址
//资源托管//1.引入相应的原生模块、依赖
let http = require("http")
let fs = require("fs")//2.创建http对象(服务器对象)
let app = http.createServer((req,res)=>//排除 /favicon.ico的请求  网页图标  自带的请求if(req.url.indexOf("/favicon.ico") === -1){//需要判断要读取的是动态资源(接口api)还是   静态资源if(req.url.indexOf("/api") !== -1){ //处理接口console.log("处理/api开头的动态接口",req.url)}else{ //处理静态资源 /index.htmltry {//如果是  /   即直接请求localhost  相当于请求  index.html  默认是首页//如果不是   得到  req.url    返回请求的  页面let path = req.url === "/" ? "/index.html" : req.url;let html = fs.readFileSync("./www"+path)//直接将html结果返回给浏览器res.write(html)    } catch (error) {//如果请求页面 出错  即页面不存在   就跳转到  404 页面let html = fs.readFileSync("./www/nopage.html")res.write(html)    }}}res.end() //必须写
})//监听服务器
app.listen(8000)

运行

  • 默认是首页
  • 请求某个页面

  • 如果请求地址错误,跳转到事先准备好的404错误页面

三、简单接口的实现(简单服务器搭建完成)

注意

  • 引入http,fs,url,querystring内置模块

  • 处理地址栏数据,例如get,请求

    • req.url 抓取 get请求的数据 urlObj = url.parse(req.url,true)将数据转化为对象urlObj.query得到传递的数据
  • 处理非地址栏数据,例如post,请求

    • req.on('data',(chunk)=>{CHUNK==每次收到的数据buffer}每次在数据池中抓取一小片数据,知道数据被抓取完
    • req.on('end',()=>{ 接收完毕 切字符 querystring }) 当数据抓取完,接收完毕后,得到数据
    • 将数据转化为对象querystring.parse(data)

程序代码

//1.引入相应的原生模块、依赖
let http = require("http")
let fs = require("fs")
let url = require("url")
let querystring = require("querystring")//2.实例化http对象(服务器对象)
let app = http.createServer((req,res)=>{//排除 /favicon.ico的请求if(req.url.indexOf("/favicon.ico") === -1){//需要判断要读取的是动态资源(接口api)还是静态资源if(req.url.indexOf("/api") !== -1){ //处理接口//处理地址栏的数据let urlObj = url.parse(req.url,true)console.log(urlObj.query)//非地址栏的数据let noAddressData = ""     //存放非地址栏的数据req.on("data",chunk=>{     //chunk代表抓取的一片数据,data事件内部会频繁的触发noAddressData += chunk})req.on("end",()=>{         //数据已经全部接受完毕console.log("非地址栏的数据:",querystring.parse(noAddressData))})}else{ //处理静态资源的代码try {let path = req.url === "/" ? "/index.html" : req.url;let html = fs.readFileSync("./www"+path)//直接将html结果返回给浏览器res.write(html)    } catch (error) {let html = fs.readFileSync("./www/nopage.html")res.write(html)    }}}res.end() //必须写
})//监听服务器
app.listen(8000)

运行


postman 测试接口软件

  • 在网上搜索下载安装
  • 点击进入官网
  • 利用postman测试接口
  • 配置通过地址栏传递的数据
  • 非地址栏传递的数据
  • 点击send发送请求
  • 得到传递的数据

Node.js搭建一个简单的服务器相关推荐

  1. 一、node.js搭建最简单的服务器

    node.js搭建最简单的服务器 代码演示: // 1. 加载http核心模块 var http = require('http')// 2. 使用http.createServer()方法创建一个W ...

  2. 如何用 Node.js 实现一个简单的 Websocket 服务?

    最近正在研究 Websocket 相关的知识,想着如何能自己实现 Websocket 协议.到网上搜罗了一番资料后用 Node.js 实现该协议,倒也没有想象中那么复杂,除去注释语句和 console ...

  3. 用nodejs搭建一个简单的服务器

    使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安 ...

  4. 使用Node.js写一个简单的api接口

    引入Http模块 默认你已经安装了Node.js Node当中内置了Http模块: 可以使用 var http= require("http"); 复制代码 引入http模块: H ...

  5. express 文件服务器,Express搭建一个简单后台服务器

    Express框架 Web 应用程序 Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能. API 使用您所选择的各种 ...

  6. 如何用express+node+ejs 搭建一个简单的页面

    1.建立工程文件夹my_ejs. 2.首先利用npm install express和npm install ejs 下载这两个家伙.至于要不要设置成全局的,看习惯,我习惯性的下载到本项目中的文件夹中 ...

  7. 搭建一个简单Git服务器

    1.在PC上创建一个git空仓库 # mkdir -p /home/git_test # cd git_test # git init --bare test.git //test.git目录被clo ...

  8. 搭建一个简单repo服务器

    一.服务器端 1.安装依赖 # sudo apt install repo创建manifest.test1.test2仓库 1.创建manifest中心仓库 # cd /home/demo/repo_ ...

  9. 使用XMAPP搭建一个简单的服务器

    1.首先去官网下载XMAPP,https://www.apachefriends.org/zh_cn/download.html 2.无脑点击next进行安装 3. 找到安装路径(我安装在d盘):D: ...

最新文章

  1. CircleDisplay
  2. [03]常用正则表达式
  3. 顺序栈实现表达式求值(C语言实现)【栈】
  4. python文件流读取二进制_Python使用web.py从POST请求中提取二进制文件
  5. php json 默认值,php操作JSON格式数据的实现代码
  6. 苹果手机扩容对手机好不好?
  7. myPRO HMI/SCADA 产品被曝多个严重漏洞
  8. 用segnet训练我自己的数据,实验笔记1——改变图片大小
  9. 通达信标记符号_通达信符号大全
  10. SI4463软件开发记录
  11. 1699 个词汇 的 计算机英语
  12. Android信息处理机制
  13. 计算机woyd打不开,word打不开怎么办?word文档打不开的几种解决方法
  14. photoshop中如何在6寸相纸上打印1寸照片10张2X5模式(自动填充模式)
  15. shell编程100例(附PDF下载)
  16. Python实现烟花效果,祝大家2021年,牛年大吉。
  17. 已知信码序列为1011_专升本计算机网络:校验码
  18. ISeeYou:一款基于Bash和Javascript开发的社会工程学网络钓鱼工具
  19. 一文读懂硬件开发EVT/DVT/PVT三大阶段
  20. 滁州学院第二期计算机,欢迎加入—学生会(第二期)

热门文章

  1. 计算机毕业设计ssm毕业生派遣系统
  2. linuxonandroid ubuntu12.04-v4-core启动文件(N7100 Android 4.3)
  3. 她抢了我的客户,我还要吗?你的善良要带点锋芒
  4. javaSE--进阶二(继承,抽象)
  5. 菜鸟必看:wndows xp进程全解
  6. linux系统我的世界开服,Ubuntu Linux下搭建Minecraft我的世界服务器
  7. iOS 程序开发零散重点知识总结(一)暴走漫画制作笔记三
  8. PowerPC MPC8270
  9. 【java毕业设计】基于Javaee+ajax的影视创作论坛设计与实现(毕业论文+程序源码)——影视创作论坛
  10. 数字货币的常见骗局及鉴定方法