node.js 之Express 框架基础

官网

node.js 比较流行的框架是Express ,和Python的Flask类似。

bash 复制代码
## 中文网
https://www.expressjs.com.cn/


## 官网
https://expressjs.com/

## 查询mysql返回json示例
https://blog.csdn.net/knight_zhou/article/details/139013695

环境

bash 复制代码
mkdir myapp
npm init

##
npm install express --save

基础

路由

javascript 复制代码
// GET method route
app.get('/', function (req, res) {
  res.send('GET request to the homepage')
})

// POST method route
app.post('/', function (req, res) {
  res.send('POST request to the homepage')
})

静态文件

javascript 复制代码
/*
 powershell启动: $env:DEBUG='myapp:*'; npm start
 或者这样启动: node.exe .\bin\www
*/

// curl 127.0.0.1:3000/static
app.use('/static',express.static(path.join(__dirname, 'public')));    // 静态文件目录

模板渲染

bash 复制代码
# 官网
https://expressjs.com/en/guide/using-template-engines.html

支持如下三种模板引擎:

读取数据库配置文件

bash 复制代码
# 依赖
myapp@1.0.0 D:\node.js-res\devops\myapp
├── config@3.3.11
├── express@4.19.2
├── mysql@2.18.1
├── nconf@0.12.1
└── redis@4.6.14

config.js

javascript 复制代码
{
    "mysql_info": {
      "host": "localhost",
      "user": "root",
      "password": "root",
      "database":"db_devops"
    },
    "redis_info":{
      "url":"redis://10.10.10.14:6379",
      "password":"123456"
    }
}

app.js

javascript 复制代码
const express = require('express');
const mysql = require('mysql');
const redis = require('redis');
const fs = require('fs');
const path = require('path');

// 读取配置文件
const configPath = path.join(__dirname, 'config.json');
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));

 
// 配置MySQL连接
const connection = mysql.createConnection({
  host     : config.mysql_info.host,
  user     : config.mysql_info.user,
  password : config.mysql_info.password,
  database: config.mysql_info.database
});
 
// 连接MySQL
connection.connect();

// 创建一个客户端连接到Redis服务器
const client = redis.createClient({
  url: config.redis_info.url, // 替换为你的Redis服务器地址和端口
  // username: "knight",
  password: config.redis_info.password
});
 
// 监听错误
client.on('error', (err) => {
  console.log('Redis Client Error', err);
});
 
// 连接到Redis
client.connect();
 
// 设置键值对

const app = express();
const port = 1234;
 
// 查询数据的API
app.get('/api/data', (req, res) => {
  const sql = 'SELECT * FROM student';
  connection.query(sql, (error, results, fields) => {
    if (error) throw error;
    res.json(results); // 将查询结果以JSON格式返回
  });
});

// redis
app.get('/api/redis', (req, res) => {
  client.set('name', 'vego', redis.print);
  console.log('test insert redis');
  res.send("ok");
});
 
// 启动服务器
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});
相关推荐
liangshanbo12157 天前
Express SSE 流式输出实战:从入门 Demo 到 AI 生产级架构
人工智能·架构·express
GISHUB7 天前
Express + TypeScript + ESM 后端框架示例(@yao-pkg/pkg 打包)
typescript·express
万亿少女的梦16810 天前
基于微信小程序、Express与MongoDB的校园失物招领系统设计
mongodb·微信小程序·node.js·express·系统设计
米码收割机13 天前
SA508-3钢回火焊道焊接温度场数值模拟(模拟图+论文)
spring boot·express·宠物
Pu_Nine_914 天前
Vue3+TS+Express 转 Nuxt4 全栈开发笔记(Drizzle ORM + MySQL)
前端·vue·express·nuxt.js·全栈框架
张人玉18 天前
基于 Vue 3 + ECharts + Express + SQLite 构—— LDA 模型的新闻舆论主题识别与情感分析系统
vue.js·echarts·express
张人玉20 天前
基于 Vue 3 + ECharts + Express + SQLite 的可视化大屏与业务管理系统——YOLOv8 高精度车辆行人检测与计数系统
数据库·vue.js·yolo·sqlite·echarts·express
张人玉21 天前
基于 Vue 3 + ECharts + Express + SQLite 构建的鞋类零售数据分析与毛利预测平台——基于深度学习的鞋类销售数据分析系统
vue.js·sqlite·echarts·express
张人玉25 天前
基于 Vue 3 + ECharts + Express + SQLite 的世界数据可视化大屏系统——世界态势数据可视化大屏
vue.js·echarts·express
张人玉1 个月前
基于 Vue3 + ECharts + Express + SQLite 的智慧交通数据可视化系统——郑州交通数据可视化大屏
sqlite·echarts·express