基于Node.js平台,快速、开放、极简的Web开发框架--express

目录

1.模块的加载机制

1.1优先从缓存中加载

1.2内置模块的加载机制

1.3自定义模块的加载机制

1.4第三方模块的加载机制

1.5目录作为模块

2.Express学习

2.1Express简介

2.2Express 能做什么

2.3Express 的基本使用

2.3.1使用Express 创建基本的web服务器

2.3.2监听GET请求

2.3.3监听POST请求

2.3.4把内容响应给客户端

2.3.5获取 URL中携带的查询参数

2.4托管静态资源

2.5为什么要使用nodemon

2.5.1nodemon的安装

2.5.2nodemon的使用


1.模块的加载机制

1.1优先从缓存中加载

        模块在第一次加载后会被缓存。这也意味着多次调用require()不会导致模块的代码被执行多次。

        注意:不论是内置模块、用户自定义模块、还是第三方模块,它们都会优先从缓存中加载,从而提高模块的加载效率。

1.2内置模块的加载机制

        内置模块是由Node.js官方提供的模块,内置模块的加载优先级最高。例如,require('fs')始终返回内置的fs模块,即使在node_modules目录下有名字相同的包也叫做fs。

1.3自定义模块的加载机制

        使用require()加载自定义模块时,必须指定以./或../开头的路径标识符。在加载自定义模块时,如果没有指定./或../这样的路径标识符,则 node 会把它当作内置模块或第三方模块进行加载。同时在使用require()导入自定义模块时,如果省略了文件的扩展名,则Node.js 会按顺序分别尝试加载以下的文件:

  1. 按照确切的文件名进行加载
  2. 补全.js扩展名进行加载
  3. 补全 .json扩展名进行加载
  4. 补全.node扩展名进行加载
  5. 加载失败,终端报错

1.4第三方模块的加载机制

        如果传递给 require()的模块标识符不是一个内置模块,也没有以"./"或"../"开头,则Node.js会从当前模块的父目录开始,尝试从/node_modules文件夹中加载第三方模块。如果没有找到对应的第三方模块,则移动到再上一层父目录中,进行加载,直到文件系统的根目录。

1.5目录作为模块

        当把目录作为模块标识符,传递给require()进行加载的时候,有三种加载方式:

  1. 在被加载的目录下查找一个叫做package.json的文件,并寻找main属性,作为require()加载的入口
  2. 如果目录里没有package.json文件,或者main入口不存在或无法解析,则Node.js将会试图加载目录下的index.
  3. 如果以上两步都失败了,则 Node.,js 会在终端打印错误消息,报告模块的缺失:Eror: Cannot find module 'xxx'

2.Express学习

2.1Express简介

        官方给出的概念:Express是基于Node.js平台,快速、开放、极简的Web开发框架。

通俗的理解: Express的作用和Node.js内置的 http模块类似,是专门用来创建Web服务器的Express 的本质:就是一个npm 上的第三方包,提供了快速创建Web服务器的便捷方法。

Express的中文官网: http://www.expressjs.com.cn/

基于Node.js平台,快速、开放、极简的Web开发框架--express_第1张图片

2.2Express 能做什么

        使用Express,我们可以方便、快速的创建Web 网站的服务器API接口的服务器

  1. Web 网站服务器:专门对外提供 Web 网页资源的服务
  2. API接口服务器:专门对外提供API接口的服务器。

2.3Express 的基本使用

// 1导入express
const express = require('express')
    // 2创建web 服务器
const app = express()

// 4监听客户端的get和post请求,并像客户端响应具体的内容
app.get('/user', (req, res) => {
    // 向客户端响应一个json对象
    res.send({ name: 'sjf', age: 23, gender: '女' })
})
app.post('/user', (req, res) => {
    // 向客户端响应一个文本字符串
    res.send('请求成功')
})

// req.query对象,可以访问到客户端通过查询字符串的形式,发送到服务器的参数:
app.get('/', (req, res) => {
    console.log(req.query)
    res.send(req.query)
})

// 通过req.params对象,可以访问到URL中,通过:匹配到的动态参数:​​​​​​​
app.get('/user/:id', (req, res) => {
    console.log(req.params)
    res.send(req.params)
})


// 3调用app.listen(端口号,启动成功后的回调函数)启动服务器
app.listen(8080, () => {
    console.log('express server running at http://127.0.0.1:8080')
})

2.3.1使用Express 创建基本的web服务器

        在项目所处的目录中,运行npm i [email protected],即可将express安装到项目中使用。然后使用以上代码中的123步创建基本的web服务器。

2.3.2监听GET请求

        通过app.get()方法,可以监听客户端的GET请求,具体的语法格式如下:

基于Node.js平台,快速、开放、极简的Web开发框架--express_第2张图片

2.3.3监听POST请求

        通过app.post()方法,可以监听客户端的POST请求,具体的语法格式如下:

app.post('请求url', (req, res) => {。。。})

2.3.4把内容响应给客户端

        通过res.send()方法,可以把处理好的内容,发送给客户端。

2.3.5获取 URL中携带的查询参数

        通过req.query对象,可以访问到客户端通过查询字符串的形式,发送到服务器的参数:

基于Node.js平台,快速、开放、极简的Web开发框架--express_第3张图片

基于Node.js平台,快速、开放、极简的Web开发框架--express_第4张图片

 2.3.6获取 URL中的动态差数

        通过req.params对象,可以访问到URL中,匹配到动态参数​​​。动态参数的名字不一定是id可以是任意的,也可以有多个动态参数。

基于Node.js平台,快速、开放、极简的Web开发框架--express_第5张图片

2.4托管静态资源

         express 提供了一个非常好用的函数,叫做express.static(),通过它,我们可以非常方便地创建一个静态资源服务器,例如,通过代码app.use(express.static('./clock'))就可以将clock目录下的图片、CSS文件、JavaScript 文件对外开放访问了。

注意:Express在指定的静态目录中查找文件,并对外提供资源的访问路径。因此,存放静态文件的目录名不会出现在URL中。以之前所拆分的clock为例:

基于Node.js平台,快速、开放、极简的Web开发框架--express_第6张图片

        如果要托管多个静态资源目录,请多次调用express.static()函数。访问静态资源文件时,express.static()函数会根据目录的添加顺序查找所需的文件。

基于Node.js平台,快速、开放、极简的Web开发框架--express_第7张图片

基于Node.js平台,快速、开放、极简的Web开发框架--express_第8张图片

2.5为什么要使用nodemon

        在编写调试Nodejs项目的时候,如果修改了项目的代码,则需要频繁的手动close掉,然后再重新启动,非常繁琐。现在,我们可以使用nodemon (https:/www.npmjs.com/package/nodemon)这个工具,它能够监听项目文件的变动,当代码被修改后,nodemon 会自动帮我们重启项目,极大方便了开发和调试。

2.5.1nodemon的安装

         在终端中,运行命令npm i -g nodemon,即可将nodemon安装为全局可用的工具:

2.5.2nodemon的使用

        当基于Node.js编写了一个网站应用的时候,传统的方式,是运行node app.js 命令,来启动项目。这样做的坏处是:代码被修改之后,需要手动重启项目。

        现在,我们可以将node 命令替换为nodemon命令,使用nodemon app.js 来启动项目。这样做的好处是:被修改之后,会被nodemon监听到,从而实现自动重启项目的效果。

你可能感兴趣的:(04,node.js学习,javascript,visual,studio,code)