Express 系列之---概述(一)

程序员修炼之路 2018-01-08 13:57:07 ⋅ 798 阅读

Express是目前最流行的基于Node.js的Web开发框架,可以快速地搭建一个完整功能的网站。

Express 是一个自身功能极简,完全是由路由中间件构成一个的 web 开发框架:从本质上来说,一个 Express 应用就是在调用各种中间件。

路由的功能是根据请求路径和请求方法来处理特定的请求,而中间件则作用于全部请求。

1. 中间件(Middleware)是一个函数,中间件是一种功能的封装方式,具体来说就是封装在程序中处理HTTP 请求的功能。
2. 路由: 是指如何定义应用的端点(URIs)以及如何响应客户端的请求。

如何理解中间件

中间件是在管道中执行的。你可以想象一个送水的真实管道。水从一端泵入,然后在到达目的地之前还会经过各种仪表和阀门。这个比喻中很重要的一部分是顺序问题,你把压力表放在阀门之前和之后的效果是不同的。同样,如果你有个向水中注入什么东西的阀门,这个阀门“下游”的所有东西都会含有这个新添加的原料。在Express程序中,通过调用app.use 向管道中插入中间件。
安装express
$ npm init
#创建 package.json文件
#中间省略选项步骤
$ npm install express --sava
#安装 Express 并将其保存到依赖列表中:
#$ npm install express -> 只是临时安装 Express,不想将它添加到依赖列表中,

接着就可以直接引用express模块, 但是我们可以使用生成器工具来快速创建一个应用的骨架。

1.安装 Express
在工程的目录下 使用本地模式安装这个包,如果要通过命令行调用这个包中的命令,则需要用全局模式安装,按理说本地模式就够了, 但是我们在这里采用全局模式;<Express等都提供了 Quick Start(快 开始)工具,这个工具的功能通常 是建一个网站最小的基础框架,在此基础上完成开发。>

#安装 Express$ sudo npm install -g express-generator

 快速构建项目

#建网站基本结构:
$ express project       。。。。 create : project/bin create : project/bin/www
#下载依赖
$ cd project && npm install#运行   run the app:     $ DEBUG=project:* npm start -------------          
#检查前目录下的 package.json,并自动安装所有指定的模块  

$ cd project && npm install
#用 Express 实现的网站实际上就是一个 Node.js 程序, 启动服务器$ DEBUG=project:* npm start  .  .  project:server Listening on port 3000 +0ms  

打开浏览器http://localhost:3000, 会看到如下图:

关闭服务器 CMD + C 

目录结构

.
├── app.js          #  启动文件
├── bin             #  存放可执行文件
│   └── www├── node_modules    #  存储工程信息及模块依赖
├── package.json    #  存放package.json中安装的模块,添加依赖的模块并安装后,存放在这个文件夹下
├── public          #  存放imagecssjs等文件
│   ├── images│   ├── javascripts│   └── stylesheets│       └── style.css├── routes          #  存放路由文件
│   ├── index.js│   └── users.js└── views           #  存放视图文件
    ├── error.jade
    ├── index.jade
    └── layout.jade

发送网络请求, 在浏览器中看到欢迎界面时, 中间发生了什么?

第一步:访问 http://localhost:3000,会发送以下请求:

GET / HTTP/1.1
Host: localhost:3000
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142
Safari/535.19
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: UTF-8,*;q=0.5

浏览器发送请求,由路由控制器接受,根据不同的路由定向到不同的控制器。控制器处理用户的具体请求,可能会访问数据库中的对象,即模板部分。控制器还要访问模板引擎,生成视图的 HTML,最后再由控制器返回给浏览器,完成一次请求。

问题 Error: Cannot find module 'express' 解决办法

$ npm install express -g# 只是说可以require, 但要想在terminal下用express生成project,还需要
$ npm install -g express-generator#在使用的时候需要单独安装: npm install  express




全部评论: 0

    我有话说:

    MongoDB系列----概述()

    MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统

    安全攻防系列 安全基础概念

      该系列记录学习极客时间–安全攻防技能30讲相关内容 安全的本质 安全的本质就是保护数据被合法地使用。 数据:应用最核心的东西;如用户信息、订单信息等等 合法:大到法律法规、业务

    Express系列---路由(二)

    Express 是一个自身功能极简,完全是由路由和中间件构成一个的开发框架。

    Node实战篇:Express中间件与request(四)

    Express 是一个路由和中间件 Web 框架,其自身只具有最低程度的功能:Express 应用程序基本上是系列中间件函数调用。

    Node实战篇:Express路由(三)

    Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供系列强大的特性,帮助你创建各种 Web 和移动设备应用。

    iOS直播---主要的概念()

    直播可谓风生水起, 热火朝天, 借此也对音视频进行次深入学习, 希望有需要的大家一块学习.第一步对直播的大

    商城系统 DBShop V3.0 Beta 发布

    全新重构,首次亮相。 系统简介 DBShop企业级商城系统,使用PHP语言基于Laminas(Zendframework 3) + Doctrine 2 组合框架开发完成。可定制、多终端、多场景、多

    Node模块fs模块(六)

    屏幕快照 2017-08-08 上午10.53.21.png 第一部分 概述 Node.js 提供组类似UNIX(POSIX)标准的文件操作API,Node.js中操作文件的模块是fs(File

    温故知新ES6(二)

    温故知新ES6 基础类型

    Node模块Events模块(五)

    Node模块Events模块(五)

    Kafka系列

      分区 Kafka 的消息组织方 式实际上是三级结构:主题 - 分区 - 消息 问题:为什么 Kafka 要做这样的设计?为什么使用分区的概念而不是直接使用多个主题呢? 分区的

    温故知新ES6(三)

    温故知新ES6 数组集合和字典

    开源文档管理系统 Wizard 1.2.6 发布

    概述 Wizard 是款开源的文档管理系统,支持 Markdown 文档,Swagger 文档以及表格文档,适应于中小规模的技术团队文档管理,完全免费。Wizard 并不是款云产品,不提供任何云

    Kafka系列

      前言 刚学了rabbitmq, 怎么突然又开始了kafka? 艺多不压身 <摸着渐渐稀疏的头发> 只有对比才能有更深的理解 起于专业,终于专业 起步 知乎上kafka 推荐书籍?,其中列出来了大神的书籍、博客...

    京东到家订单中心系统mysql到es的转化

    原文:https://www.toutiao.com/i6796507988602389006 京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常

    Redis系列九 推荐系统-布隆过滤器

      布隆过滤器 概念 布隆过滤器是种空间利用率较高的概率型数据结构,用来测试一个元素是否在集合中。但是存在一定可能,导致结果误判。当布隆过滤器说某个值存在时,这个值可能不存在;当它说不

    Java Web实战篇-代码

    代码美-小小的优化让你的代码Bug更少,执行效率更高

    温故知新ES6(二)

    紧接本系列上篇