失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Node.JS--WEB开发框架express

Node.JS--WEB开发框架express

时间:2024-04-18 01:10:40

相关推荐

Node.JS--WEB开发框架express

express

基于NodeJS平台,快速、开放、极简的web开发框架

req:request请求对象

res:response响应对象

const express = require('express')let app = express()app.listen(3000,()=>{console.log('Server is running')})//res 响应的对象app.get('/login',function(req,res){console.log(req)res.send('<h2>这是登录的页面</h2>'); // 如果res.send(数字);则数字代表http响应状态码});app.get('/index',function(req,res){res.sendFile(__dirname+'/index.html'); // res.sendFile(文件路径);});app.get('/baidu',function(req,res){res.redirect('');});app.get('/',function(req,res){res.redirect('/index'); // res.redirect(重定向路径);});

获取参数

const express = require('express');let app = express();app.listen(3000);// url = http://localhost:3000/login?a=1&b=2app.get('/login',function(req,res){//req请求的对象//console.log(req.method,req.url);//获取查询字符串的数据并解析为对象console.log(req.query); //{a:'1',b:'2'}res.send('用户名:'+req.query.uname+'密码:'+req.query.upwd);});// url = http://localhost:3000/package/aa/2app.get('/package/:pname/:pid',function(req,res){//获取路由传参的数据console.log(req.params);//对象 {pname:'aa',pid:'2'}res.send('包名称:'+req.params.pname+'版本号:'+req.params.pid);});

获取post请求数据

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><h2>登录页面</h2><form action="/login" method="post">帐号: <input type="text" name="uname"><br>密码: <input type="password" name="upwd"><br><input type="submit"></form></body></html>

const express=require('express');//引入查询字符串模块const querystring=require('querystring');let app=express();app.listen(8088);//获取登录网页路由: get /loginapp.get('/login',function(req,res){//响应文件res.sendFile(__dirname+'/login.html');});//根据表单的请求,来创建对应的路由//创建路由,post /mylogin,响应'登录成功'app.post('/login',function(req,res){//获取数据,监听是否有数据传递,通过回调函数获取,此回调函数是异步!req.on('data',function(chunk){//chunk 就是分段传递的数据 , 格式为buffer , 转为字符串后为查询字符串console.log(chunk.toString());//查询字符串解析为对象let obj=querystring.parse(chunk.toString());console.log(obj);});res.send('欢迎登陆');console.log('send');});

中间件

分为应用级中间件、路由级中间件、内置中间件、第三方中间件、错误处理中间件

应用级中间件

也称为自定义中间件

const express = require('express');let router = express.Router();//中间件:拦截对URL为/admin的请求router.use('/index',function(req,res,next){//获取查询字符串传递的数据console.log(req.query);//如果用户名不是root,if(req.query.uname!=='root'){res.send('请使用管理员登录');}else{//执行下一步,可能是下一个中间件,也可能是路由next();} });router.get('/index',function(req,res){res.send('ok');});module.exports=router;

内置中间件

托管静态资源:把所有的静态资源托管到指定的目录,如果浏览器请求文件,自动到该目录下查找,不需要创建路由响应文件

const express=require('express');let app=express();app.listen(8080);//托管静态资源(html,css,js,img...):一旦浏览器请求文件,自动到public目录下寻找;不需要创建路由app.use( express.static('public') );app.use( express.static('files') );

路由器

路由级中间件

创建路由器

//index.jsconst express = require('express');let router = express.Router();router.get('/index',function(req,res){res.send('ok');});module.exports=router;

//user.js//引入expressconst express=require('express');//创建路由器对象let router=express.Router();//往路由器中添加路由//get 127.0.0.1:8080/user/regrouter.get('/reg',function(req,res){res.send('这是注册');});//get 127.0.0.1:8080/user/listrouter.get('/list',function(req,res){res.send('这是用户列表');});//导出路由器对象//exports/module.exportsmodule.exports=router;

在服务器下引入并使用路由器

//app.jsconst express=require('express');//引入用户路由器自定义模块const indexRouter=require('./index.js');const userRouter=require('./user.js');let app=express();app.listen(8080);//服务器使用路由器app.use('/',indexRouter);//给路由中的URL添加前缀 /user/regapp.use('/user',userRouter);

访问形式

http://127.0.0.1:8080/路由器访问名/请求名

解析post参数

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><h2>登录页面</h2><form action="/mylogin" method="post">帐号: <input type="text" name="uname"><br>密码: <input type="password" name="upwd"><br><input type="submit"></form></body></html>

const express=require('express');let app=express();app.listen(8088);//获取登录网页路由: get /loginapp.get('/login',function(req,res){//响应文件res.sendFile(__dirname+'/login.html');});//解析post请求参数app.use(express.urlencoded({extended:false //不使用qs模块}));app.use(express.json())//根据表单的请求创建对应路由//post /myloginapp.post('/mylogin',function(req,res){console.log(req.body);res.send('登录成功');});

cors跨域

处理跨域

安装

npm install cors

var express = require('express');const cors = require("cors");var app = express();app.use(cors({//[允许跨域访问服务器地址,多个地址用逗号隔开]origin: ['http://localhost:8081', 'http://127.0.0.1:8081', 'http://127.0.0.1:5500'],credentials: true}))var app = express();// 所有服务器都可以跨域访问,方便调试// app.use(cors());

express脚手架

安装

npm install -g express-generator

创建项目

express -e 项目名

安装所有依赖包

cd 项目名npm install

启动项目

npm

第三方模块

mysql模块

基于NodeJS平台,快速、开放、极简的操作mysql数据库的模块

安装

npm install mysql

引入

const mysql=require('mysql');

操作

// mysql.createConnection() 创建普通连接对象var connection=mysql.createConnection({host:'127.0.0.1', //数据地址port:'3306', //数据库端口user:'root', //用户名password:'', //密码database:'DBNAME' //进入的数据库});connection.connect(); // 执行连接// connection.query() 执行SQL命令,会建立连接var sqlstr = 要执行的sql语句connection.query( sqlstr ,function( err,result ){if(err) throw err; //err 报错console.log(result); //result 返回值});

?占位符

在sql语句中数据部分通过?代替,在执行时以参数的形式传入,可以防止sql注入

connection.query( ' ...?,?,? ' , [ 1,2,3 ] , function( err,result ){if(err) throw err; //err 报错console.log(result); //result 返回值});

set

var emp = { ename : 'tom', sex : 1, salary : 1000 }// ? 传入对象会被解析成 属性名=属性值,// insert into emp set ename = 'tom', sex = 1, salary = 1000connection.query('insert into emp set ?',[emp],(err,result)=>{if(err) throw err; console.log(result);});

连接池

// mysql.createPool() 创建连接池对象var pool=mysql.createPool({host:'127.0.0.1',port:'3306',user:'root',password:'' ,database:'DBNAME',connectionLimit:20 //设置连接池大小,默认15});pool.query(); // 执行SQL命令,会建立连接

如果觉得《Node.JS--WEB开发框架express》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。