javascript - 花瓣这样的模板引擎纯手写的吗
伊谢尔伦
伊谢尔伦 2017-04-10 14:22:22
[JavaScript讨论组]

下面是花瓣的一个模板引擎,是不是先写成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);
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
黄舟

这个是模版已经被编译成 Javascript 了,只需要一个运行时就可以做页面渲染。至于模版是不是先写成 HTML,这个不一定,要看模版引擎支持解析什么格式。模版引擎太多了,绝大多数都是这样来实现的,想找一个来试试或者研究的话,可以戳这里:http://garann.github.io/template-chooser/

迷茫

确实是纯手写的,因为他们有一套自己的前端架构,或者称作框架,但是绝对不是jquery这种类型的东西。
推荐一篇文章,http://www.csdn.net/article/2013-04-19/2814961
你在这篇文章中挑一个框架(或者库)研究一下,就明白是怎么回事了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号