元素的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('/')
})