Node框架 【Koa】之 【静态资源管理、模板引擎、连接数据库】

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: Node框架 【Koa】之 【静态资源管理、模板引擎、连接数据库】

🌟前言

哈喽小伙伴们,新的专栏 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!

目录
相关文章
|
6天前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
6天前
|
SQL Java 数据库连接
连接数据库修改用户信息
该博客文章通过Java JDBC代码示例演示了如何连接SQL Server数据库,并执行更新操作来修改用户信息,具体将小张的工作改为教授,并检查更新操作是否成功。
|
1天前
|
关系型数据库 MySQL 数据库
成功解决:Navicat 连接虚拟机Docker中的mysql数据库失败(仅限某些特殊情况)
这篇文章介绍了在Ubuntu环境中使用Docker部署Flask项目的方法,包括创建测试项目、设置数据库、构建Flask和Nginx镜像以及容器编排,其中使用了MySQL 5.7作为数据库,Flask 2.0.2作为Web框架,Gunicorn 20.1.0作为应用服务器,Nginx 1.21.4作为反向代理,并解决了Navicat连接Docker中的MySQL数据库失败的问题。
|
5天前
|
JavaScript 前端开发 Ubuntu
如何在 VPS 上安装 Express(Node.js 框架)并设置 Socket.io
如何在 VPS 上安装 Express(Node.js 框架)并设置 Socket.io
12 0
|
5天前
|
数据库 知识图谱
知识图谱(Knowledge Graph)- Neo4j 5.10.0 Desktop & GraphXR 连接自建数据库
知识图谱(Knowledge Graph)- Neo4j 5.10.0 Desktop & GraphXR 连接自建数据库
13 0
|
5天前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
4天前
|
缓存 JavaScript 安全
2022年最新最详细的安装Node.js以及cnpm(详细图解过程、绝对成功)
这篇文章提供了2022年最新最详细的Node.js和cnpm安装教程,包括步骤图解、全局配置路径、cnpm安装命令、nrm的安装与使用,以及如何管理npm源和测试速度。
2022年最新最详细的安装Node.js以及cnpm(详细图解过程、绝对成功)
|
1天前
|
JavaScript
成功解决node、node-sass和sass-loader版本冲突问题、不需要降低node版本。如何在vue项目中安装node-sass,以及安装node-sass可能遇到的版本冲突问题
这篇文章介绍了在Vue项目中安装node-sass和sass-loader时遇到的版本冲突问题,并提供了解决这些问题的方法,包括在不降低node版本的情况下成功安装node-sass。
成功解决node、node-sass和sass-loader版本冲突问题、不需要降低node版本。如何在vue项目中安装node-sass,以及安装node-sass可能遇到的版本冲突问题
|
4天前
Mac 安装 Node Error: Could not symlink include/node/common.gypi
Mac 安装 Node Error: Could not symlink include/node/common.gypi
9 3