node 之 express 框架(初级)

2023-09-14 16:37:09

一、express 热更新
1、安装扩展

npm install node-dev -D

2、在根目录下的 package.json 文件中进行配置
在这里插入图片描述
3、之后的启动执行下面的命令即可

npm run dev

二、mvc中的 模板引擎
1、ejs模板引擎的安装

npm install ejs -s

2、在根目录下的app.js文件中配置

app.set('view engine', 'ejs');

在这里插入图片描述
二 express 安装 mysql
1、在终端键入以下命令

npm install mysql

2、在根目中新建db文件夹,再在该文件夹中新建一个index.js文件

const mysql = require('mysql')
var config = {
    host: '127.0.0.1',
    port: '3306',
    user: 'root',
    password: 'root',
    database: '' //数据库名
}

var pool = mysql.createPool(config)

pool.getConnection((err, connection) => {
    if (err) {
        console.log(err.message);
    } else {
        console.log("连接成功");
    }
})
module.exports = pool;

2、在根目录中新建一个modules, 再在该文件中新建一个goods.js 文件(这儿只是做一个例子,跟据实际情况命名)

var db = require('../db/index')
function getData() {
    return new Promise((resolve, reject) => {
        db.query(sql, (err, res) => {
            if (err) {
                reject(err)
            } else {
                resolve(res)
            }
        })
    })
}
exports.getData = getData

3、在控制器中

var goods = require('../../modules/goods') //引入刚刚写的model文件

var UserController = {
	//因为是异步调用,所以如果需要异步变同步,则需要在这儿用async await来写
    getUserInfo: async(req, res) => { 
        let result = await goods.getData()
        console.log(result) //得到的结果就是查询出来的数据集合
        res.status(200) //这儿可以自定义状态码,比如 200 , 404 , 500 默认是200
        res.end('api getUserInfo')
    }
}

module.exports = UserController;

三、路由(路由,一般我们得遵守 RESTful 原理
在路路中,我们可以定义各式各样的路由,如下所示。

//正常情况下,为了区分前台、后台、api,我们可以在入口文件app.js中如下书写
//当前文件是项目的入口文件app.js
var admin = require('./routes/admin/index') //定义后台路由的入口文件
app.use('/admin', admin) //引入后台路由的入口文件

var api = require('./routes/api/index') //定义api路由的入口文件
app.use('/api', api) //引入api路由的入口文件

在这里插入图片描述

//以api路由入口文件为例
//当前文件 /routes/api/index.js
var express = require('express');
var app = express();

var login = require('./login') //定义登录模块的路由文件
var user = require('./user') //定义用户模块的路由文件
app.use('/login', login) //引用
app.use('/user', user)//引用

module.exports = app;
module.exports = router;

在这里插入图片描述

//当前文件routes/api/user.js
var express = require('express');
var router = express.Router();


//put请求(常用于更新操作)
//需要注意的是,在用 Postman做put测试的时候
//地址是 http://127.0.0.1:3000/api/user/update/555
//后面的555即是参数id,也就是说,在地址栏不需要写 "id" 这个英文单语
router.put('/update/:id', (req, res) => {
    console.log(req.body) //打印出参数
    res.status(200)
    res.send({ code: 200, msg: 'success' })
    res.end()
})

//post请求(常用于新增操作)
router.post('/add' , (req , res)=>{
    console.log(req.body)
    res.status(500)
    res.send({ code: 200, msg: 'success' })
    res.end()
})

//地址跟上面的put是一样的意思
router.get('/:id', (req, res) => {
    console.log(req.params)
    res.send()
})

//地址跟上面的put是一样的意思
router.delete('/delete/:id', (req, res) => {
    console.log(req.params)
    res.end()
})
module.exports = router;
更多推荐

生产消费者模型的介绍以及其的模拟实现

目录生产者消费者模型的概念生产者消费者模型的特点基于阻塞队列BlockingQueue的生产者消费者模型对基于阻塞队列BlockingQueue的生产者消费者模型的模拟实现ConProd.c文件的整体代码BlockQueue.h文件的整体代码对【基于阻塞队列BlockingQueue的生产者消费者模型的模拟实现】的测试

openGauss学习笔记-70 openGauss 数据库管理-创建和管理普通表-查看表数据

文章目录openGauss学习笔记-70openGauss数据库管理-创建和管理普通表-查看表数据70.1查询数据库所有表的信息70.2查询表的属性70.3查询表的数据量70.4查询表的所有数据70.5查询字段的数据70.6过滤字段的重复数据70.7查询字段为某某的所有数据70.8按照字段进行排序openGauss学习

深入学习 Redis Sentinel - 基于 DockerCompose 编排哨兵分布式架构,理解工作原理

目录一、哨兵模式1.1、为何引入哨兵模式1.2、RedisSentinel分布式架构1.2.1、概述1.2.2、工作原理(redis哨兵的核心功能)1.监控:2.自动故障转移:3.通知1.2.3、问题:哨兵结点只有一个可以么?1.3、使用Docker和DockerCompose模拟部署哨兵模式1.3.1、前言1.3.2

搭建ELK+Filebead+zookeeper+kafka实验

部署Zookeeper集群准备3台服务器做Zookeeper集群192.168.10.17192.168.10.21192.168.10.221.安装前准备关闭防火墙systemctlstopfirewalldsystemctldisablefirewalldsetenforce0安装JDKyuminstall-yja

Vulnhub实战-DC9

前言本次的实验靶场是Vulnhub上面的DC-9,其中的渗透测试过程比较多,最终的目的是要找到其中的flag。一、信息收集对目标网络进行扫描arp-scan-l对目标进行端口扫描nmap-sC-sV-oAdc-9192.168.1.131扫描出目标开放了22和80两个端口,访问目标的80端口。对目标进行目录扫描与分析。

第三十章 Classes - 方法生成器

[toc]第三十章Classes-方法生成器方法生成器方法生成器是类编译器在类编译期间调用的程序。它的输出是该方法的实际运行时实现。方法生成器提供了一种继承方法的方法,可以生成根据继承类或属性的需要定制的高性能、专用代码。在IRIS库中,方法生成器广泛用于数据类型和存储类。ClassQueries类可以包含类查询。类查

【自学开发之旅】Flask-会话保持-API授权-注册登录

http-无状态-无法记录是否已经登陆过#会话保持–sessioncookiesession–保存一些在服务端cookie–保存一些数据在客户端session在单独服务器D上保存,前面数个服务器A,B,C上去取就好了,业务解耦。—》》现在都是基于token的验证。以上是基于BS架构API授权由服务端完全把控三张表,ap

【Linux基础】第29讲 Linux用户和用户组权限控制命令(一)

1useradd添加新用户(注意:当前用户必须有添加用户的权限)1)基本语法useradd用户名(功能描述:添加新用户)2)案例root@sue-virtual-machine:/usr/local#useraddhadoop2passwd设置用户密码1)基本语法passwd用户名(功能描述:设置用户密码)2)案例ro

JavaScript与jQuery(下篇)

JavaScript与jQuery笔记(下篇)一、获取jquery二、jquery选择器三、jquery事件四、jquery操作Dom元素————————创作不易,如觉不错,随手点赞,关注,收藏(* ̄︶ ̄),谢谢~~jQueryjquery库,里面存在大量的javascript函数一、获取jqueryhttps://w

【1++的C++进阶】之特殊类设计

👍作者主页:进击的1++🤩专栏链接:【1++的C++进阶】文章目录一,设计一个类使其不能被拷贝二,设计一个类只能在堆上创建对象三,设计一个类只能在栈上创建对象四,设计一个类不能够被继承五,单例模式一,设计一个类使其不能被拷贝我们有三种方法能够设计此种类拷贝构造函数私有化拷贝构造函数只声明不定义拷贝构造函数后加del

Django05_反向解析

Django05_反向解析5.1反向解析概述随着功能的不断扩展,路由层的url发生变化,就需要去更改对应的视图层和模板层的url,非常麻烦,不便维护。这个时候我们可以通过反向解析,将url解析成对应的试图函数通过path或re_path中的name属性进行解析反向解析一般用在模板中的超链接及视图中的重定向在之前内容中,

热文推荐