Nginx NodeJS Express - Router 2

 

http://www.codes51.com/article/detail_2787757_2.html

 

中间件函数的原型如下:

 

function (req, res, next)

 

第一个参数是Request对象req。第二个参数是Response对象res。第三个则是用来驱动中间件调用链的函数next,

如果你想让后面的中间件继续处理请求,就需要调用next方法。

给某个路径应用中间件函数的典型调用是这样的:

 

app.use('/abcd', function (req, res, next) {
  console.log(req.baseUrl);
  next();
})

 

app.static中间件

Express提供了一个static中间件,可以用来处理网站里的静态文件的GET请求,可以通过express.static访问。

express.static的用法如下:

 

express.static(root, [options])

 

第一个参数root,是要处理的静态资源的根目录,可以是绝对路径,也可以是相对路径。第二个可选参数用来指定一些选项,

比如maxAge、lastModified等,更多选项的介绍看这里:http://expressjs.com/guide/using-middleware.html#middleware.built-in。

一个典型的express.static应用如下:

 

var options = {
  dotfiles: 'ignore',
  etag: false,
  extensions: ['htm', 'html'],
  index: false,
  maxAge: '1d',
  redirect: false,
  setHeaders: function (res, path, stat) {
    res.set('x-timestamp', Date.now());
  }
}

app.use(express.static('public', options));

 

上面这段代码将当前路径下的public目录作为静态文件,并且为Cache-Control头部的max-age选项为1天。

还有其它一些属性,请对照express.static的文档来理解。

使用express创建的HelloExpress项目的app.js文件里有这样一行代码:

 

app.use(express.static(path.join(__dirname, 'public')));

 

这行代码将HelloExpress目录下的public目录作为静态文件交给static中间件来处理,对应的HTTP URI为“/”。

path是一个Node.js模块,__dirname是Node.js的全局变量,指向当前运行的js脚本所在的目录。path.join()则用来拼接目录。

有了上面的代码,你就可以在浏览器里访问“http://localhost:3000/stylesheets/style.css”。我们做一点改动,把上面的代码修改成下面这样:

 

app.use('/static', express.static(path.join(__dirname, 'public')));

 

上面的代码呢,针对/static路径使用static中间件处理public目录。这时你再用浏览器访问“http://localhost:3000/stylesheets/”

就会看到一个404页面,将地址换成“http://localhost:3000/static/stylesheets/style.css”就可以了。

posted on 2017-09-14 15:17  fanbird2008  阅读(47)  评论(0)    收藏  举报

导航