当前位置:
首页
文章
前端
详情

ejs模板引擎全局变量

一、应用级全局变量:app.locals

这里的app变量是指:var app = express(); 的app,即express实例。

通过给 app.locals.xxx 设定新增属性来实现在全express应用中各个ejs页面中均可直接使用。如:

app.locals["CONFIG"] = "xxxx";

可以在任何ejs页面中可以使用 <%= CONFIG %> 变量。

二、响应级全局变量:resp.locals

这个的resp是指express的use中间件的Response对象:

app.use(function (req, resp, next) {...}

可以通过对 resp.locals.xxx 设定值来实现在当前响应中

resp.locals["UID"] = "xxx";

也可以实现与 app.locals 相同的效果,令所有页面模板可直接使用。

两种全局变量的区别

  1. app.locals 是全应用唯一,也是全局共享,缺点是任何人修改都会影响整所有其他用户。适用于放置一些应用配置类型的常量数据。
  2. resp.locals 是响应范围内的全局数据,使用与在对某一个Response处理的各个阶段共享的数据。适用于放置一些用户配置类型的数据,如授权信息,ID等。
  3. 注意:app.locals.** 可以被 response.locals.** 的同名属性值覆盖;response.locals.** 可以被render页面的 renderData.** 的同名属性覆盖。
  4. 上述两种全局locals,不仅可以在页面模板中使用,也可以在js代码中使用。

三、locals中附加的系统变量

settings : {
    env:"development"
    etag:"weak"
    jsonp callback name:"callback"
    port:8222
    query parser:"extended"
    subdomain offset:2
    trust proxy:false
    view engine:"ejs"
    views:"/Users/xxx/yyy/zzz"
    x-powered-by:true
}

参考链接:

  • https://www.cnblogs.com/xxcanghai/p/6422640.html

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。