- 可参考博客koa2框架基本使用方法
使用koa2-创建项目
- 借助**脚手架工具koa-generator**创建项目
- koa2框架基本使用方法 可参考这篇博客
使用koa-generator创建项目
1.项目文件下,安装脚手架工具koa-generator:
1 | npm install -g koa-generator |
2.选择koa2版本,**-e说明使用ejs模板**进行开发,创建项目:
1 | koa2 -e |
3.安装依赖:
1 | npm install |
运行项目
4.启动项目:
1 | npm run dev |
5.访问http://localhost:3000/
:
生成文件
- bin文件夹:启动文件
- src-App.js:项目的主文件,处理业务(他会将项目中写好的文件进行编译执行)
- node_moudles文件夹:依赖文件
- public文件夹:
- images文件夹:存放图片
- javascipts:存放js文件
- stylesheets:存放css文件
- routes文件夹:存放路由
- views文件夹:ejs文件
- **package.json:**基本命令(比如启动项目的
npm run dev
就是这里定义的)
借助coding管理项目
- 具体步骤在这篇博客中。
使用cross-env
- 安装cross-env:
npm i cross-env -D
- 设置package.json:
- 这里就不用另外安装nodemon进行热更新了,框架中执行的dev命令中自带了
- start基本用不到,可以删除
- test是单元测试用的,此时可先清空:
设置原因
- windows、linux、mac os三个系统中设置环境变量的方式都不同,但使用cross-env可以把他们统一起来,这样代码在3个系统中都能运行。
- 在node中,process对象是全局变量,它提供当前node.js的有关信息,以及控制当前node.js的有关进程。因为是全局变量,它对于node应用程序是始终可用的,无需require()。
- env是process的一个属性,这个属性返回包含用户环境信息的对象。在终端输入node后,在输入
process.env
可以看到打印出来的信息。 - NODE_ENV不是process.env对象上原有的属性,它是我们自己添加上去的一个环境变量,用来确定当前所处的开发阶段。
- 一般我们将 生产阶段 设为production,开发阶段 设为develop(在package.json中设置),然后在 脚本 中读取
process.env.NODE_ENV
即可知道现在是开发阶段还是生产阶段。
- 一般我们将 生产阶段 设为production,开发阶段 设为develop(在package.json中设置),然后在 脚本 中读取
整理代码结构
- 目前的代码结构不符合我们所习惯的:
- 稍作调整,新建src文件夹,将public、routes、views、app.js剪切到src下:
- 修改bin-www.js下app的引用路径:
- 页面正常显示即调整成功:
重新提交coding
项目进行重新提交,具体步骤在这篇博客中。
路由演示
- 自带的routes-index.js:
- 自带的routes-user.js:
异步渲染模板
- 在routes-index.js中key看到,ctx.render()是await的,即异步的,也就是说,node渲染ejs模板是异步的
- 原因:node中所有的IO操作都是异步的,而渲染模板实际上就是读取模板,读取模板是异步的
- 我们需要使用await将模板异步读取出来,然后再将变量返回给模板
处理get请求
动态参数
- 访问个人页时,可通过
ctx.params
来获取路由中传递的参数: - 点击“加载更多”时,
处理post请求
post请求的数据
- 登录时,可通过
ctx.request.body
(对象)获取post请求中的数据: - postman测试:
重新提交coding
- 添加文件到本地仓库:
git add .
git commit -m "feat:演示路由"
- 将本地文件推送到coding服务器:
git push origin master
(master也可以是其他分支)