Node.js搭建一个简单的服务器
文章目录
- 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));
注意
- 引入
http
,fs
,模块 - 字符串
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搭建一个简单的服务器相关推荐
- 一、node.js搭建最简单的服务器
node.js搭建最简单的服务器 代码演示: // 1. 加载http核心模块 var http = require('http')// 2. 使用http.createServer()方法创建一个W ...
- 如何用 Node.js 实现一个简单的 Websocket 服务?
最近正在研究 Websocket 相关的知识,想着如何能自己实现 Websocket 协议.到网上搜罗了一番资料后用 Node.js 实现该协议,倒也没有想象中那么复杂,除去注释语句和 console ...
- 用nodejs搭建一个简单的服务器
使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安 ...
- 使用Node.js写一个简单的api接口
引入Http模块 默认你已经安装了Node.js Node当中内置了Http模块: 可以使用 var http= require("http"); 复制代码 引入http模块: H ...
- express 文件服务器,Express搭建一个简单后台服务器
Express框架 Web 应用程序 Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能. API 使用您所选择的各种 ...
- 如何用express+node+ejs 搭建一个简单的页面
1.建立工程文件夹my_ejs. 2.首先利用npm install express和npm install ejs 下载这两个家伙.至于要不要设置成全局的,看习惯,我习惯性的下载到本项目中的文件夹中 ...
- 搭建一个简单Git服务器
1.在PC上创建一个git空仓库 # mkdir -p /home/git_test # cd git_test # git init --bare test.git //test.git目录被clo ...
- 搭建一个简单repo服务器
一.服务器端 1.安装依赖 # sudo apt install repo创建manifest.test1.test2仓库 1.创建manifest中心仓库 # cd /home/demo/repo_ ...
- 使用XMAPP搭建一个简单的服务器
1.首先去官网下载XMAPP,https://www.apachefriends.org/zh_cn/download.html 2.无脑点击next进行安装 3. 找到安装路径(我安装在d盘):D: ...
最新文章
- CircleDisplay
- [03]常用正则表达式
- 顺序栈实现表达式求值(C语言实现)【栈】
- python文件流读取二进制_Python使用web.py从POST请求中提取二进制文件
- php json 默认值,php操作JSON格式数据的实现代码
- 苹果手机扩容对手机好不好?
- myPRO HMI/SCADA 产品被曝多个严重漏洞
- 用segnet训练我自己的数据,实验笔记1——改变图片大小
- 通达信标记符号_通达信符号大全
- SI4463软件开发记录
- 1699 个词汇 的 计算机英语
- Android信息处理机制
- 计算机woyd打不开,word打不开怎么办?word文档打不开的几种解决方法
- photoshop中如何在6寸相纸上打印1寸照片10张2X5模式(自动填充模式)
- shell编程100例(附PDF下载)
- Python实现烟花效果,祝大家2021年,牛年大吉。
- 已知信码序列为1011_专升本计算机网络:校验码
- ISeeYou:一款基于Bash和Javascript开发的社会工程学网络钓鱼工具
- 一文读懂硬件开发EVT/DVT/PVT三大阶段
- 滁州学院第二期计算机,欢迎加入—学生会(第二期)
热门文章
- 计算机毕业设计ssm毕业生派遣系统
- linuxonandroid ubuntu12.04-v4-core启动文件(N7100 Android 4.3)
- 她抢了我的客户,我还要吗?你的善良要带点锋芒
- javaSE--进阶二(继承,抽象)
- 菜鸟必看:wndows xp进程全解
- linux系统我的世界开服,Ubuntu Linux下搭建Minecraft我的世界服务器
- iOS 程序开发零散重点知识总结(一)暴走漫画制作笔记三
- PowerPC MPC8270
- 【java毕业设计】基于Javaee+ajax的影视创作论坛设计与实现(毕业论文+程序源码)——影视创作论坛
- 数字货币的常见骗局及鉴定方法