node.js框架 express

express是在node.js的基础上,拓展出的一个简洁实用的框架结构,运用这个东西,我们可以更方便的处理很多的事情。只要上手了,那就是个贝多芬!

一般安装express有几种方法。

第一,使用npm安装,cmd中输入npm install express -g,这个-g是全局安装,也就是安装在被你用"config set global"设置的文件夹里,需要注意的是,安装完了以后,需要改变环境变量以及其路径来指向你的安装目录。

第二,复制粘贴。(……废话!)不过这样的存在安全性问题,因为在复制粘贴的过程中,可能会有数据丢失之类的情况出现。

最后,值得注意的是,一旦在你的nodejs中存在了一个文件夹里面放置了express框架,而且他被你引用过,那么无论你怎么挽救也是无用的……要么把它删除,要么把它覆盖。

express()

创建一个express应用程序

相当于new一个对象,但是还能少写三个字母,将express存入变量app中,从此app翻身做主人!


1

2

3

4

5

6

7


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

app.get(
‘/‘
,
function
(req, res){

    
res.send(
‘hello world‘
);

});

app.listen(3000);

app.set(name, value)

将设置项 name 的值设为 value

这个方法主要运用于设置端口,或者设置文件夹存放,其他用途似乎比较少见


1

2


app.set(
‘title‘
,
‘My Site‘
);

app.get(
‘title‘
);
// => "My Site"

app.get(name)

获取设置项 name 的值


1

2


app.get(
‘title‘
);
// => undefinedapp.set(‘title‘, ‘My Site‘);

app.get(
‘title‘
);
// => "My Site"

app.enable(name)

将设置项 name 的值设为 true.


1

2


app.enable(
‘trust proxy‘
);

app.get(
‘trust proxy‘
);
// => true

app.disable(name)

将设置项 name 的值设为 false.


1

2


app.disable(
‘trust proxy‘
);

app.get(
‘trust proxy‘
);
// => false

app.enabled(name)

检查设置项 name 是否已启用


1

2


app.enabled(
‘trust proxy‘
);
// => falseapp.enable(‘trust proxy‘);

app.enabled(
‘trust proxy‘
);
// => true

app.disabled(name)

检查设置项 name 是否已禁用


1

2


app.disabled(
‘trust proxy‘
);
// => trueapp.enable(‘trust proxy‘)

app.disabled(
‘trust proxy‘
);
// => false

app.use([path], function)

这里有一个实际应用场景,常见的一个应用是使用./public提供静态文件服务,用 express.static() 中间件:

这里path是使用了默认的"/",express.static()保存了资源存放的文件名,__dirname是规定的全局变量,表示开发期间,该行代码所在的目录(其实就是相当于当前文件夹)


1

2

3

4


// GET /javascripts/jquery.js

// GET /style.css

// GET /favicon.ico

app.use(express.
static
(__dirname +
‘/public‘
));

如果你想把所有的静态文件路径都前缀"/static", 你可以使用“挂载”功能。如果req.url 不包含这个前缀, 挂载过的中间件不会执行。当function被执行的时候,这个参数不会被传递。这个只会影响这个函数,后面的中间件里得到的 req.url里将会包含"/static"


1

2

3

4


// GET /static/javascripts/jquery.js

// GET /static/style.css

// GET /static/favicon.ico

app.use(
‘/static‘
, express.
static
(__dirname +
‘/public‘
));

使用 app.use() “定义的”中间件的顺序非常重要,它们将会顺序执行,use的先后顺序决定了中间件的优先级。比如说通常 express.logger() 是最先使用的一个组件,纪录每一个请求


1

2

3

4

5


app.use(express.logger());

app.use(express.
static
(__dirname +
‘/public‘
));

app.use(
function
(req, res){

  
res.send(
‘Hello‘
);

});

如果你想忽略请求静态文件的纪录,但是对于在 logger()之后定义的路由和中间件想继续纪录,只需要简单的把static() 移到前面就行了:


1

2

3

4

5


app.use(express.
static
(__dirname +
‘/public‘
));

app.use(express.logger());

app.use(
function
(req, res){

  
res.send(
‘Hello‘
);

});

另一个现实的例子,有可能从多个目录提供静态文件服务,下面的例子中会优先从"./public"目录取文件


1

2

3


app.use(express.
static
(__dirname +
‘/public‘
));

app.use(express.
static
(__dirname +
‘/files‘
));

app.use(express.
static
(__dirname +
‘/uploads‘
));

app.engine(ext, callback)

注册模板引擎的 callback 用来处理ext扩展名的文件默认情况下, 根据文件扩展名require() 对应的模板引擎。比如你想渲染一个 "foo.jade" 文件,Express会在内部执行下面的代码,然后会缓存require(),这样就可以提高后面操作的性能


1

app.engine(
‘jade‘
, require(
‘jade‘
).__express);

那些没有提供 .__express 的或者你想渲染一个文件的扩展名与模板引擎默认的不一致的时候,也可以用这个方法。比如你想用EJS模板引擎来处理 ".html" 后缀的文件:


1

app.engine(
‘html‘
, require(
‘ejs‘
).renderFile);

这个例子中EJS提供了一个.renderFile() 方法和Express预期的格式: (path, options, callback)一致, 可以在内部给这个方法取一个别名ejs.__express,这样你就可以使用".ejs" 扩展而不需要做任何改动

有些模板引擎没有遵循这种转换, 这里有一个小项目consolidate.js 专门把所有的node流行的模板引擎进行了包装,这样它们在Express内部看起来就一样了。


1

2

3


var
engines = require(
‘consolidate‘
);

app.engine(
‘haml‘
, engines.haml);

app.engine(
‘html‘
, engines.hogan);

app.param([name], callback)

路由参数的处理逻辑。比如当 :user 出现在一个路由路径中,你也许会自动载入加载用户的逻辑,并把它放置到 req.user , 或者校验一下输入的参数是否正确。

下面的代码片段展示了callback很像中间件,但是在参数里多加了一个值,这里名为id.它会尝试加载用户信息,然后赋值给req.user, 否则就传递错误next(err).


1

2

3

4

5

6

7

8

9

10

11

12


app.param(
‘user‘
,
function
(req, res, next, id){

  
User.find(id,
function
(err, user){

      
if
(err) {

            
next(err);

            
}
else
if
(user) {

            
req.user = user;

            
next();

            
}
else
{

            
next(
new
Error(
‘failed to load user‘
));

            
}

    
});

});

另外你也可以只传一个callback, 这样你就有机会改变 app.param() API.比如express-params定义了下面的回调,这个允许你使用一个给定的正则去限制参数。

下面的这个例子有一点点高级,检查如果第二个参数是一个正则,返回一个很像上面的"user"参数例子行为的回调函数。


1

2

3

4

5

6

7

8

9

10

11

12

13


app.param(
function
(name, fn){

  
if
(fn
instanceof
RegExp) {

      
return
function
(req, res, next, val){

            
var
captures;

      
if
(captures = fn.exec(String(val))) {

         
req.params[name] = captures;

          
next();

           
}
else
{

          
next(
‘route‘
);

         
}

      
}

  
}

});

这个函数现在可以非常有效的用来校验参数,或者提供正则捕获后的分组。

app.listen()

在给定的主机和端口上监听请求,这个和node的文档http.Server#listen()是一致的


1

2


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

app.listen(3000);

express()返回的app实际上是一个JavaScriptFunction,它被设计为传给node的http servers作为处理请求的回调函数。因为app不是从HTTP或者HTTPS继承来的,它只是一个简单的回调函数,你可以以同一份代码同时处理HTTP and HTTPS 版本的服务。


1

2

3

4

5


var
express = require(
‘express‘
);

var
https = require(
‘https‘
);

var
http = require(
‘http‘
);

var
app = express();http.createServer(app).listen(80);

https.createServer(options, app).listen(443);

app.listen() 方法只是一个快捷方法,如果你想使用HTTPS,或者同时提供HTTP和HTTPS,可以使用上面的代码


1

2

3

4


app.listen =
function
(){

    
var
server = http.createServer(
this
);

    
return
server.listen.apply(server, arguments);

};

node.js框架 express

时间: 2024-12-19 07:22:27

node.js框架 express的相关文章

node.js框架express的安装

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

node.js框架express文件上传操作

1.创建upload.html文件 <form action='/upload' method='post' enctype='multipart/form-data'> 头像:<input type='file' name='userImg'/><br/> <input type='submit' value='上传头像'/> <!-- 使用file上传图片的注意事项: 1. method上传方式必须是post 2. enctype='multipa

【前端node.js框架】node.js框架express

server.js /* 以下代码等下会有详细的解释 */ var express = require('express'); // 用来引入express模块 var app = express(); // express 实例对象 app.set('port', process.env.PORT || 3000); var favicon = require('serve-favicon'); // server.js var toUSD = require('./routes/toUSD.

node.js 框架express关于报错页面的配置

1.声明报错的方法,以及相对应的页面 //把数据库的调用方法配置到请求中 server.use((req, res, next) => { //把数据库存入req中 req.db = db; //把报错方法存入res中 res.showError = code => { switch (code) { case 404: res.status(code).render('404', {}); break; case 500: res.status(code).render('500', {})

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

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

LoopBack – 开源的,可扩展的 Node.js 框架

LoopBack 是建立在 Express 基础上的开源 Node.js 框架,专门为 Mobile,Web 和其他设备做了优化.LoopBack 能够连接到多个数据源,使用 Node.js 编写业务逻辑,集成现有的服务和数据. 您可能感兴趣的相关文章 太赞了!超炫的页面切换动画效果[附源码下载] 创意无限!一组网页边栏过渡动画[附源码下载] 真是好东西!13种非常动感的页面加载动画效果 你见过吗?9款超炫的复选框(Checkbox)效果 时尚设计!三种奇特网格加载效果[附源码下载] LoopB

node.js框架StrongLoop学习笔记(一)

node.js框架StrongLoop学习笔记(一) 本人在用node.js做手机后台,查找框架发现StrongLoop挺适合,可是却发现没有中文教程,于是在自己学习时,做一下笔记,以方便其他像我一样的人参考(本人的英语水平非常差,只能一点点试着做,并记录下来,如果大家发现问题,请通知我好更正,谢谢了!).所有操作都是在CentOS7-x64,Node.js 0.12.2下完成的. nodejs框架StrongLoop学习笔记一 安装StrongLoop 创建项目 安装数据库驱动 配置数据库连接

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、mongodb 入门(基于easyui datagrid增删改查)

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