课程引导
- 🚀【eggjs实战10天入门-第1天】🚀—— 搭建项目(本篇)
- 🚀【eggjs实战10天入门-第2天】🚀—— controller、service和config
- 🚀【eggjs实战10天入门-第3天】🚀—— 操作mysql
简介
这是一个系列课程,大约会更新6-10篇的样子。内容以项目实战为主,可能不会过多的讲解理论。也希望大家可以通过这套课程,完成crud的入门,可以对node/mysql/redis多一些了解。
本次课程会涉及到三大部分
- 1、了解eggjs
- 2、了解mysql
- 3、了解redis
本节目标
写一个接口,并且返回我们自定义的数据
1、写一个get接口
1.1、为什么放弃脚手架
官方有专门的脚手架生成整个的项目,但是这对于我们学习来讲,没有太多的好处。为了让大家更好的了解 Egg.js,接下来,我们将跳过脚手架,手动一步步的搭建出一个五脏俱全的小麻雀来。
1.2、创建项目,安装egg
// 创建一个文件夹
mkdir learn-eggjs
// 进入文件夹并初始化npm项目结构(生成package.json)
cd learn-eggjs
npm init -y
// 安装egg相关包
npm i egg -S
npm i egg-bin -D
1.3、先搞一个最简单的出来
这时我们拥有了最基础的一个空项目,屁都么的一个。 还请各位观众老爷不要抓耳挠腮,接下来就是见证小麻雀开始动弹的时刻了(还没飞,只能算动弹一下)
在开始之前请牢记一句话,eggjs采用的是
约定大于配置接下来的某些操作大家可能会出现疑惑,就是为什么要这样操作?是的,这就是约定。至于原理,我们可以在后面开个文章单独讲。
接下来我们继续完善我们的项目结构
我们按照上面的结构进行创建文件夹和文件,具体的含义我们在后面的文章在细讲,这篇文章我们先看到麻雀动弹就可以了
// base.js
// ctx.body其实就是ctx.response.body,用于在当前接口返回数据
const { Controller } = require('egg')
class BaseController extends Controller {
async index() {
this.ctx.body = {
data: "hello it's me"
}
}
}
module.exports = BaseController
// router.js
module.exports = app => {
const { router, controller } = app;
router.get('/hello', controller.base.index);
};
// config.default.js
module.exports = appInfo => {
const config = {}
config.keys = appInfo.name + 'hello';
return {
...config
};
};
1.4、项目结构大致如下
1.5、调整package.json的脚本
新增dev命令,执行egg-bin dev
"scripts": {
"dev": "egg-bin dev"
},
1.6、启动
执行yarn dev
如果你的7001端口没有被占用,那么你可以看到上图所示,这时,我们在postman或者apifox打开http://127.0.0.1:7001,这时会提示404,那是因为我们在app/router.js里面配置的路由为/hello。所以我们需要打开的正确地址是http://127.0.0.1:7001/hello
当当当,这时我们就可以如愿以偿的看到结果了。
好啦,那么我们的小麻雀可以飞起来了
给观众老爷附上源码 源码地址
tag为v1.0.0