node 之 express 框架(初级)

news2024/9/25 11:22:40

一、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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1019326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我学编程全靠B站了,真香(第一期)

你好,我是Martin。 我是就读于B站大学2020届的Martin同学,反正我学习计算机真的是全靠 B 站了。 我是个刷视频狂魔,B站收藏夹里也收藏了很多编程类视频, 比如C/C、Go语言、操作系统、数据结构和算法、计算机网络、数据库、Pyth…

深入了解Python运算符和表达式:从基础到高级

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 Python运算符和表达式是…

JavaScript 学习笔记(基础)

其是一门跨平台、面向对象的脚本语言(直译型语言),用来控制网页行为,能使网页产生交互效果!下面以 JS 代称 JavaScript 引入HTML结构文件有两类方式: 内部脚本 行联式嵌入式外部脚本* 基本语法&#xff1…

npm发布vue3自定义组件库--方法二

npm发布vue3自定义组件库 创建项目 vue create test-ui自定义组件 创建自定义组件,组件名称根据你的需求来,最好一个组件一个文件夹,下图是我的示例。 src/components 组件和你写页面一样,所谓组件就是方便实用,不…

NotePad++ 在行前/行后添加特殊字符内容方法

我们在处理数据时,会遇到需要在每行数据前面、后面、开头、结尾添加各种不一样的字符 如果数据不多,我们可以自己手动的去添加,但如果达到了成百上千行,此时再机械的手动添加是不现实的 这里教给大家如何快速的在数据每行的前后…

华为云云耀云服务器L实例评测|cento7.9在线使用cloudShell下载rpm解压包安装mysql并开启远程访问

文章目录 ⭐前言⭐使用华为cloudShell连接远程服务器💖 进入华为云耀服务器控制台💖 选择cloudShell ⭐安装mysql压缩包💖 wget下载💖 tar解压💖 安装步骤💖 初始化数据库💖 修改密码&#x1f4…

JavaCTF记录

Springmvcdemo 在没有提升权限之前,整个环境只有Cookie是可控的,并且提升权限也是要通过cookie来,先看看它对cookie做了什么,看一下过滤器 public void doFilter(ServletRequest request, ServletResponse response, FilterChai…

Python实现猎人猎物优化算法(HPO)优化随机森林回归模型(RandomForestRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

Pyhton压缩JS代码

文章目录 1.安装依赖2.目录结构3.代码4.执行结果 1.安装依赖 pip install jsmin2.目录结构 3.代码 import jsmindef run(src_path, tgt_path):with open(src_path, "r", encodingutf-8) as input_file:with open(tgt_path, "w", encodingutf-8) as outpu…

外贸型CRM软件系统的作用

外贸企业在国际市场上面临着大量的竞争和风险,需要不断创新发展,提高自身的竞争力,但又受制于客户管理、业务效率、数据利用和风险控制等方面的不足。为了解决外贸企业面临的问题和挑战,外贸CRM系统应运而生。那么,什么…

面试(架构,网络)

java八股 treemap和linkdedhashmap区别,实现原理 https://blog.csdn.net/shidebin/article/details/126814905 架构 https://www.cnblogs.com/crazymakercircle/p/17197091.htmlhttps://www.cnblogs.com/crazymakercircle/p/17197091.html 羊了个羊https://www.c…

【LeetCode-简单题】1047. 删除字符串中的所有相邻重复项

文章目录 题目方法一&#xff1a;利用栈做匹配方法二&#xff1a;消消乐 题目 方法一&#xff1a;利用栈做匹配 class Solution {public String removeDuplicates(String s) {Deque<Character> deque new LinkedList<>();StringBuffer str new StringBuffer();fo…

封装七牛云存储工具类

文章目录 封装七牛云存储工具类&#xff08;为啥选择七牛云&#xff1f;当然是因为它能免费使用喽&#xff01;&#xff01;&#xff01;白嫖怪哈哈哈&#xff01;&#xff01;&#xff01;&#xff09;图片存储方案Java SDK操作七牛云封装工具类 封装七牛云存储工具类&#xf…

如何在 Excel 中求平方根

需要在 Excel 中求一个数字的平方根吗&#xff1f;使用几个内置的 Excel 函数和公式可以轻松计算平方根。在本分步指南中&#xff0c;您将学习在 Excel 中计算平方根的 5 种不同方法&#xff0c;包括使用 SQRT 函数、POWER 函数、指数公式、VBA 代码和 Power Query。跟随教程&a…

我学编程全靠B站了,真香-国外篇(第三期)

你好&#xff0c;我是Martin。 今天来点猛料&#xff0c;给大家推荐点我的压箱收藏-国外知名大学的公开课。 我推荐的不多&#xff0c;本着少就是多的原则&#xff0c;只给大家推荐我看过最好的五门视频&#xff0c;主要是来自两所国外高校&#xff1a;MIT美国麻省理工、CMU卡…

Pytorch实现MNIST字符识别

1.下载mnist.pkl.gz 网址&#xff1a;http://www.iro.umontreal.ca/~lisa/deep/data/mnist/mnist.pkl.gz 数据集文件夹路径是data2/mnist/mnist.pkl.gz 2.读取数据 from pathlib import Pathimport matplotlib.pyplot as pltDATA_PATHPath("./data2") PATHDATA_P…

无涯教程-JavaScript - LOG函数

描述 LOG函数将数字的对数返回您指定的基数。 语法 LOG (number, [base])争论 Argument描述Required/OptionalNumberThe positive real number for which you want the logarithm.RequiredBaseThe base of the logarithm. If base is omitted, it is assumed to be 10.Opti…

Linux底层基础知识

一.汇编&#xff0c;C语言&#xff0c;C&#xff0c;JAVA之间的关系 汇编&#xff0c;C语言&#xff0c;C可以通过不同的编译器&#xff0c;编译成机器码。而java只能由Java虚拟机识别。Java虚拟机可以看成一个操作系统&#xff0c;Java虚拟机是由汇编&#xff0c;C&#xff0c…

KVM嵌套虚拟化实现

KVM嵌套虚拟化实现 理论 Libvirt主要支持三种 CPU mode host-passthrough: libvirt 令 KVM 把宿主机的 CPU 指令集全部透传给虚拟机。因此虚拟机能够最大限度的使用宿主机 CPU 指令集&#xff0c;故性能是最好的。但是在热迁移时&#xff0c;它要求目的节点的 CPU 和源节点的…

探索物理学的奥秘:解锁自然世界的钥匙

解锁自然世界的钥匙 引言第一部分&#xff1a;物理学的基本概念第二部分&#xff1a;物理学的重要里程碑第三部分&#xff1a;物理学对日常生活的影响第四部分&#xff1a;物理学的未来前景结语 引言 物理学是一门古老而又令人着迷的科学领域&#xff0c;它的研究对象是整个宇…