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 # 存放image、css、js等文件
│ ├── 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
注意:本文归作者所有,未经作者允许,不得转载