首页前端开发JavaScript深入了解Node.js中的Express框架

深入了解Node.js中的Express框架

时间2024-01-29 19:55:02发布访客分类JavaScript浏览542
导读:收集整理的这篇文章主要介绍了深入了解Node.js中的Express框架,觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家详细介绍一下Node.js中的ExPress框架。有一定的参考价值,有需要的朋友可以参考一下,希望对大家...
收集整理的这篇文章主要介绍了深入了解Node.js中的Express框架,觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家详细介绍一下Node.js中的ExPress框架。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

很多语言都有一些框架,这些框架可以帮助我们更加快捷地开发以及维护项目,像 JS 就有 Vue、React、Angular 等流行框架;而 Node.js 也不例外,它也有一些框架可以帮助我们开发 Node.js 项目。

目前比较流行的 Node.js 框架有 ExPRessKoaEgg.js,无论是哪个 Node.js 框架,都是基于中间件来实现的,而中间件的执行方式就需要依据洋葱模型。【推荐学习:《nodejs 教程》】

洋葱模型

抽象一点解释,就是从洋葱中心点穿过去,就必须先一层层向内穿入洋葱表皮进入中心点,然后再从中心点一层层向外穿出表皮,这里有个特点:进入时穿入了多少层表皮,出去时就必须穿出多少层表皮。先穿入表皮,后穿出表皮,这种结构是符合栈结构先进后出的原则的。

在 Node.js 框架中,洋葱的表皮我们可以定义为中间件

  • 从外向内进入中心点的过程是一个关键词 next()
  • 而从内向外则是每个中间件执行完毕后,进入下一层中间件,一直到最后一层。

下面来简单了解一些 Express 框架吧!

Express

Express 是 Node.js 中 HTTP 服务的一个框架,而要了解一个框架,最好的方法是

  • 去了解它的关键功能
  • 推导出它要解决的问题是什么

那要了解它的关键功能,我们可以去 Express 的网站 查看它的 Features,这些核心功能都是为了让我们更加方便、简洁地写出 HTTP 服务,从而大大减轻我们的开发负担,让我们快速上手开发。

一些 Features

  • 路由:将对应路由分开作为模块处理
  • request/response 属性的简化,让我们不需要经过转换,然后直接使用对应的属性。
    • requestpathnamequery
    • responsesend()json()jsonp()
  • 中间件(next()
    • 更好地组织流程代码
    • 异步会打破 Express 的洋葱模型

Express 改造石头剪刀布游戏

现在通过使用 Express 框架来改造石头剪刀布游戏,game.js 游戏模块和 index.htML 页面的代码没有变动,可以去 gIThub 上面 clone

index.js Express 改造,需要先用 npm 安装 expressnpm 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);
    

代码地址:https://github.COM/V-vincent/node-introduction

更多编程相关知识,请访问:编程视频!!

以上就是深入了解Node.js中的Express框架的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: javascript怎么隐藏herf下一篇:javascript如何解除事件绑定猜你在找的JavaScript相关文章 html font标签如何设置字体大小?html font标签属性用法介绍2022-05-16vue3+TypeScript+vue-router的使用方法2022-04-16vue3获取当前路由地址2022-04-16如何利用React实现图片识别App2022-04-16JavaScript展开运算符和剩余运算符的区别详解2022-04-16微信小程序中使用vant框架的具体步骤2022-04-16Vue elementUI表单嵌套表格并对每行进行校验详解2022-04-16如何利用Typescript封装本地存储2022-04-16微信小程序中wxs文件的一些妙用分享2022-04-16JavaScript的Set数据结构详解2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: 深入了解Node.js中的Express框架
本文地址: https://pptw.com/jishu/591527.html
javascript中怎么求数组的平均值 浅谈Angular中父子组件间怎么传递数据

游客 回复需填写必要信息