博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务端与客户端共用smarty模板技术
阅读量:6834 次
发布时间:2019-06-26

本文共 1019 字,大约阅读时间需要 3 分钟。

  hot3.png

1. 后端渲染的局限性


有些时候,我们总会做一些瀑布流的界面,如下: 

 112650_FvVP_1177792.png

在不断的下拉过程中,会动态向其中添加重复的DOM结构,而且,我们也希望同步刷新页面的时候,DOM是直接在服务端渲染好的,而并不是在客户端再发一次请求去拼装。

    那么问题就来了,如果我们需要服务端渲染第一屏的数据,客户端在下拉过程中,在客户端拼装模板去渲染。那么我们的模板怎么写,如果后端使用的是NODE的同学,可以无须担心,但是如果后端是php+smarty的话,在服务端写的模板,在客户端就没法使用了。

    于是,smartyMonkey应运而生,smartyMonkey的

    

    我们来看一下,smartyMonkey如何帮助我们解决这个服务端smarty客户端不能用的问题。

    smartyMonkey使用js写的,可以解析部分smarty语句的库。

    ① 先说一下我们没有任何编译工具的情况下,最简单的使用例子:

     我们的建立三个文件:

     1: item.tpl,里面存放着单条新闻的DOM结构,如下图所示:

    142055_kJB0_1177792.png

     2: news.tpl, 里面存放着整张页面的代码。

     3:index.js,里面存放着拼装模板的代码。

      我们首先要写item.tpl,在里面,是每条新闻的DOM结构,如:

  •    

    {%$title%}

       
  •       我们在主模板中,引入item.tpl,同步出新闻

           引用的方式,在news.tpl中引用模板,并赋值到一个变量中:

    <&include file="./item.html" assign="tplStr"&>

            在具体引用出,直接调用:

    <&include file="string:$tplStr" inline&>

         并且,在页面中,把模板传送到前端:

        在index.js中,我们直接读取textarea中的模板数据,

    于是,我们就拼合成了要填入页面的模板字符串。这样我们就达到了,同一个模板(item.tpl),服务端与客户端共用的目的。

    如果使用的编译工具的同学,还可以这样用, 编译的时候,将item.tpl内联到news.tpl中去。

    news.tpl中(FIS方式):

    在index.js中:

        这样写起来,更加容易了。

    这就是前端渲染smarty模板解决方案---SmartyMonkey

     

    转载于:https://my.oschina.net/MrHou/blog/617158

    你可能感兴趣的文章
    Windows Server 2003域环境搭建
    查看>>
    创建CA 和申请证书
    查看>>
    Linux 下统计文件夹大小及文件数量
    查看>>
    pgbackrest 简要使用说明
    查看>>
    Silverlight C# 游戏开发:L6 3D摄像机
    查看>>
    XML和XMLSocket(一) -- XML的基础知识
    查看>>
    [强烈推荐]ORACLE SQL:经典查询练手第四篇(不懂装懂,永世饭桶!)
    查看>>
    Struts知识问答
    查看>>
    C# 中符号的作用[备忘]
    查看>>
    关于preempt_enable 和 preempt_disable 【转】
    查看>>
    [SDK2.2]Windows Azure Virtual Network (1) 概念
    查看>>
    SQLAlchemy 与 fask-SQLAlchemy 中的多表查询例子
    查看>>
    JS 获取图片原始尺寸-防止图片溢出
    查看>>
    Java反射
    查看>>
    Codeforce 712A Memory and Crow
    查看>>
    Keil代码中for循环延时问题
    查看>>
    JAX-RS(基于Jersey) + Spring 4.x + MyBatis构建REST服务架构
    查看>>
    ArcGIS制图之Subset工具点抽稀
    查看>>
    很好看的后台管理界面
    查看>>
    Maven 使用Eclipse构建Web项目
    查看>>