我想将domjs移植到浏览器中。
var mytemplate = function () {
header(
h1('Heading'),
h2('Subheading'));
nav(
ul({ 'class': 'breadcrumbs' },
li(a({ href: '/' }, 'Home')),
li(a({ href: '/section/'}, 'Section')),
li(a('Subject'))));
article(
p('Lorem ipsum...'));
footer('Footer stuff');
};
但我不知道如何附加一些方法,如标题' ' H1' ' H 2'到了' mytemplate'。
如何在没有'这个'的情况下使用header()关键字。
案例失败:
template.apply($funcs),
template.bind($funcs)(),
template.call($funcs),
我无法在模板中使用header()。 (在这种情况下,' this.header'可用)
答案 0 :(得分:1)
首先,您应该查看documentation:
var domjs = require('domjs/lib/html5')(document);
// Execute mytemplate with h1, h2 etc. functions attached
var mydom = domjs.build(mytemplate);
console.log(mydom.firstChild.nodeName); // header
如果你问的是它是如何工作的(?),因为你有一些自定义处理 - 它通过污染调用函数的全局范围来工作。你可以在这里看到它是如何完成的 - > https://github.com/medikoo/domjs/blob/v0.2.3/lib/dscope.js#L32-L36
顺便说一句。您始终可以domjs.map
domjs.map.header
,domjs.map.h1
等访问{{1}}上的所有这些功能。
使用全局范围的方法是有争议的并且有它的缺点(例如函数返回后函数不可用),并且在即将发布的domjs版本中将不再使用此方法。作为替代Webmake(可能还有Browserify)插件,所以domjs模板可以与本地范围内保证的那些函数捆绑在一起,然后事情会以自然的方式工作。