码迷,mamicode.com
首页 > 其他好文 > 详细

express框架

时间:2020-07-13 21:49:25      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:col   浏览器   核心   ror   本质   module   position   tac   cti   

express框架

express介绍

Express 介绍Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。使用 Express 可以快速地搭建一个完整功能的网站。

中间件:封装好的函数(插件)

路由表:根据不同的请求,访问不同的接口。

Express 框架核心特性

  可以设置中间件来响应 HTTP 请求。定义了路由表用于执行不同的 HTTP 请求动作。可以通过向模板传递参数来动态渲染 HTML 页面。express不对node.js本身的特性进行二次抽象 而是在基本功能上进行扩充 express完全是由路由和中间件构成的框架从本质上来说一个express应用就是为了调用各种中间件

简单的说express可以很快速的让我们使用mvc的方式创建一个web应用(前后端可以分离,也可以不分离)

Express创建服务器

全局安装 npm i express -g

进入项目后,使用npm init -y 初始化项目

本地安装 npm i express -D

// 获取到了express 模块

const express = require(express);

const { json } = require(express);

// 创建一台服务器

const app = express();

// 端口 3000

// http 默认80

// https 默认443

app.listen(3000,function(){

    console.log(启动成功了)

})

 

使用步骤:

创建一个js文件,在文件中获取到express模块,

使用const 名称 = express()来创建一台服务器。

名称.listen(端口,function(){

Console.log(启动成功)

})来监听运行的结果。

  创建和监听中间可以添加请求

发起请求的例子:

app.get(/login,function(request,response){

    // request 前端发起的请求

    // response 后端的响应

    response.send(login!)

})

关于目录的问题:

只写个 /  说明在根路径(根目录)

/login  说明在login文件

response.send() 这个方法是返回一个文本,显示在页面上

response.json()返回一个json格式

npm脚本

 在package.json文件中的scripts 里面增加一个配置

"scripts": {

    "test": "echo \"Error: no test specified\" && exit 1",

    "start":"node 文件名.js",

    "dev":"nodemon 文件名.js"

  }

我们在终端中输入npm start,可以执行node 文件名.js 从而启动项目。

终端中输入 npm run dev 可执行nodemon 文件名.js

start这个脚本命令配置可以直接 使用npm start,其他脚本命令都需要 使用npm run 命令

中间件和路由

express完全是由路由和中间件构成的框架从本质上来说一个express应用就是为了调用各种中间件

中间件本质就是一个函数,也可以叫插件,只不过express里面我们更习惯叫中间件

挂载中间件 use(中间件监听的路径,中间件函数)

名称.use(path,fn),后面设置两个参数,请求的路径如果匹配到了路径,就会执行后面的函数。

第一个参数:路径,不传参数是全部,默认*也是全部

第二个函数是回调函数,如果匹配到路径就执行后面的函数。很多时候后面都是第三方封装好的一个函数,这个函数我们称之为中间件。

回调函数中是三个参数req res next  

req就是请求,res是服务器的响应,next一旦调用,会把请求交给下一个中间件去处理,如果不调用next请求到这里就结束了,不会把请求传递给其他的中间件了,会一直停在调用next这个中间件的位置。

自定义中间件

在一个js文件中

// 自定义中间
function test(req,res,next){
    console.log(这是自定义中间件)
    console.log(req.url,请求经过了test中间件);
    // 在中间件可以可以获取的前端请求的数据req
    // 如果不调用next() 那么后面的挂载的中间件就不会执行
    next()
}
module.exports = test;

在调用express的文件中使用

// 加载模块
const test = require(./test)
// 第一个参数为路径,只有包含这个路径的请求,才会经过这个中间件
app.use("/a",test)

路由中间件

路由:前端访问不同的地址,后端要返回不同的数据,这就叫后端路由

 

获取路由中间件

var router = express.Router() //内置中间件

 处理get请求

router.get(监听请求的路径,处理回调函数)

 处理post请求

router.post(监听请求的路径,处理回调函数)

 导出时,module.export = router

get请求参数的获取

req.query  获取url中?后面的参数,并自动转为对象

post参数的获取

  post请求参数的获取需要使用中间件express.urlencoded和req.body

express.urlencoded()//解析请求体和请求头,放在接口路由前面

get请求的另一种传参:在地址后面添加 :id

例:

router.get("/test/:id", function (req, res, next) {
    //获取get请求的url中的参数  
    // /users/test/12
    //{ id: ‘12‘ }
    console.log(req.params)
    res.json({ code: 1 }); //返回json数据
});

 

 

 

  请求 /users/test/12,得到结果{ id: ‘12‘ }

 

跨域访问接口

前端在开发中经常会被不能跨域访问所折磨,这次我们做后端,几句代码就可以支持跨域!(妈妈再也不用担心跨域报错了)

app.js中给所有的请求都设置响应头

//设置跨域访问
app.all("*", function (req, res, next) {
  //设置允许跨域的域名,*代表允许任意域名跨域
  res.header("Access-Control-Allow-Origin", req.headers.origin || *);
  //允许的header类型
  res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
  // //跨域允许的请求方式
  res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
  // 可以带cookies
  res.header("Access-Control-Allow-Credentials", true);
  if (req.method == OPTIONS) {
    res.sendStatus(200);
  } else {
    next();
  }
})

静态资源托管中间件 express.static()

打开一个网站,我们可能访问的html中加载css,js,图片等文件,这些文件就叫静态资源。

我们网页中发起请求,请求接口返回的数据叫动态资源。 静态资源一般不需要做处理,直接就返回给浏览器 动态资源一般后端会处理,比如过解析前端的请求过来的url和参数,根据url和参数不同返回不同的json数据

使用express很容易就能创建一个静态资源服务器 express.static()

静态文件资源的路径

__dirname 当前文件夹的绝对路径

__filename 当前文件夹的绝对路径

所有请求过来的静态资源中间件内部都回去 public文件夹里查找,看看能不能找到这个文件,找到就返回文件,找不到,就交给剩下的路由去处理。

 http://localhost:3000/imgs/1.gif 
//就是从 public文件夹里面找  imgs/1.gif

 

 

 

 

express脚手架创建项目(脚手架:应用的骨架)

express内置了很多中间件,我们一个一个配置比较麻烦,并且做一个后端项目,我们可以需要一些别的中间件,比如说日志插件,错误处理插件等等,需要考虑的比较多,这里我们借助于工具去创建一个通用的项目模板,就能省下这个配置过程。

通过如下命令安装

npm install express-generator -g

创建项目

express -e express-文件名

-e是指定了项目中使用的模板引擎

 

创建项目

express -e express-文件名

-e是指定了项目中使用的模板引擎

express框架

标签:col   浏览器   核心   ror   本质   module   position   tac   cti   

原文地址:https://www.cnblogs.com/52580587zl/p/13295623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!