前言
作为前端开发者,最适合我们的后端就是node
了,node的框架挺多的。选择Koa是因为国内用的挺多的、关于这方面的教程也很多、而且比较适合小项目。
学习教程是:【杰哥课堂】-项目实战-Node+Koa2从零搭建通用API服务
写这些文章,更多的是当作自己的笔记,方便以后查看。
项目初始化
初始化项目
npm init -y
进入到文件夹下创建.gitignore
和 README.md
文件
安装koa
npm i koa
创建入口文件
在项目根目录下创建main.js
// 导入Koa
const Koa = require("koa");
// 实例化
const app = new Koa();
// 中间件
app.use(async (ctx, next) => {
const start = Date.now();
await next();
ctx.body = 'hellow koa';
});
// 监听端口
app.listen(3000, () => {
console.log(`app listening at http://localhost:3000`)
});
设置启动命令
在package.json
里设置启动命令
"scripts": {
"dev":"node main.js" // 入口文件的地址要写对
},
优化
热重启
保证代码修改后页面能够及时刷新。这里需要安装nodemon
,安装到开发环境依赖里
安装
npm i nodemon -D
修改启动命令
"scripts": {
"dev": "nodemon main.js"
},
设置配置文件
dotenv
dotenv是一个npm工具,它可以帮助我们在Node.js应用程序中加载环境变量。在开发过程中,我们经常需要使用敏感信息,例如数据库密码、API密钥等,这些信息不能直接暴露在代码中。dotenv可以让我们将这些敏感信息存储在一个名为
.env
的文件中,并在应用程序中使用process.env
对象来访问这些变量。这样可以保护我们的敏感信息,同时也方便了我们在不同的环境中部署应用程序。
安装
npm i dotenv
创建配置文件
在项目根目录下创建.env
文件,编写.env
文件必须遵守以下要求
-
变量名必须是大写字母,多个单词之间用下划线连接,例如:DB_HOST。
-
变量名和值之间使用等号(=)连接,例如:DB_HOST=localhost。
-
变量值可以是字符串、数字、布尔值等任何类型
-
如果变量值中包含空格或特殊字符,需要使用引号或双引号括起来,例如:DB_PASSWORD=“my password”。
-
如果需要在变量值中使用换行符或其他特殊字符,可以使用转义字符,例如:DB_PASSWORD=“my\npassword”。
-
如果需要在变量值中使用其他环境变量,可以使用 语法,例如: D B P A S S W O R D = " {}语法,例如:DB_PASSWORD=" 语法,例如:DBPASSWORD="{DB_USER}_password"。
-
如果需要注释.env文件中的某一行,可以在行首添加#符号,例如:# This is a comment。
-
.env文件中的变量可以在应用程序中通过process.env变量访问,例如:const dbHost = process.env.DB_HOST。
# 监听的端口
APP_PORT = 3000
配置文件
在src
目录下创建一个config
目录,用来保存一些配置
const dotenv = require('dotenv')
// 从.env文件中加载环境变量到Node.js的process.env对象中
dotenv.config()
// dotenv默认加载.env文件,如果加载其他文件,比如.env.prod可以使用dotenv.config({ path: '.env.prod' })
//console.log(process.env.APP_PORT)
// 导出环境变量
module.exports = process.env
在main.js
里加载该文件
// 导入Koa
const Koa = require('koa');
// 导入环节变量
const { APP_PORT } = require('./src/config/config.default');
// 实例化
const app = new Koa();
// 中间件
app.use(async (ctx, next) => {
const start = Date.now();
await next();
ctx.body = 'hellow koa1';
});
// 监听端口
app.listen(APP_PORT, () => {
console.log(`app listening at http://localhost${APP_PORT}`);
});