文章目录
- 🌟前言
- 🌟静态资源托管
- 🌟安装
- 🌟使用
- 🌟Koa视图
- 🌟EJS模板引擎使用
- 🌟安装
- 🌟配置
- 🌟使用
- 🌟模板渲染方法
- 🌟使用案例
- 🌟数据库
- 🌟写在最后
🌟前言
哈喽小伙伴们,新的专栏 Node 已开启;这个专栏里边会收录一些Node的基础知识和项目实战;今天我们继续带大家了解Node的框架 Koa
;让我们一起来看看吧🤘
🌟静态资源托管
为了提供诸如图像、CSS 文件和 JavaScript 文件之类的静态文件,请使用 koa-static包。
🌟安装
安装静态文件模块:
npm i koa-static -S
🌟使用
const static_ = require('koa-static')
app.use(static_(
path.join(__dirname, './static')
))
这样的一两句代码,就完成了一个静态服务器的搭建,static 目录下的文件,就能支持通过路径访问。
🌟Koa视图
koa-views 是一个视图管理模块,它的灵活度很高,支持很多的模版引擎,这里我们给它配置的引擎是 ejs。
🌟EJS模板引擎使用
关于EJS模板引擎详细使用,请查看文档 架构模式 > MVC架构模式 > EJS模板引擎
🌟安装
npm i koa-views
npm i ejs
🌟配置
views(root[, opts])
参数描述:
- root: 模板所在的位置。可以是相对路径也可以是绝对路径,所有渲染模板都是相对于此路径的
- opts (可选参数)
- opts.autoRender: 是否使用 ctx.body 接收渲染的模板字符串。默认为true。
- opts.extension: 模板文件的默认扩展名,默认为html
- opts.map: 将指定模板文件扩展名映射到模板引擎
配置1:使用默认后缀,此时的模板文件后缀名为.ejs
const views = require('koa-views')
const path = require('path')
// 配置视图
app.use(views(path.join(__dirname, './views'), {
extension: 'ejs'
}))
配置2:设置模板引擎后缀为html,此时的模板文件后缀名为.html
// 配置视图
app.use(views(path.join(__dirname, './views'), {
map: {html:'ejs'}
}))
🌟使用
🌟模板渲染方法
ctx.render(viewPath, locals ):Promise
参数描述:
- viewPath:一个字符串,view是要渲染的模板文件的文件路径。
- locals:一个对象,其属性定义视图的局部变量。
🌟使用案例
我们新建一个 views 目录,这里面存放我们的视图文件,在新建一个 index.ejs。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ejs</title>
</head>
<body>
<%=message%> <!-- ejs 的模版语法,读取变量 message | 是从 render 传递过来 -->
</body>
</html>
app.js
app.use(async (ctx, next) => {
await ctx.render('index', {message: 'index'}) // render 渲染方法,这里加载到 views/index.ejs 文件 | 第二参数是传参到模版
await next()
})
🌟数据库
mysql2是一个高性能的MySQL驱动程序。
安装:
npm install --save mysql2
使用:
const http = require('http');
const mysql = require('mysql2/promise');
const Koa = require('koa');
// create the pool
const pool = mysql.createPool({
connectionLimit:10, //连接数,默认10个
host:'localhost',
user:'root',
password:'',
database:'数据 库名'
port:3306 //默认服务器端口
});
let App = new Koa();
App.listen(8080);
App.context.db = pool; //可以在任意模块中使用 ctx.db操作数据库
App.use(async (ctx,next)=>{
try{
//可以使用async await的书写形式
let data = await ctx.db.query('SELECT * FROM 表名');
next();
}catch(e){
console.log('error',e);
}
});
关于mysql2的使用,请参考 第三方包>mysql
🌟写在最后
更多Node知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!
✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!