JS数据模板分离(告别字符串拼接)-template
刚开始在写第一个动态网页的demo时,由于html不多,便使用字符串拼接的方法添加到dom来渲染,可是在后来写某外卖app时也需要如此添加,打开代码一看几千行,突然感觉累觉不爱
一行行的拼接有这功夫别人项目都上线了。于是在苦苦寻找之下,发现了可以使用js模板来渲染,还可以跟html文件相分离,终于等到你,还好我没放弃。

话不多说,进入正题吧
首先我们要引入一个js插件,这便是underscore.js,这个东西的功能很强大,当我发现时感觉被压在身下无法喘气。

然后我们可以创建一个函数,记住这个函数,等下他有大作为,因为这样我们便可以多次调用来插入模板。
function _gettpl(tplName, data){
return _.template($('#' + tplName).html())(data);
};
接下来便是生成模板吧,先看下面代码,这个就是完整版了,插入以后就长这个样子。
<ul id=“wife”>
<li>
<p>我是模板</p>
</li>
</ul>
我们需要在html页面中添加<script type="text/template" id="man"></script>,将html元素全部塞进去,那么便已经生成模板了
这里要注意的是,在标签里的内容,一般情况下<script>标签智能补全的内容是type="text/javascript" 我们需要将其替换成type="text/template"。以及在里面命名一个id为“man”
<script type="text/template" id="man">
<li>
<p>我是模板</p>
</li> </script>
这样子就可以啦,心里是不是一万只草泥马奔腾而过?我拼死拼活拼接字符串,你两句就搞完了?不不不,大侠饶命,其实我们还没写完这个时候我们要在js文件中写下这么一句代码
$('#wife').html(_gettpl('man', {'data': data}));
这个时候就是真的完成了呢。你可能要问了,那Id=“wife“的孙子是谁,其实就是你模板插进去的父类啦”。
还不懂?那亲我一下就给你解释一遍

最后在总结一下流程:
1、静态页html构建完成后拿到数据
2、引入underscore.js(这个自己网上下载下来就可以了)
3、将需要数据替换的html放进script标签里(// <script type="text/template" id="xxx"> HTML模板 </script >)
4、在模板中的需要使用js的语法是以<% %>来包裹,例如循环
<% _.each( 需要遍历的数据,像data.xxx ,function(){ %>
HTML代码
<% }) %>
开始用<% %>包住第一部分代码,分行后里面html内容不需要再用<% %>包裹,正常填写,最后结尾的js代码再以<% %>包住就可以了
5、第三步script中的id,就是插入父级的id,通常在父级也会有一个id,例如 <ul id="aa"></ul>
模板是<script type="text/template" id="bb">
<li>需要插入的数据</li>
</script >
接下来在js里面便是写 将id=“bb”的html插入到id=“aa”的容器中。
6、js通常会定义一个函数,比如
function _gettpl(tplName, data){
return _.template($('#' + tplName).html())(data);
}
函数接受2个参数,tplName是传入的id,也就是需要插入容器的内容,id=“bb”,data就是你的数据了,接下来就可以将内容插进容器了
$('#aa').html(_gettpl('bb', {'data':data}))
这样子他就插进去了

还想看?不了不了,营养跟不上,先到这里。

JS数据模板分离(告别字符串拼接)-template的更多相关文章
- js扩展String.prototype.format字符串拼接的功能
1.题外话,有关概念理解:String.prototype 属性表示 String原型对象.所有 String 的实例都继承自 String.prototype. 任何String.prototype ...
- Mock.js——数据模板定义
1. 安装 npm install mockjs --save-dev //安装开发依赖 2. 数据模板定义规则 Mock.mock({...}) String: 'string|num1-num2' ...
- ajax+js数据模板+后台
.net 后台,ajax+js模板引擎的数据填充,制作无刷新分页 js模板用laytpl 待续...
- js基础---元素操作时字符串拼接
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- jquery.pagination.js数据无刷新真分页
定义一个全局的分页加载变量,并设置为true: var __isReSearch=true; 定义分页的一些数据: var __PageSize = 10; var __SearchCondition ...
- JS模板引擎:基于字符串拼接
目的 编写一个基于字符串拼接的js模板引擎雏形,这里并不会提供任何模板与数据的绑定. 基本原理 Javascript中创建函数的方式有多种,包括: 1. var func = function () ...
- 小程序公共模板template与公共js数据utils的引用实例
在小程序项目开发中,经常会遇到公共模板与公共js数据的调用,这里结合自己的项目为这一需求做一简单介绍 目录截图 现在是有一个评论版块需要在几个页面里共用 先将评论版块的wxml剔出来放在templat ...
- Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整
Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...
- Javascript模板及其中的数据逻辑分离思想(MVC)
#Javascript模板及其中的数据逻辑分离思想 ##需求描述 项目数据库的题目表描述了70-120道题目,并且是会变化的,要根据数据库中的数据描述,比如,选择还是填空题,是不是重点题,题目总分是多 ...
随机推荐
- 基于开源Red5搭建的视频直播平台
开始之前,为了便于大家了解Red5,此处引用网络文字,非原创 引言 流媒体文件是目前非常流行的网络媒体格式之一,这种文件允许用户一边下载一边播放,从而大大减少了用户等待播放的时间.另外通过网络播放流媒 ...
- C#同步、异步编程
同步编程public partial class Form1 : Form { public Form1() { InitializeComponent(); } //同步执行 private voi ...
- Redis---1、介绍
Redis简介: 是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求. 优点: 对数据高并发读写 对海量数据的高效率存储和访问 对数据的可扩展性和高可用行 ...
- 一、hive安装(内置数据库derby)
hive是一个数据仓库工具,建立在hadoop之上,它的存在是为了让大数据的查询和分析更加的方便.hive提供简单的sql查询功能,并最终转换为mapreduce任务执行. 一.环境 JDK1.8+官 ...
- 从Linux系统安装到Web应用启动教程
概述 本文讲述web应用服务器安装配置教程,其中包括:Linux系统安装,Mysql数据库安装配置,Redis安装配置,Tomcat安装配置,MongoDB安装配置,Linux JDK安装使用,Ngi ...
- 实习小结(三)--- 权限管理(RBAC)
这一周,大多数时间 用来做需求分析,细化每个页面需要实现的功能.由于这个项目需要四种身份登录查看,分别是学生,老师,领导,管理员.每个身份登入系统显示得页面都不相同,四个角色分析完成后,统计了一下页面 ...
- Java基础小结
JavaSE基础 本文为作者在学习和笔试题中遇到的小知识点总结,做以总结和备用. jdk的安装和配置环境变量 (1)以win10为例,右键此电脑,选择属性,进去系统设置,选择高级系统设置,进入环境变量 ...
- js函数的节流与防抖
一.防抖&节流 在前端开发中有一部分用户行为会频繁的触发事件执行,而对于DOM的操作.资源加载等耗费性能的处理,很可能会导致界面卡顿,甚至浏览器奔溃.函数的节流与防抖就是为了解决类似需求而产生 ...
- drupal7 用到的一些钩子简介
1.hook_user_delete($account) 可用于自定义模块中,当用户被删除时,可以自定义一些自己需要的处理动作 2.hook_mail_alter(&$message) 可用于 ...
- JS 对html标签的属性的干预以及JS 对CSS 样式表属性的干预
-任何标签的任何属性都可以修改! -HTML里是怎么写, JS就怎么写 以下是一段js 作用于 css 的 href的 代码 <link id="l1" rel= ...