Node.js中Express框架怎么用
本篇内容主要讲解“Node.js中Express框架怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js中Express框架怎么用”吧!
很多语言都有一些框架,这些框架可以帮助我们更加快捷地开发以及维护项目,像 JS 就有 Vue、React、Angular 等流行框架;而 Node.js 也不例外,它也有一些框架可以帮助我们开发 Node.js 项目。
目前比较流行的 Node.js 框架有 Express
、Koa
和 Egg.js
,无论是哪个 Node.js 框架,都是基于中间件来实现的,而中间件的执行方式就需要依据洋葱模型。
洋葱模型
抽象一点解释,就是从洋葱中心点穿过去,就必须先一层层向内穿入洋葱表皮进入中心点,然后再从中心点一层层向外穿出表皮,这里有个特点:进入时穿入了多少层表皮,出去时就必须穿出多少层表皮。先穿入表皮,后穿出表皮,这种结构是符合栈结构先进后出的原则的。
在 Node.js 框架中,洋葱的表皮我们可以定义为中间件:
从外向内进入中心点的过程是一个关键词
next()
;而从内向外则是每个中间件执行完毕后,进入下一层中间件,一直到最后一层。
下面来简单了解一些 Express 框架吧!
Express
Express
是 Node.js 中 HTTP 服务的一个框架,而要了解一个框架,最好的方法是
去了解它的关键功能
推导出它要解决的问题是什么
那要了解它的关键功能,我们可以去 Express 的网站 查看它的 Features
,这些核心功能都是为了让我们更加方便、简洁地写出 HTTP 服务,从而大大减轻我们的开发负担,让我们快速上手开发。
一些 Features
:
路由:将对应路由分开作为模块处理
request
/response
属性的简化,让我们不需要经过转换,然后直接使用对应的属性。request
:pathname
、query
等response
:send()
、json()
、jsonp()
等中间件(
next()
)更好地组织流程代码
异步会打破
Express
的洋葱模型
Express 改造石头剪刀布游戏
现在通过使用 Express 框架来改造石头剪刀布游戏,game.js
游戏模块和 index.html
页面的代码没有变动,可以去 github 上面 clone
。
index.js
Express 改造,需要先用 npm
安装 express
:npm i express
。
const fs = require('fs');const express = require('express');const game = require('./game');let playerWon = 0; // 赢的次数const app = express();// 路由功能,将对应路由功能分开作为模块处理,到时候也可以放到其它文件去// 通过 app.get 设定 /favicon.ico 路径的路由// .get 代表请求 method 是 get,所以这里可以用 post、delete 等。这个能力很适合用于创建 rest 服务app.get('/favicon.ico', function (request, response) { // 一句 status(200) 即可代替 writeHead(200); end(); // response.writeHead(200); // response.end(); response.status(200); return;})// 打开页面 index.htmlapp.get('/', function (request, response) { // fs.createReadStream(__dirname + '/index.html').pipe(response); // send接口会判断你传入的值的类型,文本的话则会处理为text/html // Buffer的话则会处理为下载,html文件需要加上 `utf-8` response.send(fs.readFileSync(__dirname + '/index.html', 'utf-8'))})// next()同步状态下没有问题的,但是一旦有了异步,洋葱模型就打破了app.get('/game', function (request, response, next) { if (playerWon >= 3) { response.status(500); response.send('我不会再玩了!'); return; } // 通过next执行后续中间件 next(); // 当后续中间件执行完之后,会执行到这个位置 if (response.playerWon) { playerWon++; } }, // 获取玩家的操作 function (request, response, next) { // Express 中对 request 做了一些处理,可以直接拿到 query 参数 // const query = querystring.parse(parsedUrl.query); // const playerAction = query.action; const query = request.query; const playerAction = query.action; response.playerAction = playerAction; // 通过next执行后续中间件 next(); }, function (request, response) { // 通过 response 去挂载一些参数 let playerAction = response.playerAction; // 执行游戏逻辑 const gameRes = game(playerAction); // 先返回头部 // response.writeHead(200); response.status(200); // 根据不同的游戏结果返回不同的说明 if (gameRes == 0) { // response.end('平局!'); response.send('平局!'); } else if (gameRes == 1) { response.send('你赢了!'); // 玩家胜利次数统计+1 // playerWon++; response.playerWon = true; } else { response.send('你输了!'); } })app.listen(3000);
到此,相信大家对“Node.js中Express框架怎么用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341