关于Express

关于Express

Express是基于Node.js平台,快速、开放、极简的web开发框架,这是一个方便开发者使用的框架,他是一个第三方模块,让开发者不用从基础做起,让他们的工作更加简单化,Express有三个显著的特点:二次封装、非侵入式、增强性。下面我们就来了解这个Express。
在我们没有学习Express框架之前,我们Web服务器接口是使用以下代码实现的(在这里我们可以使用postman进行模拟前端发送的请求):

// 引入原生模块
const http=require('http')
const fs=require('fs')
const url=require('url')
const querystring=require('querystring')

let a=http.createServer((req,res)=>{
    // 过滤掉有接口图标的  /favicon.ico
    if(req.url.indexOf('/favicon.ico')=== -1){
        // console.log(req.url)
        // 判断是动态页面还是静态页面
        if(req.url.indexOf('/api') !==-1){
            // 处理地址栏里面的数据
            // console.log(req.url)
            let urlObj=url.parse(req.url,true)
            console.log(urlObj.query)  //[Object: null prototype] { admin: '123', pass: '000' }
            // 处理非地址栏的数据
            //  非地址栏的数据只能分次拿,一次拿不了那么多,使用字符串拼接
            let addressData=''
            req.on('data',chunk=>{
                addressData+=chunk
            })
            req.on('end',()=>{
                console.log('我已经抓取成功了',querystring.parse(addressData))
            })     
        }else{
            try{
            	//这里的三目运算符是用来对输入的url进行判断的,设置一个变量接收req.url的值
                let path = req.url ==='./' ? './index.html' : req.url
                // console.log(path)
                // 读取文件
                let html = fs.readFileSync("./abc"+path)
                // console.log(html)
                res.write(html)
            }catch(error){
                let html = fs.readFileSync("./abc/error.html")
                res.write(html)
            }
        }
    }
    res.end()
})

a.listen(3000,'localhost',()=>{
    console.log('我正在监听')
})

以上的代码虽然能实现我们的效果,但是代码量也是很多的,在开发过程中,我们应该精简我们的代码,提高项目的性能,减少代码的冗余,为此,我们可以使用Express这个框架,他的书写步骤如下:

// 引入express框架
const express = require('express')
// 创建web服务器
//express()函数是express模块导出的顶级函数
const app=express()
// 资源托管  http://localhost:3000的时候就会自动找到静态资源abc目录下的index.html
// 这是Express中内置的中间件功能。它服务于静态文件,并基于服务静态
app.use(express.static('./abc'))
// 处理接口响应
// 支持各种请求的姿势,这里以get请求为例
app.get('/api/goods',(req,res)=>{
    console.log('处理了goods接口了')
    // 这里需要结束下,不然后面请求会一直在加载
    res.end()
})

// 监听端口
app.listen(3000,'localhost',()=>{
    console.log('我被监听了')
})

以上就是使用express书写的,他之所以可以写的这么简洁是因为他的内部已经封装好了我们需要的方法,方便我们使用,我们只需要在最开始的位置引入我们下载好的express,就可以直接使用它内部的方法了。这就是我们说的二次封装的这个特点。
其次,就是它的特点还有非侵入式,非侵入式不需要用户代码引入框架代码的信息,从类的编写者角度来看,察觉不到框架的存在,而且非侵入式的代码没有过多的依赖,对第三方依赖不强,可以很方便的迁移到其他地方。
最后一个,个人理解就是可以安装中间件、增加功能。
总而言之,express这个框架大大解放了开发者的双手,减少了代码的冗余,提高了项目的性能,他的内部也是封装了很多方法可供我们使用,具体可参照官网

发布了19 篇原创文章 · 获赞 2 · 访问量 546

猜你喜欢

转载自blog.csdn.net/qq_43756690/article/details/104877761
今日推荐