Express 入门

  Express 是node 第三方框架,大家都知道,框架的意义就在于能大大简化程序地开发。那么我们就看一下Express是怎么简化node程序开发的。

  1,用Express写一个hello world 程序,我们来体验一下Express 开发。

  新建文件夹express,npm init -y 快速创建package.json, 再新建一个server.js 用于项目启动。由于express 是第三方框架,我们要先安装它,npm install express -S,  server.js 代码如下:

let express = require("express");
let http = require("http");

let app = express();
app.use(function(req,res){
    res.writeHead("200",{‘content-type‘:‘text/plain‘})
    res.end("Hello World")
})

http.createServer(app).listen(8080)

  现在在当前文件夹中,调用cmd 命令窗口,输入node server 开启服务器,浏览器中输入localhost:8080 可以看到Hello World. 现在我们再把原生node 代码拿过来(如下),看一下,它们的区别。

let http = require("http");

// 创建请求处理函数
let app = function(req,res) {
    res.writeHead("200",{‘content-type‘:‘text/plain‘})
    res.end("Hello World")
}

http.createServer(app).listen(8080)

  原生node 程序和Express 程序最主要的区别的就是请求处理函数,原生node是直接创建一个函数来处理请求,所有请求和响应操作都放到这一个函数里。Express 则是调用 express()返回一个请求处理函数, 然后调用该函数的use方法来处理请求。

  这里可以简单看一下express 的源码,看一下app请求处理函数, 当require(‘express’) 时,node 会寻找node_modules下面的express, 它是一个文件夹,就会寻找它下面的index.js 文件,这是node CommonJS 规范规定的。index.js 文件如下:

module.exports = require(‘./lib/express‘);

  我们再看一下lib 文件夹下的express.js 文件(如下),可以看到它暴露出createApplication函数, 我们定义的express 变量就是指向这个函数,

exports = module.exports = createApplication

  看一下这个函数(如下),它返回app. 所以当程序中执行express() 的时候,它返回了app, app 就是function(req,res,next) 函数, 就是我们的请求处理函数,mixin(app,proto,false), 就是给app

增加一些方法,如这里的use 方法。

function createApplication() {
  var app = function(req, res, next) {
    app.handle(req, res, next);
  };

  mixin(app, EventEmitter.prototype, false);
  mixin(app, proto, false);

  // expose the prototype that will get set on requests
  app.request = Object.create(req, {
    app: { configurable: true, enumerable: true, writable: true, value: app }
  })

  // expose the prototype that will get set on responses
  app.response = Object.create(res, {
    app: { configurable: true, enumerable: true, writable: true, value: app }
  })

  app.init();
  return app;
}

  到底app 有哪些方法,我们不妨把它打印出来。在文件夹中随便建一个js 文件,如 applog.js 看一下,看完之后就可以删除。在applog.js 中输入如下代码

let express = require("express");
let app = express();
console.log(app)

  在命令行中输入node applog ,可以看到{ [Function: app] .... }等,可以看到它是一个函数, 还有use, set, post 等方法。

   调用express()返回app 请求处理函数,然后调用app.use 来处理请求,这么写到到底有什么好处? 最主要的就是我们可以把请求处理,放到不同的函数进行,从而避免了在原生node 中只有一个函数进行处理的问题。把所有的处理逻辑放到一个函数,不利于代码的维护和扩展。

  现在我们想要在响应之前输出请求日志,用Express,我们就可以直接在程序中填加app.use(), 而不用管以前的代码,而且原生node, 我们还要在请求处理函数中填加。Express 代码如下:

var express = require("express");
var http = require("http");
var app = express();

//  记录请求日志
app.use(function(request, response, next) {
    console.log("In comes a " + request.method + " to " + request.url);
   next();
});
// 对请求做出响应
app.use(function(request, response) {
    response.writeHead(200, { "Content-Type": "text/plain" });
    response.end("Hello, world!");
});
http.createServer(app).listen(8080);

  这样我们就把请求放到不同的函数中进行处理,这也是Express 的中间件思想,不是把http请求放到一个大的函数中进行处理,而是把请求进行分解,放到一堆函数中进行处理。这一堆函数中的每一个函数,就是一个中间件,就是我们app.use 中的函数, 并且express 保证了 这些函数按照我们书写的顺序进行执行。如果一个中间件(函数)只做一件事件,这有利于模块化,代码的复用,更重要的是可以引用第三方模块。

  

时间: 2024-10-15 06:17:00

Express 入门的相关文章

Developer Express入门

这里从表格GridControl开始,零点零的入门,不会向大神一样写的深奥无比,一看你就会懂的 1.首先拖一个表格上去,点击Run Designer进入Columns编辑页; 2.点击add添加字段,设置fieldName属性绑定字段; 3.在初始化事件里编码 gridControl1.DataSource = list;//绑定数据 //获取选中的数据,绑定的列字段区分大小写,gridView1.FocusedRowHandle为获取选中行的手柄//MessageBox.Show(gridVi

Express入门( node.js Web应用框架 )

运用Express框架构建简单的NodeJS应用 Start  确认安装了NodeJS之后(最新的Node安装好后NPM也会自带安装了),npm可理解为nodejs的一个工具包.可通过查看版本来检测是否安装成功: F:\>node -v v0.10.32 F:\>npm -v 1.4.28 创建一个目录,在这个目录中首先得定义一下应用程序“包”文件,它和其它的node程序包是一样的. 即在这个目录中创建一个package.json文件,在里面express作为一个依赖. 你也可以使用 npm

express入门学习(一)

一.安装express cnpm || npm  install express --save ; 1. Hello  World var express = require('express'); var app = express(); app.get('/',function(req,res){ res.send('hello world'); }); var server = app.listen('3000',function(){ var host = server.address(

Express入门介绍vs实例讲解

下午在团队内部分享了express相关介绍,以及基于express的实例.内容提纲如下. 什么是Express 为什么要用Express 路由规则 一切皆中间件 实例:Combo Application ppt已经上传到slider share,地址传送:http://www.slideshare.net/chyingp/express-47368889 原来需要200字, 原来需要200字, 原来需要200字, 原来需要200字, 原来需要200字, 原来需要200字, 原来需要200字, 原

转:基于node的web开发框架Express入门--by ruanyifeng

JavaScript 标准参考教程(alpha) 草稿二:Node.js Express框架 GitHub TOP Express框架 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 目录 概述 运行原理 底层:http模块 对http模块的再包装 什么是中间件 use方法 Express的方法 all方法和HTTP动词方法 set方法 response对象 requst对象 项目开发实例 编写启动脚本 配置路由 静态网页模板 动态网页模板 安装模板引擎 新建数据脚本

Node.js express 入门示例1

1: 下载node.js并安装,安装程序自带有npm,选择一起安装.2:node -v显示版本,npm -v显示版本.    3:我这里要代理才能上网,先设置npm代理,如果上网不需要代理,可跳过此步骤. npm config set proxy http://proxy3.bj.petrochina:8080npm config set https-proxy  http://proxy3.bj.petrochina:8080 4:安装全局的express. 5:查看版本:express –V

nodejs + express 入门之 hello world

使用nodejs 开发web项目时原生的api开发比较困难.组合express后就比较容易了. 1.安装 express:       (express地址: http://www.expressjs.com.cn/) 进入到项目目录后 使用npm安装 语句是: 1 npm install express --save 如果比较慢可以使用淘宝镜像(不过需要先安装cnpm 安装cnpm语句: npm install -g cnpm --registry=https://registry.npm.t

NodeJS+Express+Socket.io的一个简单例子

初始化一个NodeJS web应用: 打开CMD窗口. 运行cmd:"mkdir myapp",新建一个文件夹,名为myapp. 运行cmd:"cd myapp",切换到文件夹myapp. 运行cmd:"npm init",创建文件package.json. 3.Express入门应用: 在上面的CMD窗口运行cmd:"npm install express --save", 安装"express" nod

node.js的web框架Express首次尝试!

环境:win7 64+node.js v0.10.33+npm 1.4.28+git Bash(声明:以下截图可能会有不一样的地方,因为我的这篇一部分是在公司完成的,一部分是在家里完成的,但命令和步骤是相同的) 1.安装Express 在控制台中输入npm install -g express(这里选择全局安装) 在安装express的命令工具,在控制台中输入npm install -g express-generator[最新express4.0+版本中将命令工具分家出来了(项目地址:http