一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

nodejs express的静态动态视图助手笔记

时间:2015-04-22 编辑:简简单单 来源:一聚教程网


1、引子

express的视图助手可以全局控制整个app的视图变量、方法,比如每个模板都需要引入app的名称和输出请求地址:

// /view/1
app.get("/view/1", function(request, response) {
 response.render("view1", {
  title: "app名称",
  url: request.url,
  view: "view1",
 });
});
 
// /view/2
app.get("/view/2", function(request, response) {
 response.render("view2", {
  title: "app名称",
  url: request.url,
  view: "view2",
 });
});

如上,模板变量title是静态变量,url是动态变量,这两个变量都是公用的变量,可以将它们提取出来。

2、静态视图助手

静态视图助手指的是该视图变量、方法与请求无关,一般指的是项目的名称、地址等配置参数或者是公共的方法,这些变量、方法只能用在模板视图里面,如果想在项目其他地方使用公共的变量、方法可以在global下新增全局变量、方法(参考:nodejs学习9:express本地、响应全局变量)。

在app对象下定义静态视图助手:

// 定义静态视图助手变量
app.locals.staticVar = "static var";
 
// 定义静态视图助手方法
app.locals.staticFn = function() {
 return "static function";
}
 
app.locals({
 // 定义静态视图助手变量2
 staticVar2: "static var 2",
 // 定义静态视图助手方法2
 staticFn2: function() {
  return "static function 2";
 },
});

定义的静态视图变量、方法和模板变量、方法一样用,例在jade模板引擎下:

h1=staticVar
h1=staticFn()
 
h1=staticVar2
h1=staticFn2()
 
h1=templateVar
h1=templateFn()

3、动态视图助手

动态视图助手指的是该视图变量、方法与请求有关,一般用来解析请求信息,如用户登录信息、请求地址等。

在response对象定义动态视图助手:

app.use(function(request, response, next) {
 // 定义动态视图助手变量
 response.locals.dynamicVar = "dynamic var";
 
 // 定义动态视图助手方法
 response.locals.dynamicFn = function() {
  return "dynamic function";
 }
 
 response.locals({
  // 定义动态视图助手变量2
  dynamicVar2: "dynamic var 2",
  // 定义动态视图助手方法2
  dynamicFn2: function() {
   return "dynamic function 2";
  },
 });
 
 // 不要忘记 next()
 next();
});

定义的动态视图变量、方法和静态视图变量方法以及模板变量、方法一样用,例在jade模板引擎下:

h1=dynamicVar
h1=dynamicFn()

h1=dynamicVar2
h1=dynamicFn2()

h1=templateVar
h1=templateFn()

热门栏目