node 之 express 框架(初级)

一、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 默认是200res.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.mzph.cn/news/81993.shtml

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

相关文章

第21章_瑞萨MCU零基础入门系列教程之事件链接控制器ELC

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…

腾讯mini项目-【指标监控服务重构】2023-08-16

今日已办 v1 验证 StageHandler 在处理消息时是否为单例,【错误尝试】 type StageHandler struct { }func (s StageHandler) Middleware1(h message.HandlerFunc) message.HandlerFunc {return func(msg *message.Message) ([]*message.Message, error) {log.Log…

沈阳建筑大学《乡村振兴战略下传统村落文化旅游设计》 许少辉八一著作

沈阳建筑大学《乡村振兴战略下传统村落文化旅游设计》 许少辉八一著作

怎么推广自己抖店的商品?最适合0经验新手操作的办法,来看看

我是王路飞。 抖店开通后,想要把自己店铺的商品卖出去,就需要进行推广了。 但是怎么推广呢? 要么利用抖音的搜索和推荐流量,获取曝光,实现点击和转化。 不过这种玩法有个弊端,就是需要你有一定的电商经…

农民朋友有福利啦!建行江门市分行“裕农通+农资结算”平台正式上线

随着广东广圣农业发展有限公司办公室内的裕农通“智慧眼”结算机“叮”的一声到账提醒,标志着全国首个“裕农通农资结算“平台的成功上线,也标志着建行广东省江门市分行的裕农通业务又迈上了一个新的台阶。 广东广圣农业发展有限公司(以下简…

FTP这么“好用”和“便宜”,为什么企业还要替换掉?

FTP是一种历史悠久的网络协议,自1971年问世以来,它因其简易性、便捷性以及强大的跨平台兼容性而被广泛使用。在网站开发、软件更新和数据备份等多个场景中,FTP都发挥了重要作用。不过,随着互联网技术的不断发展和企业需求的多样化…

phpcms v9对联广告关闭左侧广告

修改目录“\caches\poster_js”下的文件“53.js”&#xff0c;修改函数“showADContent()” 将代码&#xff1a; str "<div idPCMSAD_"this.PosID"_"i" style"align_b":"x"px;top:"y"px;width:"this.Width&…

Linux线程

1.进程是资源管理的最小单位&#xff0c;线程是程序执行的最小单位。 2.每个进程有自己的数据段、代码段和堆栈段。线程通常叫做轻型的进程&#xff0c;它包含独立的栈和CPU寄存器状态,线程是进程的一条执行路径&#xff0c;每个线程共享其所附属进程的所有资源&#xff0c;包括…

蓝桥杯 题库 简单 每日十题 day4

01 津津上初中了。妈妈认为津津应该更加用功学习&#xff0c;所以津津除了上学之外&#xff0c;还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴&#xff0c;而且上得越久就会越不高兴。假设津津…

ChatGPT实践-构建简单的AI聊天机器人(python)

本文指导如何通过调用OpenAI的API完成一个简单的聊天机器人。 背景知识 API介绍 我们可以通过任何语言的 HTTP 请求、官方 Python 、 Node.js 库或社区维护的库与 ChatGPT的API 进行交互&#xff0c;官方API文档&#xff1a; API Reference - OpenAI API &#xff08;可自行…

【笔试强训选择题】Day43.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

PTA 甲级 1044 Shopping in Mars

题目链接 思路&#xff1a;前缀和滑动窗口 #include<bits/stdc.h> #define MAXN 100010 using namespace std; int a[MAXN];int main(){int n,m;cin>>n>>m;//n数量 m金额for(int i1;i<n;i){int t;cin>>t;a[i]a[i-1]t;//前缀和}vector<pair<in…

【QT5-解决不同分辨率屏幕-进行匹配大小-适应屏幕大小-基础样例】

【QT5-解决不同分辨率屏幕-进行匹配大小-适应屏幕大小】 1、前言2、实验环境3-1、问题说明-屏幕视频3-2、解决方式-个人总结解决思路&#xff1a;我们在软件启动的时候&#xff0c;先获取屏幕大小&#xff0c;然后根据长宽&#xff0c;按照一定比例&#xff0c;重新设置大小。并…

[ABC118D] Match Matching

题目传送门 引 题目的描述很形象&#xff0c;梦回童年&#xff0c;注意一下火柴全部都用完 解法 显然 DP , 设计状态&#xff1a; f i : 用完 i 根木棒凑出的最大数 f_i:用完i根木棒凑出的最大数 fi​:用完i根木棒凑出的最大数 状态转移&#xff1a; f i → f i c n t …

VMware17 不可恢复错误mks解决方案

用的虚拟机VMware17版本&#xff0c;然后运行带HDR的unity程序&#xff0c;结果报错 网上找了很多解决方案&#xff0c;都没用。毕竟需要在不放弃虚拟机3D加速的情况下运行。 最终皇天不负有心人&#xff0c;亲测有效的方法&#xff1a; 在虚拟机名字.vmx文件里添加以下2行&a…

vue子组件向父组件传参的方式

在Vue中&#xff0c;子组件向父组件传递参数可以通过自定义事件和props属性来实现。下面是一些关键代码示例&#xff1a; 1. 使用自定义事件&#xff1a; 在子组件中&#xff0c;通过 $emit 方法触发一个自定义事件&#xff0c;并传递参数。 <template><button cli…

URL 管理器

基本介绍 对外接口 对外提供两个接口&#xff1a;一个可以提取URL&#xff0c;一个可以增加URL&#xff0c;分别对应图上的1和2。 当要爬取某个网页时&#xff0c;则可以从1接口提取出该网页的URL进行爬取。 有时候爬取的网页内容中会包含别的网页链接&#xff0c;即包含有U…

Android 12 桌面去掉搜索框和 隐藏设置搜索框 隐藏应用页的搜索框

去掉桌面搜索框 --- a/packages/apps/Launcher3/src/com/android/launcher3/config/FeatureFlags.java +++ b/packages/apps/Launcher3/src/com/android/launcher3/config/FeatureFlags.java @@ -58,7 +58,7 @@ public final class FeatureFlags {* Enable moving the QSB on …

Qt 面试突击

1.在Qt中&#xff0c;多线程环境下&#xff0c;信号槽分别在什么样的线程中执行&#xff0c;如何控制&#xff1f; &#xff08;1&#xff09;信号槽的执行线程 如果信号和槽都在同一个线程&#xff0c;就它们就在这个线程中执行如果信号和槽不在同一个线程&#xff1a; Qt::…

网工内推 | 国企、上市公司,IA/IP认证即可,有年终、绩效

01 上海市机械设备成套&#xff08;集团&#xff09;有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、 负责公司电脑、网络设备、电器设备、办公设备等硬件的管理、维护和使用&#xff0c;做好计算机硬件及办公设备台帐&#xff1b; 2、 负责公司办公软件的…