元素的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('/')
}) 
京公网安备 11010502036488号