元素的http在某些方面表现不足以应对开发需求,所以需要使用框架来加快开发效率,框架的目的就是为了提高效率,让代码更加同意
一、介绍
TJ开发
fast unopinionated minimalist web frame for node.js
二、相关操作
1.安装
npm i express --save npm i express -S //上一步的简写
2.
let express = require('express') let app = express(); /**公开目录,可以直接通过/public/xx的方式访问public目录下的所有资源 *1.当省略第一个参数的时候,可以通过省略/public的方式来访问 访问路径是:127.0.0.1/xxx *2.当指定了必须以第一个参数开始时 访问路径:127.0.0.1/指定目录/访问的文件名 例如: app.use('/a/', express.static('./public/'))//指定访问路径以a开头访问public下面的文件 *3.如果像下面这样的(推荐这种方法) 访问路径:127.0.0.1/public/访问的文件名 */ app.use('/public', express.static('./public/')) //设置请求处理函数 app.get('/', function (req, res) { res.send('hello') }) //设置端口 app.listen(3000, function () { console.log('app is running at port 3000.') })
三、修改完代码自动重启
使用第三方命令行工具:nodemon,基于node.js的工具,需要独立安装
npm i --global nodemon nodemon app.js//使用nodemon,当文件发生变化的时候,自动重启服务器
四、基本路由
1.请求方法
2.请求路径
3.请求处理函数
例如:
get
app.get('/', function (req, res) { res.send('Got a GET request') })
post
app.post('/', function (req, res) { res.send('Got a POST request') })
五、在express中使用art-template模板引擎
1.安装
npm i --save art-template npm i --save express-art-tempalte
2.配置
/**配置使用art-template模板引擎,第一个擦拿书百世渲染以.art结尾的文件使用art-template * express-art-template依赖于art-template * Express为Ressponse提供了一个render方法,默认是不可以使用的,但是配置了模板引擎就可以使用了 * res.render('html模板名',{模板数据})//第一个参数不能写路径,默认会去项目的views目录中找模板文件(express中所有的视图开发文件都会放到views中) * */ app.engine('html', require('express-art-template'))
3.使用
在路由处理函数中通过res.render()函数使用
app.get('/', function (req, res) { res.render('index.html', { title: '首页', comments: comments }); })
get和post请求:
get:
app.get('/formsubmit', function (req, res) { console.log(req.query)//获取get请求的参数 let comment = req.query; comment.dateTime = '2020-11-08' comments.unshift(comment); res.redirect('/')//重定向到某个地址 })post:
app.post('/formsubmit', function (req, res) { /** * 1.获取post请求体数据 * 在express中没有内置获取表单POST请求体的API,需要安装使用第三方包:body-parser * 然后配置: app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()) * 2.处理 配置好以后直接使用res.body获取数据 * 3.发送响应 */ let comment = req.body; comment.dateTime = '2020-11-08' comments.unshift(comment); res.redirect('/') })