2.2.4 • Published 9 years ago

ds-render v2.2.4

Weekly downloads
2
License
MIT
Repository
github
Last release
9 years ago

@ds/render

installation

ccnpm i --save @ds/render

usage

var dsRender = require('@ds/render');
var app = require('express')();
var dsRenderMiddleware = dsRender.augmentApp(app, {
    appRoot: __dirname // 必须的
    appendMiddleware: false // 默认 false, 设置成 true 会添加返回的 middleware: app.use(dsRenderMiddleware)
});

除了 dsRender.augmentApp() 方法返回一个供 express app 使用的 middleware 外,其他方法均返回 promise

dsRender.getParsedPartials(appRoot[, viewPath])

#{appRoot}/partials 下的 **/*.html 文件做成 Ractive.parse() 后的模板对象,返回的 object promise resolve 后为类似:

{
    a: {v:1,t:[/*...*/]}, // #{appRoot}/partials/a.html 解析后
    b.c.d: {v:1,t:[/*...*/]} //#{appRoot}/partials/b/c/d.html 解析后
}

如果把可选的 viewPath 给出如 #{appRoot}/ccc/account/views/home.html 则会到 #{componentRoot}/partials(#{componentRoot} 表示组件的根目录,本例中就是 #{appRoot}/ccc/account/)查找 partials,如存在 #{appRoot}/ccc/account/partials/ac.html 返回的对象会有 ac 这个 parsed partial,如果同时存在 #{appRoot}/partials/ac.html#{appRoot}/ccc/account/partials/ac.html,以组件的 partial 为优先。

dsRender.getParsedTemplate(filePath)

给出模板文件路径,返回 Ractive.parse() 后的模板对象(promise)。

以上两个方法是 @ds/render 的基础,返回的模板都会做资源路径的替换。

dsRender.augmentApp(app, opts)

用法在最前面,使用后,express middleware 里面的 res 对象会添加下列方法:

res.preRenderView(name)

会先到 #{componentRoot}/views 再到 #{appRoot}/views 查找模板文件,返回的 view 对象(promise)中有 view.templateview.partials

res.preRenderLocals(locals)

组合 app.locals (全局模板变量) app.locals.__proto__ (父 app 的全局模板变量) res.locals 和这里给进的 locals,locals 对象里的值可以是 promise 如

{
    a: promiseA,
    b: promiseB, // 第一层的 promise 会自动解决
    c: {
        pc: promiseInC // 这里的 promise 不会自动解决了
    }
}

返回的是 promise

res.rendr(name, locals)

使用前面两个方法生成 html,返回的是 promise

res.render(name, locals, fn)

覆盖(overwrite)了 express 里面的 res.render() 方法。

2.2.4

9 years ago

2.2.2

9 years ago

2.2.1

9 years ago

2.2.0

10 years ago

2.1.0

10 years ago

1.2.0

10 years ago

2.0.1

10 years ago

2.0.0

10 years ago

1.1.5

10 years ago

1.1.4

10 years ago

1.1.3

10 years ago

1.1.2

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago