什么是 fast-qjs ?它能做什么?
fast-qjs 是一个基于 fastify 框架使用约定式
进行路由约束的轻量框架,完全继承 fastfiy 的优点,当你想要快速实现一个功能模块的 crud ,那么 fast-qjs 就能让你在 10 分钟以内完成
fast-qjs 优点:
files
接口进行一个案例第一步,确保已经安装了nodejs
,终端运行:
npx create-qjs qjs-app
执行成功你将看到如下项目结构
qjs-app/
├── node_modules/ # 依赖包目录
│
├── package.json # 项目配置文件
│
├── package-lock.json # 依赖版本信息
紧接着执行下面的命令
cd qjs-app && npm run start
执行完你将看到如下结构
qjs-app/
│
├── db/
│
├── functions/
│
├── public/
│
├── node_modules/
│
├── package.json
│
├── package-lock.json
现在进入functions
目录,你将看到一个默认的qjs.mjs
文件,根据终端提示你的项目运行在http://localhost:5173
。紧接着你的 api 已经创建,浏览器访问 http://localhost:5173/api/qjs 你将看 qjs.mjs 默认插入数据库的信息
我们打开qjs.mjs
文件你将看到如下信息:
// functions/qjs.mjs
// @see https://github.com/allmors/qjs/
// import qjs from '@allmors/qjs/core';
export default async function (params, ctx) {
// const User = await qjs.db.collection('user');
// const user = await User.insertOne({ name: "Sam", email: 'sam@codingsamrat.com' })
// or
const User = await this.db.collection('user');
const user = await User.insertOne({ name: "Sam", email: 'sam@codingsamrat.com' })
// ......
return ctx.reply.send({
message: 'Hello from qjs API',
method: context.method,
params: {
...user
}
});
}
默认代码不用管,直接粘贴下面代码全部替换
export default async function (params, ctx) {
try {
const { file } = params
let result = {}
if (ctx.method === 'POST') {
const res = await this.files.upload(file)
result = res
}
return ctx.reply.send({
message: 'Hello from qjs API',
method: ctx.method,
result: result
});
} catch (error) {
throw new Error(error)
}
}
现在打开 apifox 或者其它工具,我以 apifox 为例
现在你的文件上传接口已经开发完成,回到你的项目目录你将会看到uploads
,里面就是你上传的文件,你可用通过 nginx 获取 caddy 反代该目录即可访问你的文件,当然了,如果你不想这么麻烦,那么,修改 package.json 中如下配置:
找到QJS_STATIC
,把QJS_STATIC
修改为uploads
即可,然后访问:http:0.0.0.0:5173/public/你的 uploads 目录里面的文件名
比如:http://0.0.0.0:5173/public/61f1adee-08ea-45-1727658693615/deKGMl9.jpg
更多信息请查阅文档fast-qjs
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.