在此向使用 node 的 express 框架 来启动ndoe服务,然后能够连接mongoDB。
Express是一个基于Node.js平台的web应用开发框架,在Node.js基础之上扩展了web应用开发所需要的基础功能,从而使得我们开发Web应用更加方便、更加快捷。
“Express是一个自身功能极简,完全是路由和中间件构成一个web开发框架:从本质上来说,一个Express应用就是在调用各种中间件。”
由此可见,中间件在Express开发中的重要性
Express 框架核心特性:
可以设置中间件来响应 HTTP 请求。
定义了路由表用于执行不同的 HTTP 请求动作。
可以通过向模板传递参数来动态渲染 HTML 页面
首先使用 cnpm install express -S 将express安装到当前项目
基本结构
const Express = require('express') const app = new Express() const apiRoutes = Express.Router() //注意,不能使用 router 这个变量名 const axios = require('axios') //CORS 解决跨域 app.all('*', function (req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With'); res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS'); if (req.method == 'OPTIONS') { res.send(200); } else { next(); } }); //请求B站轮播图 apiRoutes.get('/BSlider', function (req, res) { var url = 'https://api.bilibili.com/x/web-show/res/loc?pf=7&id=1695' axios.get(url, { params: req.query //req.query为get请求带的参数 }).then((respond) => { res.json(respond.data) // 将数据通过res.json进行json数据格式处理后返回给前端 }).catch((err) => { console.log(err) // 异常处理 }) }) app.use('/', apiRoutes) // app.use 自定义中间件 , express 注册路由 app.listen('8081', function () { //启动 node服务 ,监听8081 端口 console.log('open in 8081') })
express响应中用到常用三种API:
- res.end()
用于快速结束没有任何数据的响应,使用res.end() (注意,如果有响应的返回数据,此方法会报错)。如果使用res.end()返回数据非常影响性能。
- res.send()
响应中要发送数据,使用res.send() ,但要注意header ‘content-type’参数。
- res.json()
发送一个json的响应。当传递对象或数组时,这个方法和res.send()方法的效果相同。不过,你可以使用这个方法来转换其他的值到json,例如null,undefined。(虽然这些都是技术上无效的JSON)。