使用fastify搭建项目

393 阅读1分钟

初始化项目

首先声明哈本人使用的是mac系统,所以会有些许差异,各位自行查找一下相关的命令或者是平替操作

 # 新建目录
mkdir blogdemo
cd blogdemo 

# 初始化项目
npm init 

这里我就不过多阐述了嗷

新建目录和index文件,app文件

mkdir routes controller middleware models services utils
touch index.js
touch app.js
# 安装fastify
npm i fastify -S
# 安装nodemon调试用
npm i nodemon -D

修改package.json文件

{
  "name": "blogdemo",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js"
  },
  // ....其他的例如devDependencies,dependencies等我就不详细写了
  "engines": {
    "node": ">=12.0.0" // 设置nodejs最低版本
  }
}

目录结构如下

controllers

contro1 contro2 .... 书写控制器文件

middleware

auth.js ....等中间键文件

models

一些公共的参数模板文件

routes

路由文件

services

服务文件

utils

公共的一些方法函数

app.js fastify实例对象 index.js 启动文件及服务文件 config.json 配置文件 package.json 依赖和配置文件

首先我们先书写一下app.js和index.js app.js app.js很简单就定义一个fastify实例就行了,当然你也可以挂挂载一些前置的插件

const fastify = require("fastify")();
// 可以在这里挂载一些前置插件,例如sql连接,例如cors跨域等等的
module.exports = fastify;

我习惯在index.js中进行挂载 index.js

// 引入fastify
const fastify = require("./app");
// 配置cors跨域
const cors = require('@fastify/cors')
fastify.register(cors, {
  origin: '*',// 这里可以是数组形式,指定多个地址请求
  methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS']
})
// 启动服务器
const start =  () => {
  fastify.listen({ port: 3002, host: '0.0.0.0' }, (err, address) => {
    if (err) {
      fastify.log.error(err)
      process.exit(1)
    }
    console.info(`server listening on ${address}`)
  });
};

start();

定义接口绑定controllers

我一般会把接口绑定的函数放置在controllers里面 例如新建一个返回固定参数的接口 文件名字我们就定义为 info.js吧

const info = async (request, reply) => {
  reply.send({
  	code: 200,
  	data: {},
  	message: "This is a info Api."
  })
}
module.exports = {
  info
}

创建接口的路由

/routes/index.js

const { info } = require("../controllers/info")
module.exports = [
  {
    url: "/info",
    method: "GET",
    // 当然你也可以添加一些其他的前置函数来做一些处理例如添加token校验等等的
    // preHandler: 前置函数(),
    handler: info
  }
]

在上面这里我们添加好了路由配置后引入到index.js或者是app.js中进行挂载

// 引入fastify
const fastify = require("./app");
// 配置cors跨域
const cors = require('@fastify/cors')
const routes = require('./routes')
fastify.register(cors, {
  origin: '*',// 这里可以是数组形式,指定多个地址请求
  methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS']
})
// 注册路由
routes.forEach(route => {
  fastify.route({
    ...route
  })
})
// 启动服务器
const start =  () => {
  fastify.listen({ port: 3002, host: '0.0.0.0' }, (err, address) => {
    if (err) {
      fastify.log.error(err)
      process.exit(1)
    }
    console.info(`server listening on ${address}`)
  });
};

start();

这时我们一个简单的fastify的应用就搭建好了,而且是允许跨域访问的嗷, 酱酱,就酱紫啦