下面是花瓣的一个模板引擎,是不是先写成html再用什么工具能生成
(function(rt) {
var templates = rt.templates,
attrs = function() {
return rt.attrs.apply(rt, arguments)
}, _ = function() {
return rt._.apply(rt, arguments)
}, img = function() {
return rt.img.apply(rt, arguments)
}, imgURL = function() {
return rt.imgURL.apply(rt, arguments)
}, imgSize = function() {
return rt.imgSize.apply(rt, arguments)
}, avatar = function() {
return rt.avatar.apply(rt, arguments)
}, isVerified = function() {
return rt.isVerified.apply(rt, arguments)
}, url = function() {
return rt.url.apply(rt, arguments)
}, mkurl = function() {
return rt.mkurl.apply(rt, arguments)
}, GACampaignURL = function() {
return rt.GACampaignURL.apply(rt, arguments)
}, escape = function() {
return rt.escape.apply(rt, arguments)
}, __t = rt.templates,
emerge = function() {
return rt.renderSync.apply(rt, arguments)
};
__t["base/people_pins"] = function(locals) {
var buf = [];
with(locals || {}) {
var interp, __val__ = emerge("base/header");
buf.push(null == __val__ ? "" : __val__);
var __val__ = emerge("base/people_layout", {
req: req,
user: page.user,
ctx: "pins",
body_tpl: "base/people_pins_body",
page: page
});
buf.push(null == __val__ ? "" : __val__)
}
return buf.join("")
}, __t["base/chrome_callout"] = function(locals) {
var buf = [];
with(locals || {}) {
var interp;
buf.push("
<
p"), buf.push(attrs({
id: "chrome_callout",
style: "display: none;",
"class": "has-close phide"
})), buf.push(">
安装花瓣的chrome采集工具,你可以方便地收集网络上的图片,
视频及网页截图,这是花瓣的精髓所在。 安装花瓣Chrome扩展
')
}
return buf.join("")
}, __t["base/header_main_menu"] = function(locals) {
var buf = [];
with(locals || {}) {
var interp, categories = settings.categories,
groups = [];
for (var i = 0, l = categories.length; i < l; i++) {
var category = categories[i];
if (category.display === !1) continue;
category.nav_link = "/favorite/" + category.id + "/", groups[category.group] = groups[category.group] || [], groups[category.group].push(category)
}
buf.push("");
for (var $index = 0, $$l = groups[0].length; $index < $$l; $index++) {
var cat = groups[0][$index];
buf.push("" + escape((interp = cat.name) == null ? "" : interp) + "")
}
buf.push("
");
for (var $index = 0, $$l = groups[1].length; $index < $$l; $index++) {
var cat = groups[1][$index];
buf.push("" + escape((interp = cat.name) == null ? "" : interp) + "")
}
buf.push("
");
for (var $index = 0, $$l = groups[2].length; $index < $$l; $index++) {
var cat = groups[2][$index];
buf.push("" + escape((interp = cat.name) == null ? "" : interp) + "")
}
buf.push("
");
for (var $index = 0, $$l = groups[3].length; $index < $$l; $index++) {
var cat = groups[3][$index];
buf.push("" + escape((interp = cat.name) == null ? "" : interp) + "")
}
buf.push("
视频");
for (var $index = 0, $$l = groups[4].length; $index < $$l; $index++) {
var cat = groups[4][$index];
buf.push("" + escape((interp = cat.name) == null ? "" : interp) + "")
}
buf.push("
");
if (req.promotions && req.promotions.dropdown_icontxt_promotions && req.promotions.dropdown_icontxt_promotions.length) {
buf.push("");
for (var i = 0, $$l = req.promotions.dropdown_icontxt_promotions.length; i < $$l; i++) {
var promo = req.promotions.dropdown_icontxt_promotions[i];
i <= 6 && (buf.push("" + escape((interp = promo.title) == null ? "" : interp) + ""))
}
buf.push("
")
}
buf.push("
')
}
return buf.join("")
}, __t["base/people_likes_boards"] = function(locals) {
var buf = [];
with(locals || {}) {
var interp, __val__ = emerge("base/header");
buf.push(null == __val__ ? "" : __val__);
var __val__ = emerge("base/people_layout", {
req: req,
user: page.user,
ctx: "likes",
body_tpl: "base/people_likes_boards_body",
page: page
});
buf.push(null == __val__ ? "" : __val__)
}
return buf.join("")
}
........
})(app);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这个是模版已经被编译成 Javascript 了,只需要一个运行时就可以做页面渲染。至于模版是不是先写成 HTML,这个不一定,要看模版引擎支持解析什么格式。模版引擎太多了,绝大多数都是这样来实现的,想找一个来试试或者研究的话,可以戳这里:http://garann.github.io/template-chooser/
确实是纯手写的,因为他们有一套自己的前端架构,或者称作框架,但是绝对不是jquery这种类型的东西。
推荐一篇文章,http://www.csdn.net/article/2013-04-19/2814961
你在这篇文章中挑一个框架(或者库)研究一下,就明白是怎么回事了。