`
zccst
  • 浏览: 3319271 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mustache.js基本使用(一)重要!

阅读更多
作者:zccst

模板已是第二次接触,第一次使用模板记得是在十分系统里渲染页面时使用,当时已做到熟练使用,但实际上仍不知道原因。

再次学习模板已不是从0开始,所以还算顺手,但毕竟还只限于使用,今天继续学习,希望这次能够更深入一些。



这次学习的是mustache.js,他的理念是让模板尽量保持简单,甚至连基本的逻辑判断都不需要用。

本文基本要点:
1,渲染

2,载入模板的几种方式

3,变量定义



官方地址:https://github.com/janl/mustache.js

以下是公共文件
<script type="text/javascript" src="jquery-1.11.1.js"></script>
<script type="text/javascript" src="mustache.js"></script>
<script type="text/javascript">
$(function(){

...

});

<div id="target">Loading...</div>
<script id="template" type="x-tmpl-mustache">
  Hello {{ name }}!
</script>



1,渲染
渲染形式单一,比如容易理解
var rendered = Mustache.render(template,obj);

两个参数:一个是模板html,一个是数据源对象。

一个返回值:渲染后的html



2,载入模板的几种方式
(1)使用直接字符串作为template
//参数template
var template = '{{title}} spends {{calc}}';

//参数obj
var obj = {
    title: "Joe",
    calc: function () {
        return 2 + 4;
    }
}

//mustache渲染
var rendered = Mustache.render(template,obj);

//将返回的内容添加到页面
$('#target').html(rendered);

总结:
模板渲染两个基本素材:template, obj。前者和后者都可以简单,也可以复杂
Mustache替换:var result = Mustache.render(template, obj);
渲染到页面:$("xxID").html(result);


(2)使用页面内script块作为template
//拿到template
var template = $('#template').html();

//预解析(可选步骤)
Mustache.parse(template); // optional, speeds up future uses

//渲染
var rendered = Mustache.render(template, {name: "Luke"});

//将渲染后的内容,添加到页面
$('#target').html(rendered);



(3)异步获取内容作为template

a, 使用$.get()方式获取
var obj = {};
$.get('template.mst', function(template){
    var result = Mustache.render(template, obj);
    $("xxID").html(result);
});



b, 在模块化项目中,还可以使用var tpl = require("path/to/xx.tpl");将模板加载到当前页面。然后再用如下方式:
//头部require文件
var Backbone = require('backbone'),
        Mustache = require('mustache'),
        tpl      = require('crownCommonKeyPreviewTpl');

        //具体在某个方法中使用
        var tpl_type = "crownCommonKeyPreview-Pc";
        if(device == 2){
        	tpl_type = "crownCommonKeyPreview-Mobile";
        }
        var html = "",
        	tplArr = $(tpl);
        for(var i=0; i<tplArr.length; i++){
        	var template = tplArr[i];
        	if($(template).html() && ($(template).attr("id") == tpl_type)){
        		html = Mustache.render($(template).html(), obj);
        	}
        }
        return html;

批注:在模块化项目中,require非常强大,相当于直接把模板文件载入到当前页面,由于模板文件中的格式是:
<script id="xx1" type="text/html">...</script>
<script id="xx2" type="text/html">...</script>
...
<script id="xxn" type="text/html">...</script>
所以使用$(tpl)后就是一个jQuery的模板对象数组了(array like)。
然后通过循环可以依次取出每一个模板,并通过$(item).attr("id")取出ID来做比较。

另外,对于空格换行(多行)jQuery也认为是一个TextNode,所以需要使用$(item).html()是否为空过滤掉。


批注:有一个坑是试图通过如下方式获取:
$(tpl).find("#crownCommonKeyPreview-Pc");
问题在于$(tpl)是一个jQuery对象数组,不是选择器。



总结:template有三种来源:
(1)直接字符串
(2)本页面中带ID的script
(3)异步获取





3,几种变量
最基本变量 :{{ company }}
原样输出变量:{{{ company }}}或{{ &company }}
嵌套用点变量:{{name.first}} {{name.last}}


如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    详解Javascript模板引擎mustache.js

    在JavaScript环境中,Mustache.js作为一个独立的库,可以通过npm或直接引入CDN链接进行使用。 在上述需求场景中,我们面临的问题是需要根据后端返回的数据动态生成一个下拉菜单,展示用户有权访问的各个子系统。...

    Vue.js interview questions and answers in 2023.docx

    Vue.js 组件是 Vue.js 应用程序的基本构成单位。每个组件都可以包含模板、脚本和样式。组件可以嵌套使用,实现复杂的 UI 布局。 9. Vue.js 模板 Vue.js 模板是组件的视图层,用于描述组件的 UI 结构。模板可以使用...

    JointJs.zip

    **标题与描述解析** 标题"JointJs.zip"表明这是一个与JointJS相关的压缩文件,很可能包含了使用JointJS库进行流程图绘制所需的所有...对于希望使用JointJS进行流程图绘制的开发者来说,这个压缩包是一个重要的起点。

    Vue 23 道面试题及答案.docx

    Vue.js 的最基本和核心的部分涉及“视图”层,因此可以通过逐步将 Vue 引入程序并替换“视图”实现来开始使用。由于其不断发展的性质,Vue.js 隐藏了内部实现,使得渲染数据变得容易。 声明式渲染是 Vue.js 的一个...

    实例解析Vue.js下载方式及基本概念

    Vue.js使用Mustache语法(双大括号{{ }})进行文本插值,这是数据绑定最常见的形式。除了文本插值,Vue.js模板语法还支持表达式,表达式的结果会被解析成字符串并渲染出来。Vue.js的指令(Directives)是带有“v-”...

    isomorphic-js:探索如何使用 Mustache 创建同构 javascript 堆栈的示例

    在这个示例中,我们将深入探讨如何使用Mustache模板语言来构建一个同构的JavaScript应用程序。 **Mustache模板引擎** Mustache是一个无逻辑的模板语言,这意味着它不包含任何控制结构,如循环或条件语句。这使得...

    javascript-client-generated.zip

    JavaScript是一种广泛使用的编程语言,主要应用于Web浏览器中的客户端脚本,用于增强用户体验、处理用户交互、动态更新内容以及与服务器进行异步通信(AJAX)。在现代Web开发中,JavaScript不仅是页面交互的核心,还...

    javascript-高性能javascript模版引擎-templateEngine.zip

    在“javascript-高性能javascript模版引擎-templateEngine.zip”这个压缩包中,我们很显然会发现一个关于创建高效JavaScript模板引擎的资源集合。下面我们将详细探讨JavaScript模板引擎的工作原理、优点、常见实现...

    Building Node Applications with MongoDB and Backbone.pdf

    - **Node.js**:作为后端服务器端的技术,它使用JavaScript语言,可以在服务器上运行JavaScript代码。 - **MongoDB**:一种非关系型数据库(NoSQL),特别适合处理大量非结构化数据,具有高可扩展性和灵活性。 - **...

    简单JS页面视图模板

    在前端开发中,JavaScript是一种非常重要的编程语言,用于构建交互式的网页应用。在这个"简单JS页面视图模板"中,我们可以看到一个基本的JavaScript页面视图的实现,它结合了HTML、CSS和JavaScript来创建动态的用户...

    C和C++常用工具类代码.pdf

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。cjson是一个用于C语言的JSON编解码库,能够实现JSON数据与C语言数据结构之间的相互转换。 6. kfifo ...

    基于JavaScript的模板引擎

    在JavaScript的世界里,有许多流行的模板引擎,如ejs、Handlebars、Mustache、Underscore.js的_.template等。这些模板引擎各有特点,但基本原理相似:解析模板字符串,编译成JavaScript函数,然后在运行时调用这个...

    js实现数据双向绑定

    数据双向绑定是前端开发中的一个重要概念,它使得视图(View)和模型(Model)之间的数据保持同步,当模型改变时,视图自动更新,反之亦然。这一特性在现代Web应用框架如Angular、Vue和React中广泛使用,大大提升了...

    Readme-generator:使用Node.js的自述文件生成器

    在软件开发中,自述文件(Readme)是项目的重要组成部分,它为用户提供项目的基本信息、安装指南、使用方法等关键内容。`Readme-generator` 是一个利用Node.js平台开发的工具,专用于自动化创建这些自述文件,以提高...

    jquery-tmpl

    总结来说,jQuery tmpl是jQuery生态中的一个重要组成部分,它提供了一种简洁的模板语言,帮助开发者快速地实现数据和视图的绑定。了解并掌握jQuery tmpl,将有助于提升你在前端开发中的模板处理能力。在实际项目中,...

    js示例经典收藏.rar

    JavaScript,简称JS,是一种广泛应用于Web开发的轻量级编程语言。这个名为"js示例经典收藏.rar"的压缩包文件很可能包含了一系列精选的JavaScript代码示例,旨在帮助开发者掌握和理解JavaScript的核心概念以及常见...

    JS商城源码

    【JS商城源码】是一个基于JavaScript编程语言构建的在线手表商城的前端源代码。这个项目主要是为了模拟一个手表销售的电子商务平台,虽然子网页数量不多,但已经包含了基本的商城功能,适合初学者学习和进一步扩展。...

    每循环5条添加一个样式(JQ前端技术分享)

    本篇将详细讲解如何使用JavaScript(JS)和jQuery(JQ)实现“每循环5条数据后添加一个样式”的功能。 首先,我们需要了解JavaScript的基本语法和jQuery库的使用。JavaScript是一种广泛用于网页和应用的脚本语言,...

    一个简单的招聘网站(毕业设计).zip

    3. **数据库设计**:网站的数据库设计是至关重要的,可能使用了MySQL、SQLite或MongoDB等数据库管理系统。数据库中至少应包含用户表、职位表、申请记录表等,需要理解关系型数据库或非关系型数据库的基本概念,以及...

    各种树状结构JS特效

    - **数据绑定**:如果数据存储在JSON或其他格式中,可以使用模板引擎(如Mustache或Vue.js)进行数据绑定,自动渲染树结构。 **4. 常见的树状结构JS库** - **jQuery UI Treeview**:基于jQuery的插件,提供基本的树...

Global site tag (gtag.js) - Google Analytics