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 info express version 来获取express最新的版本号, 最好使用最新的版本号而不是下面的3.x,这样新出的功能就不会让你感觉到奇怪了。

F:\>npm info express versi
4.9.5

F:\>mkdir HelloNode

手动创建一个应用程序依赖的包文件package.json:

{
  "name": "hello-world",
  "description": "hello world test app",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "express": "3.x"
  }  "scripts": {      "start": "forever app.js",       "test": "supervisor app.js"  }   }

package.json文件是非常重要的,至少我是这么认为的,dependencies字段指定的是程序依赖的程序包,只要在这里指定,npm install时会自动安装这里面指定的所有包。scripts字段也比较常用的,如上面,如果启动程序,可以用"npm start"或者"npm test"命令,指定supervisor表示可以自动探测程序改变。

package.json文件准备好后,运行npm install命令,则会安装文件中指定的依赖的包,

F:\>cd HelloNode && npm install
[email protected]3.17.6 node_modules\express
├── basic[email protected]
├── merge[email protected]
├── [email protected]0.2.4
├── escape[email protected]
├── [email protected]0.1.2
├── range[email protected]
├── cookie[email protected]
├── [email protected]1.0.0
├── media[email protected]
├── [email protected]1.3.0
├── [email protected]1.1.0
├── [email protected]0.4.5
├── [email protected]3.0.0
├── [email protected]0.5.0 ([email protected])
├── [email protected]2.0.0 ([email protected])
├── [email protected]1.3.2 ([email protected])
├── proxy[email protected] ([email protected], [email protected])
├── [email protected]0.9.3 ([email protected], [email protected], [email protected], [email protected], on-finished
@2.1.0)
└── [email protected]2.26.4 (pause[email protected], [email protected], [email protected].
0, [email protected], [email protected], [email protected], [email protected], on-heade
[email protected]1.0.0, [email protected], [email protected], [email protected], [email protected].
1.5, [email protected], [email protected], [email protected], [email protected], serve-
[email protected]1.2.1, [email protected], [email protected], [email protected], [email protected]
1.6.1, [email protected])

当npm完成后,Express 3.x 和它的依赖就安装到当前的 node_modules 目录里了(这个目录会自动创建,里面是安装的依赖包)。 可以通过 npm ls 来确认一下,它会把Express 和它的依赖展示成下面的树状结构。

[email protected] /private/tmp
└─┬ [email protected]3.0.0beta7
  ├── [email protected]0.6.1
  ├─┬ [email protected]2.3.9
  │ ├── [email protected]0.1.0
  │ ├── [email protected]0.0.4
  │ ├── [email protected]0.2.0
  │ ├── [email protected]1.0.11
  │ └── [email protected]0.4.2
  ├── [email protected]0.0.3
  ├── [email protected]0.7.0
  ├── [email protected]0.1.0
  ├── [email protected]0.0.1
  ├── [email protected]0.3.3
  ├── range[email protected]
  ├─┬ response[email protected]
  │ └── [email protected]0.2.0
  └─┬ [email protected]0.0.3
    └── [email protected]1.2.6

环境准备好了,我们可以创建一个应用程序了,在目录下创建一个文件app.js(anyway,名字随便取的,习惯叫app.js),app.js的内容如下:(实际上是载入express框架,让后创建一个应用程序)

var express = require(‘express‘);
var app = express();

然后就是定义路由,即响应用户要访问的路径,Express 给这些对象加了一个封装好的方法,比如 res.send(), 它会设置Content-Length,只要调用send方法就好:

app.get(‘/hello.txt‘, function(req, res){
  res.send(‘Hello NodeJS!!‘);
});

然后通过执行 app.listen() 来绑定并监听连接:

var server = app.listen(3000, function() {
    console.log(‘Listening on port %d‘, server.address().port);
});

上面3段都是app.js的内容。

然后启动程序,在当前目录下直接打"node app.js"即可:

F:\HelloNode>node app.js
Listening on port 3000

然后访问http://127.0.0.1:3000/ 即可,界面如下:

用Express启动一个nodejs应用程序,so easy!

使用express来生成一个应用程序

其实还有更简洁的方法,即用express生成node应用程序的模板,那些文件都不用自己创建,直接一个命令就能把常用的文件和包都装好,这对我们懒人来说真是百年难遇的特大福利。

运行express myapp即可生成如下目录的文件:

如上提示,cd mypp && npm install 然后node app即可启动程序。

如果你想生成一个支持Jade, Stylus的应用程序,只需要简单的执行下面的命令:

 express --sessions --css stylus --ejs myapp

以上安装的软件均不是全局的,只是在当前目录程序下有用。

错误处理

错误处理的中间件和普通的中间件定义是一样的, 只是它必须有4个形参,这是它的形式: (err, req, res, next):

app.use(function(err, req, res, next){
  console.error(err.stack);
  res.send(500, ‘Something broke!‘);
});

一般来说非强制性的错误处理一般被定义在最后,下面的代码展示的就是放在别的 app.use() 之后:

app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(function(err, req, res, next){
  // logic
});

在这些中间件里的响应是可以任意定义的,可以返回任意的内容,譬如HTML页面, 一个简单的消息,或者一个JSON字符串。

对于一些组织或者更高层次的框架,可能会像定义普通的中间件一样定义一些错误处理的中间件。 假设想定义一个中间件区别对待通过XHR和其它请求的错误处理,你可以这么做:

app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);

通常logErrors用来纪录诸如stderr, loggly, 或者类似服务的错误信息:

function logErrors(err, req, res, next) {
  console.error(err.stack);
  next(err);
}

clientErrorHandler 定义如下,注意错误非常明确的向后传递了。

function clientErrorHandler(err, req, res, next) {
  if (req.xhr) {
    res.send(500, { error: ‘Something blew up!‘ });
  } else {
    next(err);
  }
}

下面的errorHandler "捕获所有" 的异常, 定义为:

function errorHandler(err, req, res, next) {
  res.status(500);
  res.render(‘error‘, { error: err });
}
时间: 2024-10-10 10:27:57

Express入门( node.js Web应用框架 )的相关文章

node.js Web应用框架Express.js(一)

什么是Express.js Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用,提供丰富的HTTP工具以及来自Connect框架的中间件随取随用,创建强健.友好的API变得快速又简单,Express 不对 node.js 已有的特性进行二次抽象,只是在它之上扩展了Web应用所需的功能. 开篇,这里就只做简单的介绍,整理一些有关express.js的资源,与大家一起学习 Express.js中文社区:http://expressjs.j

《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记

近期想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序.所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴请參考:<Node.js入门>CentOS 6.5下Node.js Web开发环境搭建笔记 Node.js是什么? 我们看看百科里怎么说的? JavaScript是一种执行在浏览器的脚本,它简单,轻巧.易于编辑,这样的脚本通经常使用于浏览器的前端编程.可是一位开发人员Ryan有一天发现这样的前端式

node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录

关于session 和cookie 我搞了2-3天, 发现这个玩意也挺麻烦的. 很多教程都是把这种会话保存在nosql里面,比如mongo,或者redis等等.但是我还是想直接保存在计算机的内存中,比较符合传统的方式.网上也有很多这方面的文章,但基本上都是你抄我的,我抄你的,而且express有很多这种session/cookie的中间件,总是让人弄迷糊.很多文章都是点到为止,完全要靠自己慢慢去试,去看文档,去摸索. 我是基于connect这个中间件实现的.这个middleware 功能非常强大

Express - 基于 Node.js 平台的 web 应用开发框架

Web 应用 Express 是一个基于 Node.js 平台的极简.灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用. API 丰富的 HTTP 快捷方法和任意排列组合的 Connect 中间件,让你创建健壮.友好的 API 变得既快速又简单. 性能 Express 不对 Node.js 已有的特性进行二次抽象,我们只是在它之上扩展了 Web 应用所需的基本功能. LoopBack 提供赞助 Develop model-driven apps wit

Node.js web快速入门 --&#160;KoaHub.js

介绍 KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async & Await)等特性,借助 Babel 编译,可稳定运行在 Node.js 环境上. //base controller, admin/controller/base.controller.js export default class extends koahub.http{ constructo

Node.js的Connect框架的代码重写与改进

Node.js的Connect框架的代码重写与改进 Connect框架简介 Connect框架是建立在Node.js的基本http.server功能之上,帮助实现结构化的web服务器逻辑的框架.Connect框架建立在两个重要的设计模式之上. 1) 责任链模式 在处理web请求时常需要作分派处理.例如,ASP.NET MVC支持按照请求参数将处理分派至某个Controller类的某个Action方法,以及根据Action方法的返回结果类型分派不同的结果操作(如ViewResult.JsonRes

Node.js + Web Socket 打造即时聊天程序嗨聊

前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术.像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端.瞬间就有了一统天下的感觉,来往穿梭于前后端之间代码敲得飞起,从此由前端晋升为'前后端'. 图片来自G+ 本文将使用Node.js加web socket协议打造一个网页即时聊天程序,取名为HiChat,中文翻过来就是'嗨聊',听中文名有点像是专为寂寞单身男女打造的~ 其中将会使用到express和socket.io两个包模块,下面会有介绍

利用OpenShift托管Node.js Web服务进行微信公众号开发

最近写了一个微信的翻译机器人.用户只要关注该微信号,发送英文的消息,就能收到中文翻译的回复.后台是用Node.js写的,托管在OpenShift的Paas平台上.翻译过程实际上是调用微软的Bing translation API做的,代码中用到了alexu84的bing-translate和JacksonTian的wechat这两个npm模块.下面把做的过程详细说一下. 1. 微信公众号开发 首先是要到https://mp.weixin.qq.com 申请一个公众号,并申请成为开发者.目前个人只

新入门node.js必须要知道的概念

一.对于一个刚入门node.js的朋友来说,一定要了解一些基础概念: 今年我正式进入社会后,发现自己所知道的IT方面的知识,真的只是牛毛,原来人外有人,山外有山,还需要继续努力.下面是一些我的自学习心得,发出来和大家一起分享: web的开发原理:         1.C/S模式(客户端/服务器)比如:QQ.微信等要先下载客户端的软件都可以称为c/s模式,它是有专门的客户端程序.         2.B/S模式(浏览器/服务器)比如:网页游戏.它的优点是:不需要下载客户端应用.缺点是:浏览器本身,