当前位置: 首页 > news >正文

node项目中express的使用

01 expres项目的基础配置

第一步 需要先初始化项目 npm init -y第二步 安装express:  npm i express;第三步 项目中创建app.js文件第四步 进行配置代码如下:var express = require('express')var app = express()配置路由app.get('/',(req,res)=>{res.send('hello nodejs')
})app.get('/article/:id',(req,res)=>{var id = req.params['id'] // 获取动态路由params参数console.log('动态路由' + id)
})app.get('/product'.(req,res)=>{ let query = req.queryconsole.log('获取query参数'+query)  http://www.bai.com:3000/producr?age=12&cid=10
})启动项目 配置端口号app.listen(3000,'127.0.0.1')

02 express使用ejs

第一步 安装ejs: npm i ejs -save;第二步 express中使用ejs:var express = require('express')var app = express()// 配置模板引擎
app.set('view engine','ejs')app.get('/',(req,res)=>{let title = ‘你好ejs’let userInfo = {name:'zs',age:12}let article = ‘<h3>我是h3标签<h3>’res.render('index',{ // 默认加载的模板引擎文件夹是views向views/index.html文件中传递title的数据title:title,info:userInfo,article:article,list:[1,2,3,4,5]})})app.listen(3000)

03 views/index.ejs文件中使用ejs,  ejs语法的使用

<html><header><body><h1>我是HTML页面</h1><p><%=title%></p>  这里是使用ejs定义的title的数据<p><%=info.name%></p> // 解析对象中的某个属性<p><%=info.age%></p><p><%=article%></p>   // <h3>我是h3标签<h3>   这里无法渲染html的标签<p><%-article%></p>  // 想要解析html标签 需要将= 换成 -<%if(2<5){%>  // 这里使用判断语句 if<p>这里的条件是成立的</p><%}%>   ---end<%if(2<5){%>  // 这里使用判断语句if else<p>这里的条件是成立的</p><%}else{%><p>这里的条件是不成立的</p><%}%><%for(let i = 0; i<list.length;i++){%>  // 这里使用的是循环语句<li><%=list[i]%></li><%}%>
</body></header></html>

04 index.ejs的页面加载footer.ejs别的ejs的页面

01 footer.ejs的代码:<footer><h1>我是公共的底部的模板</h1></footer>02 index.ejs页面的使用:<body><h1>我是ejs页面</h1><%-include('footer.ejs')%>  // 这里使用footer.ejs的模板</body>

05 ejs将文件的后缀由ejs修改为html, 以及通过express.static托管静态文件

// 1 关于将后缀名ejs修改为html的操作const express = require('express')const ejs = require('ejs')const app = express()// 配置模板引擎app.engine('html',ejs.__express)app.set('view engine','html')app.get('/',(req,res)=>{res.render('index',{ // 加载的是views/index.html页面 并向index.html页面中传递数据title:'我是一个标题',data:[1,2,3,4]
})})// 2 关于能够访问static/css/base.css的文件配置static/css/base.css样式的代码:h1:{color:'red'},通过http://localhost:3000/css/base.css访问const express = require('express')const ejs = require('ejs')const app = express()app.engine('html',ejs.__express)app.set('view engine','html')// 配置静态的web目录app.use(express.static('static')) // 这里就可以直接访问css 以及 img相关的静态文件了,这里访问css的样式数据是不需要在http://localhost:3000/css/base.css中加static的目录的。// 如果想要通过http://localhost:3000/static/css/base.css访问的需要加前缀staticapp.use('/static',express.static('static'))app.get('/',(req,res)=>{res.render('index',{ // 加载的是views/index.html页面 并向index.html页面中传递数据title:'我是一个标题',data:[1,2,3,4]
})})// 3 这时候就可以在index.html页面中引入css的样式了<head><link rel="stylesheet" href='/css/base.css'></head>

06 关于处理post请求的参数的第三方中间件body-parser

第一步 进行安装 npm i body-parser --save第二步 导入 var bodyParser = require('body-parser')第三步 设置中间件 处理form表单的数据app.use(bodyParser.urlencoded({extended:false}))app.use(bodyParser.json())

07 cookie的使用

第一步 进行安装 npm install cookie-parse --save第二步 导入  var cookieParse = require('cookie-parse')第三步 设置中间件 app.use(cookieParse())第四步 设置cookie:app.get('/article',(req,res)=>{res.cookie('username','zhangsan',{maxAge:1000*60*60}) 设置username和过期事件})第五步 进行cookie的获取app.get('/',(req,res)=>{let username = req.cookies.usename // 读取cookieres.send(username)})第六步 设置一个域名下可以共享cookieapp.get('/article',(req,res)=>{// 不同域名共享cookie aaa.itying.com   bbb.itying.comres.cookie('username','zhangsan',{maxAge:1000*60*60,domain:'.itying.com'})})第七步 可以设置加密的cookie的app.get('/article',(req,res)=>{// 不同域名共享cookie aaa.itying.com   bbb.itying.comres.cookie('username','zhangsan',{maxAge:1000*60*60,signed:true})})第八步 获取加密的cookieapp.get('/',(req,res)=>{let username = req.signedCookies.usename // 读取cookieres.send(username)})

08 session的使用

第一步 进行session的安装 npm install express-session --save第二步 引入express-sessionconst session = require('express-session')第三步 设置中间件app.use(session({secret:'keyboard cat',  服务器生成的session的签名resave:true, 强制保存session 即使session没有变化saveUninitialized:true,强制将未初始化的session存储cookie:{maxAge : 1000*60,secure:false    true表示只有https协议才能访问},rolling:true 在每次请求设置cookie 这将重置cookie 过期时间(默认:false)}))第四步 使用res.session.username = '张三'第五步 获取req.session.username 

09 express的路由模板

第一步 新建一个router/login.js的文件var express = require('express')var router = express.router()router.get('/',function(req,res)=>{res.send('login')})module.exports = router 第二步 在app.js文件中导入并注册const login = require('./router/login')app.use('/',login)

10 模块化管理路由组件:

第一步创建 router/admin/user.js文件,这里是模块的路由需要在router/index.js文件中导入的const express = require('express')var router = express.Router()router.get('/',(req,res)=>{res.send('user的首页')})module.exports  =  router第二步创建 router/index.js文件 const express = require('express')var router = express.Router()const admin = require('./admin/user')router.use('/admin',admin)module.exports = router 第三步 app.js导入 const router = require('./router/index.js')app.use('/',router)

相关文章:

  • pytest和unittest 如何选择?
  • 中文分词库盘点 Python windows
  • openssl AF_ALG引擎使用
  • 05. 【Android教程】Android 程序签名打包
  • C++类和对象、面向对象编程 (OOP)
  • 主流公链 - BSC
  • 【Java】LinkedList vs. ArrayList:Java中的数据结构选择
  • 智慧物联-能源分析平台
  • 【Linux】详细分析/dev/loop的基本知识 | 空间满了的解决方法
  • OC 技术 苹果内购
  • (二)Eureka服务搭建,服务注册,服务发现
  • 教程1_图像视频入门
  • 众创空间、孵化器、加速器!2024年度陕西省科技企业孵化器认定类型条件、奖补
  • 滴滴出行高级Node.js开发工程师笔试题2024
  • vivo X Fold3系列旗舰折叠新品正式发布
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • C学习-枚举(九)
  • ECMAScript6(0):ES6简明参考手册
  • Hibernate最全面试题
  • JavaScript服务器推送技术之 WebSocket
  • JSONP原理
  • leetcode-27. Remove Element
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • nodejs:开发并发布一个nodejs包
  • orm2 中文文档 3.1 模型属性
  • SegmentFault 2015 Top Rank
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 简析gRPC client 连接管理
  • 前端_面试
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 使用Swoole加速Laravel(正式环境中)
  • Nginx实现动静分离
  • 积累各种好的链接
  • #考研#计算机文化知识1(局域网及网络互联)
  • $().each和$.each的区别
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (十三)Maven插件解析运行机制
  • ******之网络***——物理***
  • ./和../以及/和~之间的区别
  • .form文件_SSM框架文件上传篇
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net framework profiles /.net framework 配置
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET建议使用的大小写命名原则
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .NET实现之(自动更新)
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @GlobalLock注解作用与原理解析
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子