Express
目录
5. CORS响应头部- Access-Control-Allow-Origin
6. CORS响应头部 - Access-Control-Allow-Headers
7. CORS响应头部- Access-Control-Allow-Methods
九、初识Express
9.1 Express简介
1. 什么是 Express
官方给出的概念:Express 是基于Node.js平台,快速、开放、极简的Web开发框架。
通俗的理解:Express 的作用和Node.js内置的http模块类似,是专门用来创建Web服务器的。
Express的本质:就是一个npm上的第三方包,提供了快速创建Web服务器的便捷方法。
Express的中文官网:http://www.expressjs.com.cn/
2. 进一步理解Express
思考:不使用Express能否创建Web服务器?
答案:能,使用Node.js提供的原生http模块即可。
思考:既生瑜何生亮(有了http内置模块,为什么还有用Express) ?
答案:http内置模块用起来很复杂,开发效率低;Express 是基于内置的http模块进一步封装出来的, 能够极大的提高开发效率。
思考:http内置模块与Express是什么关系?
答案:类似于浏览器中Web API和jQuery的关系。后者是基于前者进一步封装出来的。
3. Express能做什么
对于前端程序员来说,最常见的两种服务器,分别是:
- Web 网站服务器:专门对外提供Web网页资源的服务器。
- API 接口服务器:专[ ]对外提供API接口的服务器。
使用Express,我们可以方便、快速的创建Web网站的服务器或API接口的服务器。
9.2 Express的基本使用
1. 安装
在项目所处的目录中,运行如下的终端命令,即可将 express 安装到项目中使用:
2. 创建基本的Web服务器
3. 监听GET请求
通过app.get()方法,可以监听客户端的GET请求,具体的语法格式如下:
4. 监听POST请求
通过app.post()方法,可以监听客户端的POST请求,具体的语法格式如下:
5. 把内容响应给客户端
通过res.send()方法,可以把处理好的内容,发送给客户端:
6. 获取URL中携带的查询参数
通过req.query对象,可以访问到客户端通过查询字符串的形式,发送到服务器的参数:
7. 获取URL中的动态参数
通过 req.params 对象,可以访问到URL中,通过 : 匹配到的动态参数:
9.3 托管静态资源
1. express.static()
express提供了一个非常好用的函数,叫做express static(),通过它,我们可以非常方便地创建一个静态资源服务器,例如,通过如下代码就可以将public目录下的图片、CSS文件、JavaScript 文件对外开放访问了:
现在,你就可以访问public目录中的所有文件了:
http://localhost:3000/images/bg.jpg
http://localhost:3000/css/ style.css
http://localhost:3000/js/login.js
注意:Express 在指定的静态目录中查找文件,并对外提供资源的访问路径。因此,存放静态文件的目录名不会出现在URL中。
2. 托管多个静态资源目录
如果要托管多个静态资源目录,请多次调用express.static() 函数:
访问静态资源文件时,express.static() 函数会根据目录的添加顺序查找所需的文件。如果第一个文件夹找到了,则不会找第二个文件夹。
3. 挂载路径前缀
如果希望在托管的静态资源访问路径之前,挂载路径前缀,则可以使用如下的方式:
现在,你就可以通过带有 /public 前缀地址来访问public目录中的文件了:
http://localhost:3000/public/images/kitten.jpg
http://localhost:3000/public/css/style.css
http://localhost:3000/public/js/app.js
9.4 nodemon
1. 为什么要使用nodemon
在编写调试Node.js项目的时候,如果修改了项目的代码,则需要频繁的手动close掉,然后再重新启动,非常繁琐。
现在,我们可以使用nodemon (https://www.npmjs.com/package/nodemon) 这个工具,它能够监听项目文件的变动,当代码被修改后,nodemon会自动帮我们重启项目,极大方便了开发和调试。
2. 安装nodemon
在终端中,运行如下命令,即可将nodemon安装为全局可用的工具:
3. 使用nodemon
当基于 Node.js 编写了一个网站应用的时候,传统的方式,是运行 node app.js 命令,来启动项目。这样做的坏处是:代码被修改之后,需要手动重启项目。
现在,我们可以将node命令替换为 nodemon 命令,使用 nodemon app.js 来启动项目。这样做的好处是:代码被修改之后,会被nodemon监听到,从而实现自动重启项目的效果。
十、Express路由
10.1 路由的概念
1. 什么是路由
广义上来讲,路由就是映射关系。
2. 现实生活中的路由
在这里,路由是按键与服务之间的映射关系
3. Express中的路由
在Express中,路由指的是客户端的请求与服务器处理函数之间的映射关系。
Express中的路由分3部分组成,分别是请求的类型、请求的URL地址、处理函数,格式如下:
4. Express中的路由的例子
5. 路由的匹配过程
每当一个请求到达服务器之后,需要先经过路由的匹配,只有匹配成功之后,才会调用对应的处理函数。
在匹配时,会按照路由的顺序进行匹配,如果请求类型和请求的URL同时匹配成功,则Express会将这次请求,转交给对应的function函数进行处理。
路由匹配的注意点:
①按照定义的先后顺序进行匹配
②请求类型和请求的URL同时匹配成功,才会调用对应的处理函数
10.2 路由的使用
1. 最简单的用法
在Express中使用路由最简单的方式,就是把路由挂载到app上,示例代码如下: