`

Fxtpl v1.0 繁星前端模板引擎(非原创)

阅读更多

Fxtpl v1.0 繁星前端模板引擎

极速,简洁,高效,轻量级,直接在html中嵌入模板

特点

Fxtpl可以直接在html中嵌入模板,无需编写script标签模板再innerHTML插入等繁琐操作

Fxtpl语法模仿Smarty,却比Smarty更简单优雅,更适合前端思维

Fxtpl有类似Smarty的单页面数据共享渲染模式,也有前端模板特有的闭包数据渲染模式

Fxtpl有自己的模板变量域名空间(类似PHP中的美元变量),无需依靠沙箱,模板环境和外部JS环境可以安全互访,模板的自由度和灵活性大大提升(市面流行的前端模板一般是沙箱牢房模式,应用灵活性大打折扣)

性能

Fxtpl的性能追求极致,无论在IE中还是Chrome等现代浏览器中,Fxtpl都表现优越

详细性能对比测试>>

体积

Fxtpl在体积上也追求极致,一共100多行代码,1.6KB(gzip)

体积对比>>

基本功能

渲染、编译、模板缓存、数据缓存、HTML转义、自定义分隔符、调试模式、变量调节器(helpers)、include语句等

浏览器支持

IE6+ / Chrome / Firefox 等现代浏览器

下载

Fxtpl 快速上手

渲染HTML

html:

<div id="myTemplate">
    <p>Hello, <!--[$name]--></p>
</div>

js:

var data = {
    name: 'Fxtpl前端模板引擎'
};
Fxtpl.render('myTemplate', data);

查看演示>>

编译JS字符串

js:

var title = '#音乐十年# 我在现场投票给了{{$starName}},TA当前排名第{{$rank}}位共{{$votes}}票。';
var data = {
    starName: '邓紫棋',
    rank: 1,
    votes: 128790
};
title = Fxtpl.compile(title, data, {leftTag: '{{', rightTag: '}}'});

查看演示>>

Fxtpl 语法

1、输出变量/表达式

Fxtpl的变量和Smarty模板类似,模板域变量以$开头。同时,为了最大兼容浏览器的预渲染,默认左右分隔符为<--[]-->

>> 直接输出模板变量
<div>歌手: <!--[$starName]--></div>

>> 输出变量的子项
<div>用户ID: <!--[$userInfo.userId]--></div>

>> 应用模板辅助方法(变量调节器)“escape”转义字符串
<div>您的留言: <!--[$notes|escape]--></div>

>> 应用JS原生“||”语法,设置“$votes”的默认值为“暂无”
<div>您的票数:<!--[$votes||'暂无']--></div>

>> 应用JS原生字符串方法replace
<div>时间:<!--[$time.replace('/', '-')]--></div>

>> 应用JS三元运算,输出“成功”或“失败”
<div>晋级:<!--[$status == 1? '成功': '失败']--></div>

>> 应用外部jQuery的$.trim方法
<div>评论:<!--[$.trim($comment)]--></div>

查看演示>>

2、if、if...else、if...elseif...,可多重嵌套

>> if
<!--[if $status == '1']-->
    <div>直播中...</div>
<!--[/if]-->

>> if...else
<!--[if $status == '1']-->
    <div>直播中...</div>
<!--[else]-->
    <div>休息中...</div>
<!--[/if]-->

>> if...elseif
<!--[if $status == '1']-->
    <div>直播中...</div>
<!--[elseif $status == '2']-->
    <div>录像中...</div>
<!--[/if]-->

查看演示>>

3、each...[index]、each...as...[index]

>> each遍历,默认带两个参数:$index(索引)、$item(值),同时内部this指针指向$item
<ul>
<!--[each $userList]-->
    <li>索引:<!--[$index]-->,名称:<!--[$item]--></li>
<!--[/each]-->
</ul>

>> each...as...遍历,自定义$index、$item参数,可省略“$”前缀(为保持模板变量一致性,不建议省略)
<ul>
<!--[each $userList as $name $i]-->
    <li>索引:<!--[$i]-->,名称:<!--[$name]--></li>
<!--[/each]-->
</ul>

查看演示>>

4、include id, [data](引入子模板)

引入同页面的字模板

>> 引入id为“msgContent”的子模板,并用data渲染(可省)
<div id="box">
    <p>您好,收到新消息: </p>
    <!--[include 'msgContent', data]-->
</div>

查看演示>>

引入外部页面的子模板(同步引入)

注:仅 fxtpl.plus.js 版本支持,且需依赖jQeruy或Zepto,内部用“$.ajax”实现

>> 引入外部子模板文件“msgContent.html”,并用data渲染(可省)
<div id="box">
    <p>您好,收到新消息: </p>
    <!--[include 'msgContent.html', data]-->
</div>

查看演示>>

同时,Plus版本的Fxtpl.render方法也支持渲染外部文件,这样可以实时加载外部的模板(例如根据用户点击后加载)

//渲染外部文件
var html = Fxtpl.render('/static/msg/msgContent.html', data);
//渲染后的html插入当前页面
$('#box').html(html);

(注:更多功能欢迎在Issues提出建议)

Fxtpl API

1、Fxtpl.render(id, [data], [options])

渲染模板

参数 类型 默认值 说明
id String 模板的id,如果其为script标签,即传统前端模板渲染模式;如果为非script标签,即类Smarty直接渲染模式(demo
data JSON Fxtpl.data 模板的数据,默认渲染Fxtpl.data域下的数据,即数据共享渲染模式;如果传入data即闭包数据(不共享)模式(demo
options JSON options 渲染模板的额外设置,参见下面“options 设置”

options 设置(可选)

字段 类型 默认值 说明
debug Boolean false 是否开启debug模式,参见Fxtpl 容错和调试
escape Boolean false 是否转义输出HTML字符
leftTag String "<--[" 左语法分隔符
rightTag String "]-->" 右语法分隔符

Returns: HTML(渲染后的HTML字符串)

类Smarty渲染模式需要注意的事项及建议>>

2、Fxtpl.compile(str, [data], [options])

编译字符串

参数 类型 默认值 说明
str String 编译的字符串
data JSON 编译字符串用到的数据,如果省略,则返回渲染函数,否则返回渲染后的字符串(demo
options JSON options 编译字符串的额外设置,同Fxtpl.render方法中的“options 设置”

Returns: Function | String(渲染函数或渲染后的字符串)

3、Fxtpl.config

模板的全局设置,包含下面的字段

字段 类型 默认值 说明
escape Boolean false 是否转义输出HTML字符
leftTag String "<--[" 左语法分隔符
rightTag String "]-->" 右语法分隔符

除了无“debug”的全局设置,和上面方法中的“options 设置”基本相同,优先级为:方法中的“options 设置” > 全局设置

下面展示如何把模板的全局左右分隔符,改为{{}}

Fxtpl.config.leftTag = '{{';//定义新的左分隔符
Fxtpl.config.rightTag = '}}';//定义新的右分隔符

var data = {
  name: "Joe"
};
var output = Fxtpl.compile("My name is {{$name}}", data);//直接使用新的格式

查看演示>>

4、Fxtpl.helpers

Fxtpl模板的辅助方法集合(变量调节器)

Fxtpl.helpers是一个对象,你可以认为它是模板辅助方法的原型prototype,默认只有“escape”方法

<div>您的留言:<!--[$notes|escape]--></div>

你可以通过类似扩展原型的方式,扩展模板的辅助方法

需要注意

  • 方法的第一个参数为模板传递的值/字符串
  • 方法必须有返回值,否则模板输出为“undefined”

例如扩展一个trim方法和intercept方法

//去除字符串前后空格
Fxtpl.helpers.trim = function(value){
    return value.replace(/^\s*|\s*$/g,'');
};

//根据length截取字符串,多出的用appendStr代替
Fxtpl.helpers.intercept = function(value, length, appendStr){
    return someString;
};

在模板中使用

>> 使用trim辅助方法
<!--[$title|trim]-->

>> 使用intercept辅助方法,空格后使用参数(从方法的第二个参数开始),多个参数用“,”分隔
<!--[$title|intercept 10,'...']-->

>> 同时使用trim、intercept辅助方法
<!--[$title|trim|intercept 10,'...']-->

查看演示>>

附:Fxtpl常用辅助方法插件汇总>>

5、Fxtpl.data

模板数据默认存放的域,如果Fxtpl.render方法不传data参数,即从此域读取

此域下所有一级变量在模板下均带“$”前缀,假如Fxtpl.data为

{
    page: 102,
    user: {
        name: 'Jack'
    }
}

则在模板中对应为$page$user.name

6、Fxtpl.cache

模板渲染函数缓存区,以模板id为索引

只缓存Fxtpl.render生成的渲染函数,不缓存Fxtpl.compile生成的渲染函数

下面演示手动缓存Fxtpl.compile生成的渲染函数

var renderFun = Fxtpl.compile('my name is {{$name}}');//用renderFun变量缓存渲染函数
var data = {
    list: [
        {name: 'Jack'},
        {name: 'Lily'},
        {name: 'Koen'}
    ]
};
for(var i = 0; i < data.list.length; i++){
    console.log(renderFun(data.list[i]));//打印渲染结果
}

//my name is Jack
//my name is Lily
//my name is Koen

Fxtpl 容错和调式

当模板渲染/编译发生错误时,Fxtpl会在控制台和页面同时输出错误信息和类型(Render或Compile),不影响后面代码的继续执行

同时Fxtpl提供debug调试模式(在“options 设置”中打开),在控制台输出编译前的字符串/HTML和渲染函数,方便定位错误

查看演示>>

Fxtpl 注释

Fxtpl只支持HTML默认的<!-- -->注释格式,不创造任何注释格式。

分享到:
评论

相关推荐

    受激拉曼散射计量【Stimulated-Raman-Scattering Metrology】 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    MMC整流器技术解析:基于Matlab的双闭环控制策略与环流抑制性能研究,Matlab下的MMC整流器技术文档:18个子模块,双闭环控制稳定直流电压,环流抑制与最近电平逼近调制,优化桥臂电流波形,高效

    MMC整流器技术解析:基于Matlab的双闭环控制策略与环流抑制性能研究,Matlab下的MMC整流器技术文档:18个子模块,双闭环控制稳定直流电压,环流抑制与最近电平逼近调制,优化桥臂电流波形,高效并网运行。,MMC整流器(Matlab),技术文档 1.MMC工作在整流侧,子模块个数N=18,直流侧电压Udc=25.2kV,交流侧电压6.6kV 2.控制器采用双闭环控制,外环控制直流电压,采用PI调节器,电流内环采用PI+前馈解耦; 3.环流抑制采用PI控制,能够抑制环流二倍频分量; 4.采用最近电平逼近调制(NLM), 5.均压排序:电容电压排序采用冒泡排序,判断桥臂电流方向确定投入切除; 结果: 1.输出的直流电压能够稳定在25.2kV; 2.有功功率,无功功率稳态时波形稳定,有功功率为3.2MW,无功稳定在0Var; 3.网侧电压电流波形均为对称的三相电压和三相电流波形,网侧电流THD=1.47%<2%,符合并网要求; 4.环流抑制后桥臂电流的波形得到改善,桥臂电流THD由9.57%降至1.93%,环流波形也可以看到得到抑制; 5.电容电压能够稳定变化 ,工作点关键词:MMC

    Boost二级升压光伏并网结构的Simulink建模与MPPT最大功率点追踪:基于功率反馈的扰动观察法调整电压方向研究,Boost二级升压光伏并网结构的Simulink建模与MPPT最大功率点追踪:基

    Boost二级升压光伏并网结构的Simulink建模与MPPT最大功率点追踪:基于功率反馈的扰动观察法调整电压方向研究,Boost二级升压光伏并网结构的Simulink建模与MPPT最大功率点追踪:基于功率反馈的扰动观察法调整电压方向研究,Boost二级升压光伏并网结构,Simulink建模,MPPT最大功率点追踪,扰动观察法采用功率反馈方式,若ΔP>0,说明电压调整的方向正确,可以继续按原方向进行“干扰”;若ΔP<0,说明电压调整的方向错误,需要对“干扰”的方向进行改变。 ,Boost升压;光伏并网结构;Simulink建模;MPPT最大功率点追踪;扰动观察法;功率反馈;电压调整方向。,光伏并网结构中Boost升压MPPT控制策略的Simulink建模与功率反馈扰动观察法

    STM32F103C8T6 USB寄存器开发详解(12)-键盘设备

    STM32F103C8T6 USB寄存器开发详解(12)-键盘设备

    2011-2020广东21市科技活动人员数

    科技活动人员数专指直接从事科技活动以及专门从事科技活动管理和为科技活动提供直接服务的人员数量

    Matlab Simulink仿真探究Flyback反激式开关电源性能表现与优化策略,Matlab Simulink仿真探究Flyback反激式开关电源的工作机制,Matlab Simulimk仿真

    Matlab Simulink仿真探究Flyback反激式开关电源性能表现与优化策略,Matlab Simulink仿真探究Flyback反激式开关电源的工作机制,Matlab Simulimk仿真,Flyback反激式开关电源仿真 ,Matlab; Simulink仿真; Flyback反激式; 开关电源仿真,Matlab Simulink在Flyback反激式开关电源仿真中的应用

    基于Comsol的埋地电缆电磁加热计算模型:深度解析温度场与电磁场分布学习资料与服务,COMSOL埋地电缆电磁加热计算模型:温度场与电磁场分布的解析与学习资源,comsol 埋地电缆电磁加热计算模型

    基于Comsol的埋地电缆电磁加热计算模型:深度解析温度场与电磁场分布学习资料与服务,COMSOL埋地电缆电磁加热计算模型:温度场与电磁场分布的解析与学习资源,comsol 埋地电缆电磁加热计算模型,可以得到埋地电缆温度场及电磁场分布,提供学习资料和服务, ,comsol;埋地电缆电磁加热计算模型;温度场分布;电磁场分布;学习资料;服务,Comsol埋地电缆电磁加热模型:温度场与电磁场分布学习资料及服务

    ibus-table-chinese-yong-1.4.6-3.el7.x64-86.rpm.tar.gz

    1、文件内容:ibus-table-chinese-yong-1.4.6-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ibus-table-chinese-yong-1.4.6-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    基于51单片机protues仿真的汽车智能灯光控制系统设计(仿真图、源代码)

    基于51单片机protues仿真的汽车智能灯光控制系统设计(仿真图、源代码) 一、设计项目 根据本次设计的要求,设计出一款基于51单片机的自动切换远近光灯的设计。 技术条件与说明: 1. 设计硬件部分,中央处理器采用了STC89C51RC单片机; 2. 使用两个灯珠代表远近光灯,感光部分采用了光敏电阻,因为光敏电阻输出的是电压模拟信号,单片机不能直接处理模拟信号,所以经过ADC0832进行转化成数字信号; 3. 显示部分采用了LCD1602液晶,还增加按键部分电路,可以选择手自动切换远近光灯; 4. 用超声模块进行检测距离;

    altermanager的企业微信告警服务

    altermanager的企业微信告警服务

    MyAgent测试版本在线下载

    MyAgent测试版本在线下载

    Comsol技术:可调BIC应用的二氧化钒VO2材料探索,Comsol模拟二氧化钒VO2的可调BIC特性研究,Comsol二氧化钒VO2可调BIC ,Comsol; 二氧化钒VO2; 可调BIC

    Comsol技术:可调BIC应用的二氧化钒VO2材料探索,Comsol模拟二氧化钒VO2的可调BIC特性研究,Comsol二氧化钒VO2可调BIC。 ,Comsol; 二氧化钒VO2; 可调BIC,Comsol二氧化钒VO2材料:可调BIC技术的关键应用

    C++学生成绩管理系统源码.zip

    C++学生成绩管理系统源码

    基于Matlab与Cplex的激励型需求响应模式:负荷转移与电价响应的差异化目标函数解析,基于Matlab与CPLEX的激励型需求响应负荷转移策略探索,激励型需求响应 matlab +cplex 激励

    基于Matlab与Cplex的激励型需求响应模式:负荷转移与电价响应的差异化目标函数解析,基于Matlab与CPLEX的激励型需求响应负荷转移策略探索,激励型需求响应 matlab +cplex 激励型需求响应采用激励型需求响应方式对负荷进行转移,和电价响应模式不同,具体的目标函数如下 ,激励型需求响应; matlab + cplex; 负荷转移; 目标函数。,Matlab与Cplex结合的激励型需求响应模型及其负荷转移策略

    scratch介绍(scratch说明).zip

    scratch介绍(scratch说明).zip

    深度学习模型的发展历程及其关键技术在人工智能领域的应用

    内容概要:本文全面介绍了深度学习模型的概念、工作机制和发展历程,详细探讨了神经网络的构建和训练过程,包括反向传播算法和梯度下降方法。文中还列举了深度学习在图像识别、自然语言处理、医疗和金融等多个领域的应用实例,并讨论了当前面临的挑战,如数据依赖、计算资源需求、可解释性和对抗攻击等问题。最后,文章展望了未来的发展趋势,如与量子计算和区块链的融合,以及在更多领域的应用前景。 适合人群:对该领域有兴趣的技术人员、研究人员和学者,尤其适合那些希望深入了解深度学习原理和技术细节的读者。 使用场景及目标:①理解深度学习模型的基本原理和结构;②了解深度学习模型的具体应用案例;③掌握应对当前技术挑战的方向。 阅读建议:文章内容详尽丰富,读者应在阅读过程中注意理解各个关键技术的概念和原理,尤其是神经网络的构成及训练过程。同时也建议对比不同模型的特点及其在具体应用中的表现。

    day02供应链管理系统-补充.zip

    该文档提供了一个关于供应链管理系统开发的详细指南,重点介绍了项目安排、技术实现和框架搭建的相关内容。 文档分为以下几个关键部分: 项目安排:主要步骤包括搭建框架(1天),基础数据模块和权限管理(4天),以及应收应付和销售管理(5天)。 供应链概念:供应链系统的核心流程是通过采购商品放入仓库,并在销售时从仓库提取商品,涉及三个主要订单:采购订单、销售订单和调拨订单。 大数据的应用:介绍了数据挖掘、ETL(数据抽取)和BI(商业智能)在供应链管理中的应用。 技术实现:讲述了DAO(数据访问对象)的重用、服务层的重用、以及前端JS的继承机制、jQuery插件开发等技术细节。 系统框架搭建:包括Maven环境的配置、Web工程的创建、持久化类和映射文件的编写,以及Spring配置文件的实现。 DAO的需求和功能:供应链管理系统的各个模块都涉及分页查询、条件查询、删除、增加、修改操作等需求。 泛型的应用:通过示例说明了在Java语言中如何使用泛型来实现模块化和可扩展性。 文档非常技术导向,适合开发人员参考,用于构建供应链管理系统的架构和功能模块。

    清华大学104页《Deepseek:从入门到精通》

    这份长达104页的手册由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的余梦珑博士后及其团队精心编撰,内容详尽,覆盖了从基础概念、技术原理到实战案例的全方位指导。它不仅适合初学者快速了解DeepSeek的基本操作,也为有经验的用户提供了高级技巧和优化策略。

    MXTU MAX仿毒舌自适应主题源码 苹果CMSv10模板.zip

    主题说明: 1、将mxtheme目录放置根目录 | 将mxpro目录放置template文件夹中 2、苹果cms后台-系统-网站参数配置-网站模板-选择mxpro 模板目录填写html 3、网站模板选择好之后一定要先访问前台,然后再进入后台设置 4、主题后台地址: MXTU MAX图图主题,/admin.php/admin/mxpro/mxproset admin.php改成你登录后台的xxx.php 5、首页幻灯片设置视频推荐9,自行后台设置 6、追剧周表在视频数据中,节目周期添加周一至周日自行添加,格式:一,二,三,四,五,六,日

    基于matlab平台的数字信号处理GUI设计.zip

    运行GUI版本,可二开

Global site tag (gtag.js) - Google Analytics