基于 koajs 云端 Mock 数据
介绍一下:
本文主要内容是,在服务器上安装nodejs,然后使用 koajs ,将云端的 json 文件以 api 接口的形式返回,多终端可以访问同一个接口数据,静态文件也可以通过 url 访问。
一、安装 nodejs
- 下载地址: Node.js
https://nodejs.org/zh-cn/download/
-
ssh 远程登入服务器
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
SSH主要用于远程登录。假定你要以用户名root,登录远程主机host,只要一条简单命令就可以了。
ssh root@host
-
创建 software 目录并进入
mkdir /usr/software && cd /usr/software/
-
安装 wget
使用 wget 可以从网上下载软件、音乐、视频
yum -y install wget
-
下载、解压、并进入node 目录
wget https://nodejs.org/dist/v16.17.1/node-v16.17.1-linux-x64.tar.xz //下载 tar xf node-v16.17.1-linux-x64.tar.xz //解压 cd node-v16.17.1-linux-x64 // 进入解压目录 ./bin/node -v // 执行node命令 查看版本 v16.17.1
-
解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln 命令来设置软连接:
ln -s /usr/software/node-v16.17.1-linux-x64/bin/node /usr/local/bin/ ln -s /usr/software/node-v16.17.1-linux-x64/bin/npm /usr/local/bin/ ln -s /usr/software/node-v16.17.1-linux-x64/bin/npx /usr/local/bin/
-
查看是否安装成功
node -v && npm -v && npx -v v16.17.1 8.15.0 8.15.0
-
npm 使用淘宝镜像
之所以切换镜像,默认情况下使用的镜像是国外镜像,速度一般比较慢,使用国内镜像速度快一些
npm config set registry https://registry.npm.taobao.org npm config get registry
二、使用 koajs 云端 Mock 数据
-
Koa 介绍
Koa —— 基于 Node.js 平台的下一代Web 开发框架 Koa 它仅仅提供了一个轻量优雅的函数库,使得编写Web 应用变得得心应手, 不在内核方法中绑定任何中间件。
-
常用中间件
- koa-router:路由解析
- koa-static:配置静态服务
- koa/cors:跨域处理
- koa-body: request body 解析
- koa-logger:日志记录
- koa-views: 模板渲染
- koa-session:session 处理
- koa-helmet:安全防护
-
开始创建,存放项目目录
mkdir /home/project && cd /home/project
-
创建项目文件夹,并进入
mkdir koajs && cd koajs
-
初始化项目
npm init -y
-
安装 koajs 和其它中间件
npm install koa koa-router @koa/cors koa-static -s
-
创建入口文件 server.js
vi server.js
输入以下内容
const Koa = require('koa'); const app = new Koa(); // response app.use(ctx => { ctx.body = 'Hello Koa'; }); let port = 3000; app.listen(port, () => { console.log('server is running on ' + ' http://localhost:' + port); })
运行 server 文件
node server.js
浏览器打开 http://localhost:3000 ,其中 localhost 换成服务器公网 ip 地址,防火墙安全组打开 3000 端口
http://localhost:3000 Hello Koa
-
本地安装 nodemon
Nodemon是一个帮助开发基于 nodejs 的应用程序的工具,当检测到目录中的文件更改时,它会自动重启node应用程序。
npm install nodemon -D
-
修改 package.json 文件, 添加下面 2 行内容
{ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "nodemon server.js", "start": "node server.js" } }
下次启动运行时,使用以下命令
本地开发
npm run dev
本地运行
npm run start
-
最终 server 文件内容
const fs = require('fs') const Koa = require('koa') const Router = require('koa-router') const cors = require('@koa/cors'); const staticFiles = require('koa-static') const app = new Koa() const router = new Router() router.get('/', async ctx => { // 返回数据 ctx.body = "hello world!" }) // 返回 json 格式数据 router.get('/hello', async ctx => { const data = { code: 200, data: { msg: "Hello Koa!", } } ctx.body = data }) // 返回 json 格式文件数据 router.get('/data', async ctx => { ctx.body = JSON.parse(fs.readFileSync('./static/data.json')); }) // 将koa和中间件连起来 app.use(cors()) app.use(router.routes()) /** * 在加了router.allowedMethods()中间件情况下, * 如果接口是get请求,而前端使用post请求,会返回405 Method Not Allowed ,提示方法不被允许 ,并在响应头有添加允许的请求方式; * 而在不加这个中间件这种情况下,则会返回 404 Not Found找不到请求地址,并且响应头没有添加允许的请求方式 。 */ app.use(router.allowedMethods()) // 去 public 目录找静态文件,访问 URL 是不加 public app.use(staticFiles('./public')); let port = 3000; app.listen(port, () => { console.log('server is running on ' + ' http://localhost:' + port) })
-
最后查看一下目录结构
Linux tree 命令用于以树状形式列出目标目录及其底下所有子目录和文件
yum -y install tree
查看树状目录结构
tree -I "node_modules" . ├── package.json ├── package-lock.json ├── public │ └── images │ └── photo.png ├── server.js └── static └── data.json
其中 static 目录放的是 json 文件,public 目录放的是对外公开的静态资源文件。
-
通过浏览器访问一下接口地址
其中 localhost 换成服务器公网 ip 地址
http://localhost:3000/ http://localhost:3000/data http://localhost:3000/images/photo.png
转载自:https://juejin.cn/post/7152452531828834312