View视图
将api接口返回的数据传入渲染引擎并渲染对应的模板文件,输出html到浏览器端
模板目录
所有的模板文件都存放在viewDir中。可以自行配置viewDir指向目录。
模板数据来源
模板中可用的数据来源于3个合并的结果:
合并后的data将传入模板引擎的渲染方法中。模板中可以引用到ctx对象。
默认引擎和多引擎
maty框架默认内置nunjucks模板引擎,其使用方法可以参见官方文档。
nunjucks的模板文件后缀为 .njk。因此模板文件应该是这样的/views/home.njk,/views/login.njk等。
默认引擎是通过 app.set('view engine', extName)来设置的,比如maty内部是:
默认引擎的的作用是配置路由时,可以省略view配置项的地址后缀。比如 view: 'main/list.njk' 可以省略为 view: 'main/list'。若不是默认引擎,比如又使用了jade引擎,则不可省略后缀,必须是 view: 'main/list.jade'.
通过app.engine方法可以设置多个引擎,并通过set('view engine')来修改默认引擎,例如修改为jade: app.set('view engine', 'jade');
Nunjucks模板引擎其他设置
maty内部对于nunjucks模板的相关设置如下:
通过app.get('nunjucks')获取nunjucks对象,app.get('nunjucksEnv')获取nunjucksEnv对象,然后根据需要和官方文档的指导可以定制需求。
实际常用到自定义nunjucks的filters过滤器。处理方式如下:
自动渲染
分为以下几种情况:
在无匹配route地址的情况下,可直接请求一个模板路径进行渲染。 例如 存在模板文件 views/home/about-us.njk ,在未配置路由的情况下,浏览器访问 /home/about-us 则会直接渲染home/about-us.njk文件的内容。 所以,这种情况适合静态内容的模板。
若配置了无参route地址,如:/article/rules ,可省略配置view项,可直接渲染 article/rules.njk 模板文件。
若配置了view: /article/list ,但找不到 article/list.njk 模板文件,会尝试寻找 article/list/index.njk文件来渲染。
Last updated
Was this helpful?