Node.js之Express一

前面也了解了HTTP模块,但它并不支持session、cookie等。Express是对HTTP模块的封装,同时也支持session这些,使用起来也更好用。Express更有点像IIS服务器。它也是属于一个模块的内容,所以当然是要先添加Express模块 npm install express.然后就是创建对象和使用。

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

一、Express设置

Express提供了控制Express服务器的行为的一些应用程序设置。这些设置定义了环境以及Express如何处理JSON解析、路由和视图。express对象提供set(setting,value)、enable(setting)、disable(setting)方法为应用程序的设置来设定值。既然可以设置那就可以获取。Express使用get(setting)、enable(setting)、disable(setting)来获取设定的值。

下面是它的一些设置:

env:定义环境模式字符串,如development(开发)、testing(测试)和production(生产).默认process.env.NODE_ENV

trust_proxy:启用/禁止方向代理的支持。默认disabled(禁用).

jsonp callback name:定义jsonp请求的默认回调名称,默认?callback=

jsonp replacer:定义json replacer回调函数。默认null。

case sensitive routing:启用/禁用区分大小写。默认disabled。

strict routing:启用/禁用严格的路由。例如/home和/home/是不一样的。默认disabled.

view cache:启用/禁用视图模板编译缓存,这保留编译模板的缓存版本。默认disabled.

view engine:指定呈现模板时,如果从视图中省略了文件扩展名,应该使用的默认模板引擎扩展

views:指定模板引擎用来查找视图模板的路径.默认./views.

二、启动Express服务器

使用app.listen(port)调用把底层的HTTP连接绑定到port(端口)上,并开始监听它。顶层的http连接使用的是利用http库中创建的server对象上的listen()方法产生相同连接。其实express()返回的值实际是一个回调函数,它映射了传递到http.createServer()和https.createServer()方法的回调函数。

 var express=require(‘express‘);
var http=require(‘http‘);
var app=express();
http.createServer(app).listen(8080);
app.get(‘/‘,function(req,res){
    res.send(‘Hello  World‘);
})
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Express_http.js
module.js:327
    throw err;
    ^

Error: Cannot find module ‘express‘
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (f:\NodeJsDemo\Express_http.js:12:14)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)

Process finished with exit code 1

如果出现上面的错误表示找不到模块Express,可以在该源码文件夹执行npm install express来解决

三、路由

1.实现路由

路由就是根据http请求的虚拟路径找到服务器对应的物理路径。在.Net的MVC中也有路由表,其实和它差不多.

express模块提供了函数来实现。app.<method>(path,[meddleware,..],callback)

method:get、post等请求方法

meddleware:回调函数要执行前要应用的中间件函数

express还提供了一个方法app.all().回调函数app.all()调用用于指定路径的每个请求,不止是HTTP方法。app.all()可以接受*字符作为路径的通配符,这对于实现记录请求日志或其他特殊的功能来处理请求是一不错的方法。

2.在路由中应用参数

应用参数意味着变化,不是死的一成不变的。.Net自定义路由也是,可以regist路由。

express中主要有4种方法:

1.查询字符串

这种是最基础的最常见的.通过url路径后面加?key=value&key1=value1来实现。

2.post参数

这个会用到中间件body-parser。所以先跳过。

3.正则表达式app.get(正则,function(req,res){})

例如:app.get(/^\/book\/(\w+)\:(\W+)?$/,callback),可以通过req.param[index]获取url路径对应的参数

4.使用已定义的参数来应用路由参数

app.get(‘/user/:userId‘,callback)。这时可以通过req.param(参数名)来获取参数

为已定义的参数应用回调函数:

使用已定义的参数有一个好处,如果定义的参数在URL中,可以指定被执行的回调函数。当解析url时,如果express发现某个参数有注册的回调函数,它就在调用路由处理程序之前调用参数的回调函数,可以为一个路由注册多个回调函数。

用app.param(param,function(req,res,next,value){})来实现为已定义的参数应用回调函数。

param:定义的参数名

nest:用于已注册的下一个app.param()回调的回调函数。必须在回调函数中调用next(),否则回调链将被破坏。

value:从url路径解析的参数的值。

demo代码:

var express = require(‘express‘);
var url = require(‘url‘);
var app = express();
app.listen(8080);
app.get(‘/‘, function (req, res) {
  res.send("Get Index");
});
app.get(‘/find‘, function(req, res){
  var url_parts = url.parse(req.url, true);
  var query = url_parts.query;
  var response = ‘Finding Book: Author: ‘ + query.author +
                  ‘ Title: ‘ + query.title;
  console.log(‘\nQuery URL: ‘ + req.originalUrl);
  console.log(response);
  res.send(response);
});
app.get(/^\/book\/(\w+)\:(\w+)?$/, function(req, res){
  var response = ‘Get Book: Chapter: ‘ + req.params[0] +
              ‘ Page: ‘ + req.params[1];
  console.log(‘\nRegex URL: ‘ + req.originalUrl);
  console.log(response);
  res.send(response);
});
app.get(‘/user/:userid‘, function (req, res) {
  var response = ‘Get User: ‘ + req.param(‘userid‘);
  console.log(‘\nParam URL: ‘ + req.originalUrl);
  console.log(response);
  res.send(response);
});
app.param(‘userid‘, function(req, res, next, value){
  console.log("\nRequest received with userid: " + value);
  next();
});

//    /find?author=Brad&title=Node
//    /book/12:15
//    /user/4983

在浏览器中以此输入http://127.0.0.1:8080/find、/find?author=Brad&title=Node、/book/12:15 、/user/4983会有一下输出

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe express_routes.js

Query URL: /find
Finding Book: Author: undefined Title: undefined

Query URL: /find?author=Brad&title=Node
Finding Book: Author: Brad Title: Node

Regex URL: /book/12:15
Get Book: Chapter: 12 Page: 15

Request received with userid: 4983

Param URL: /user/4983
Get User: 4983

上面使用自定义的参数中只有一个参数,现在弄一个两个参数的来看一下效果,并为这两个参数都应用了回调函数。

var express = require(‘express‘);
var url = require(‘url‘);
var app = express();
app.listen(8080);

app.get(‘/user/:userid/pwd/:pwd‘, function (req, res) {
  var response = ‘Get User: ‘ + req.param(‘userid‘);
  console.log(‘\nParam URL: ‘ + req.originalUrl);
  console.log(response);
  res.send(response);
});
app.param(‘userid‘, function(req, res, next, value){
  console.log("\nRequest received with userid: " + value);
  next();
});
app.param(‘pwd‘, function(req, res, next, value){
  console.log("\nRequest received with pwd: " + value);
  next();
});
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe express_routes.js

Request received with userid: 4983

Request received with pwd: 123456

Param URL: /user/4983/pwd/123456
Get User: 4983
时间: 2024-08-10 19:17:40

Node.js之Express一的相关文章

node.js基于express框架搭建一个简单的注册登录Web功能

这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注明一下版本,因为express因为版本的不同使用的方式也不同,我这算是目前最新的了吧 还没有装express的可以移步到这里 看看express框架的获取安装 1.简单地项目初始化 进入你的nodejs安装路径下边,如图,然后执行命令  express -e test  (这里把项目名设置为test

node.js 安装express 提示 command is not found

在安装express时增加generator参数: npm install -g express-generator 为什么要加上generator呢? 原先的express带cli, 现在把cli拆成了单独的express-generator包. 原先的express运行生成的项目是node app.js, 因为httpserver相关代码都在app.js里, 现在这部分代码移到了项目目录的bin/www下面, app.js只保留实现app的逻辑代码, 你需要去运行那个bin/www. 只是很

node.js框架 express

express是在node.js的基础上,拓展出的一个简洁实用的框架结构,运用这个东西,我们可以更方便的处理很多的事情.只要上手了,那就是个贝多芬! 一般安装express有几种方法. 第一,使用npm安装,cmd中输入npm install express -g,这个-g是全局安装,也就是安装在被你用"config set global"设置的文件夹里,需要注意的是,安装完了以后,需要改变环境变量以及其路径来指向你的安装目录. 第二,复制粘贴.(--废话!)不过这样的存在安全性问题,

Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验下node.js的魔力,二就是看看node.js.express和mongoose的API,其次就是把自己入门的过程记录下来,方便自己查看,再就是对入门的朋友起一个引导的作用. 敲demo的过程中感觉最爽的就是npm(Node Package Manager)是一个Node.js的包管理和分发工具.

Installing Node.js and Express on Ubuntu

Installing Node.js and Express on Ubuntu 1. 在nodejs官网上下载Linux Binaries(已经包含了npm):2. 安装Node.js下载后解压,并在解压的文件夹中启动Terminal后,输入命令:    sudo cp * /usr/local/ -r再输入命令:    node -v    npm -v查看程序版本,来检测是否成功安装: 3. 安装express    npm install -g express-generator 4.

node.js框架express的安装

首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录. $ mkdir myapp $ cd myapp 通过 npm init 命令为你的应用创建一个 package.json 文件. 欲了解 package.json 是如何起作用的,请参考 Specifics of npm’s package.json handling. $ npm init 此命令将要求你输入几个参数,例如此应用的名称和版本. 你可以直接按“回车”键接受默认设置即可,下

Mac环境下装node.js,npm,express;(包括express command not found)

1. 下载node.js for Mac 地址: http://nodejs.org/download/ 直接下载 pkg的,双击安装,一路点next,很容易就搞定了. 安装完会提醒注意 node和npm的路径是 /usr/local/bin. 看到一些帖子,用Homebrew安装也很容易的,我偷懒没有试,这边MK下:http://freemem.diandian.com/post/2012-06-02/40028564785. 当前最新的node.js安装完成包括了npm的,测试下是否安装成功

[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist

promise主要是用来解决异步回调问题,其实还有好几种比promise更好的方案,后面再说,这节,我们先用promise来改造下,我以前写的一篇文章[js高手之路]javascript腾讯面试题学习封装一个简易的异步队列 中的一道面试题( 页面上有一个按钮,一个ul,点击按钮的时候,每隔1秒钟向ul的后面追加一个li, 一共追加10个,li的内容从0开始技术( 0, 1, 2, ....9 ) ). promise的小实例: 1 function next1(){ 2 return new P

基于Node.js和express的日志服务器

首先,这篇文章学习的意义大于实际价值.如果按我的本意,直接在游戏中加入友盟,信息更全,而且非常简单.不过总是有很多人会凭着自己过时或者错误的经验去说别的东西多么不好,自己的东西多么好.好在,我自认为学习能力非常强,解决问题的能力也非常强.真让我做一个服务器+前端,也是在兴趣之中和能力之内. 一.Node.js简介 原本javascript纯粹是一个前端语言,干的基本上是让网页更丰富更炫的事情.不过Node.js出现后,javacript成为了前后端通吃的语言.比如网易的pomelo就是基于Nod

Node js之Express初步介绍和安装

摘要:Express就是一个基于node.js的框架.基于 Node.js 平台,快速.开放.极简的 web 开发框架基于node.js的框架有如下两个:express.koa,koa框架express的作者另外又开发的一个框架. 1.什么是Express? 基于Node.js平台,快速.开放.极简的web开发框架. 官网:http://www.expressjs.com.cn/ 首先要明确express的范围. Node.js可以进行两个方面的开发: 基于命令行的工具 Web开发 expres