作为一名前端开发工程师,你必须掌握的WEB模板引擎:Handlebars

作为一名前端开发工程师,你必须掌握的WEB模板引擎:Handlebars

一.为什么需要使用模板引擎?

关于为什么要使用模板引擎,按照我常对学生说的一句话就是:不用重复造轮子.。

简单来说,模板最本质的作用是“变静为动”,一切利于这方面的都是优势,不利于的都是劣势。

要想很好地实现“变静为动”的目的,有这么几点:

1. 可维护性(后期改起来方便);

2. 可扩展性(想要增加功能,增加需求方便);

3.开发效率提高(程序逻辑组织更好,调试方便);

4.看起来舒服(不容易写错);

从以上四点来看,前端模板引擎体现的优势都不是一点两点的。

其实最重要的一点就是:视图(包括展示渲染逻辑)与程序逻辑的分离,分离的好处太多了,比如说后期的维护修改代码,增加代码,调试代码,和应用开发模式(MVC、MVVM)都方便很多。

二. 选择Handlebars的原因

1. 全球最受欢迎的模板引擎

Handlebars是全球使用率最高的模板引擎,所以当之无愧是全球最受欢迎的模板引擎。

Handlebars在许多前端框架中都被引入,比如在MUI和AmazeUI等框架,都推荐使用Handlebars。

以AmazeUI为例,AmazeUI的文档中专门为Web组件提供了其Handlebars的编译模板

2. 语法简单

Handlebars的基本语法极其简单,使用{{value}}将数据包装起来即可,Handlebars会自动匹配响应的数值和对象.以下是一个最简单的模板:

三.使用Handlebars介绍

1. 下载Handlebars

通过Handlebars官网下载: http://handlebarsjs.com./installation.html

通过npm下载: npm install --save handlebars

通过bower下载: bower install --save handlebars

通过Github下载: https://github.com/daaain/Handlebars.git

通过CDN引入:https://cdnjs.com/libraries/handlebars.js

2. 引入Handlebars

通过<script>标签引入即可,和引入jQuery库类似:

3. 创建模板

  1. 步骤一: 通过一个<script>将需要的模板包裹起来
  2. 步骤二: 在<script>标签中填入type和id
  • type类型可以是除text/javascript以外的任何MIME类型,但推荐使用type="text/template",更加语义化
  • id是在后面进行编译的时候所使用,让其编译的代码找到该模板.
  1. 步骤三: 在<script>标签中插入我们需要的html代码,根据后台给我们的接口文档,修改其需要动态获取的内

4. 在JS代码中编译模板

以上述代码为例进行解释:

  1. 步骤一: 获取模板的内容放入到tpl中,这里$("#myTemplate")中填入的内容为你在上一步创建模板中所用的id.
    1. 提醒: 这里我使用的jQuery的选择器获取,当然,你可以使用原生javascript的DOM选择器获取,例如:docuemnt.getElementById(‘myTemplate‘)和document.querySelector(‘#myTemplate‘)
  2. 步骤二: 使用Handlebars.compile()方法进行预编译,该方法传入的参数即为获取到的模板
  3. 步骤三: 使用template()方法进行编译后得到拼接好的字符串,该方法传入的参数即为上一步预编译的模板
  4. 步骤四: 将编译好的字符串插入到你所希望插入到的html文档中的位置,这里使用的是jQuery给我们提供的html()方法.同样,你也可以使用原生的innerHTML

四.实际运用中5个常用功能

1.Templates

当您引入库之后,我们可以愉快的书写模板了,推荐的方式是通过特殊type的script标签来添加模板,type属性是非常重要的,否则浏览器会将它们看做javascrip解析。

模板具有一个很容易理解的语法,可以使用html、普通文本和表达式,表达式通常被包含在两对或三对花括号里,可以包含变量或功能函数。模板需要编译之后才能使用,如下面代码所示,注意一点,我们使用了jquery仅仅为了方便dom操作,handlebars可以脱离jquery良好工作。

2. Expressions

上面所示的例子,表达式中的任何html代码将会被自动忽略,这是一个非常实用的性能,但是有的时候我们需要解析html,那么就要用三个花括号{{{ }}},如下面代码所示。

另外,handlebars表达式允许嵌套值,可以方便我们访问javascript对象的任何值。

3. Context

Handlebars利用了Mustache的强大特性,context就是其中之一。我们可以把需要传递的数据放在这个javascript对象中,使用#each、#with等方法可以方便的使用该对象的数据。看了下面这个案例,那就明白了

4. Helpers

Handlebars不允许在模板中使用javascript,而是提供了一些列的功能函数(helpers),可以在模板中调用,方便代码重用和创造复杂模板。使用表达式调用helpers的格式类似如此,{{helpername}},同时也可以传递参数,{{helpname 12345}}。

开发新的helper,使用registerHelper function,下面代码演示了如何创建新的功能函数,如何使用内置的功能函数

5. Block helpers

Block helpers像普通的功能函数一样,但是有开始和结束标签(类似于内置的#if、#each等),可以修改包含的html的内容。创建更为复杂一些,当时功能更加强大。经常使用它们重复使用功能、创建一大段可重用的html等。

同样使用Handlebars.registerHelper()创建block helper,不同的是我们需要使用第二参数,回调函数。看看下面的代码

现在你基本上了解了handlebars的常用功能,同样通过Handlebars.js-官方网站,可以获取更多案例、官方文档

地址:http://handlebarsjs.com/

最后

模板引擎是我们做前端开发必备的一个知识,对于我们快速开发和做出更加健全的优秀代码都是有帮助的。
我在《8个要点教你轻松写出优秀Javascript代码》里面有讲过怎么写好我们的JavaScript代码,大家可以去看一下。

原文地址:https://www.cnblogs.com/kkdn/p/9167545.html

时间: 2024-10-08 14:53:00

作为一名前端开发工程师,你必须掌握的WEB模板引擎:Handlebars的相关文章

我也想成为一名出色的web前端开发工程师

随着互联网的发展,正式的前端工程师角色被行业认可,到了2010年,互联网开始全面进入移动时代,前端工程师的地位越来越重要,前端领域的技术发展也越来越快,各种新的思想.设计模式.工具和平台都快速发展,对前端工程师的技能要求也越来越高. 何为前端工程师?前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.它要求前端开发工程师不仅要掌握基本的Web前端开发技术,网站性能优化.SEO和服务器端的基础知识,而且要学会运用各种工具进行辅助开发以及理论层面的知识,包括代码的可维护性.组件

前端开发工程师,该学学什么技能?

Web前端开发工程师是一个很新的职业,在国内乃至国际上真正开始受到重视的时间不超过7年.Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征.在互联网的演化进程中,网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主. 简介 2005年以后,互联网进入Web 2.0时代,各种类似桌面软件的Web应用大量涌现,网站的前端由此发生了翻天覆地的变化.网页不再只是承载单一的文字和图片,各种丰富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供

前端开发工程师和美工 知识需求的区别

摘要:很多公司甚至是多数以互联网网站为主要业务的公司都会把“美工”的概念搞混淆,通常这些公司都会把网页设计+网页制作的人员统称为“美工”.而一家成熟的互联网公司则会把网站方面的人才规划的比较详细,如UED团队(用户体验设计,英文User Experience Design的缩写),其中详细划分成了“交互设计”.“视觉设计”.“前端开发”.“用户研究”.“文案”等职位.今天主要就为了这个话题,与大家分享一下“美工”与“前端”之间的职能区别… 一. 什么是美工? 美工:意为美术工程师(Art Eng

腾讯web前端开发工程师笔试题及答案

1. 如何实现事件委托? 首先要知道什么是事件委托. 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少遇到这么多li的情况),为每个li添加事件侦听就会对页面性能产生很大的影响. 就像下面这段代码: <!DOCTYPE HTML><html><head><meta charset="utf-8" /><ti

HTML5前端开发工程师工资为什么那么高?

现代社会的就业压力可以说是非常的大,大学毕业生一抓一大把,要是没有一技之长很难在这个社会中立足,所以为了能够跟上时代的脚步,就必须掌握一个特长,就目前的发展来说,企业对于HTML5前端开发人才需求量可以说是非常的大.那么HTML5前端开发工程师工资为什么那么高呢? 越来越多的企业开始注重到用户体验,小到企业网站.个人主页,大到政府部门,都是通过网站向外界展示形象.传播信息,网站离不开HTML5前端开发人员,所以学习HTML5前端开发在当前社会里非常受用,工资也就越来越高. HTML5前端开发工程

怎么才能成为优秀的前端开发工程师?

怎样才能成为优秀的前端开发工程师 很多刚入门的前端攻城师会有一个疑问:如何才能成为一名优秀的前端工程师呢?其实这个问题说大也大,说小也小,展开了说可以写一本书.当然我相信大部分人并不希望去读一本厚厚的书,大道至简,下面总结的几条方法或许能成为走向优秀前端的进阶之路. 1. 多写.很多问题都是积累得来的.写了,遇到了,才能去真正理解解决方案,才会随着自己的不断成长而有进步.别人问我为什么知道那么多 CSS 兼容解决方案,为什么一看就出的时候,我只能告诉他,我写了 20 几个 Wordpress 主

前端开发工程师的发展方向

通过对HTML5职业岗位类别的基本介绍,能够让学习HTML5的小伙伴们有自己的职业规划.可以通过职业意向决定自己的学习侧重点:也可以通过自己学习的知识定向自己的职业岗位. 学习一门新的知识,我们需要了解的不仅仅是知识本身,还应该有为什么学习或是学习之后有什么用之类的疑问.而对于以后要靠学习的知识来工作的人而言这点尤为重要,毕竟以后可是要靠它来谋生路滴.往简单的说,要是连自己学习的东西以后能够干什么都不知道的话,那又如何运用所学习的知识了.所以我们在学习HTML5之前,对于以后能够从事的工作岗位也

前端开发工程师如何在2013年里提升自己【转】--2016已更新升级很多何去何从?

大部分人非常在意个人在技术上的提升.但是保持对新技术的了解是一项不小的挑战, 毕竟我们需要的信息在数量上过于庞大.2012年里,伴随着前端发展的是大量的革命性突破和对前端的重新定义. 我们在实践的路上飞速前进,具体的进步体现在使用抽象化,优秀的代码质量,维护性上的提升以及更好的性能.如果你实在忙到没有时间来跟上最新的技术,不用担心. 随着假日的来临,我们就有了一些空闲的时间可以自己支配,我想,如果我把我收集的前端相关的精品讨论列表分享出来,那一定会对大家有一些帮助.你不需要把所有的都阅读一遍,但

浅谈前端开发工程师与美工的区别

一. 什么是美工?     美工:意为美术工程师(Art Engineer),一般出身于艺术美术院校的艺术设计专业居多.     根据工作性质美工一般分为平面美工.三维美工.网页美工三大类.     平面美工是由美工用Fireworks 或者 Photoshop 设计出平面外观.     三维美工是由美工用3DMAX等工具进行三维角色模型设计,道具模型设计,环境场景模型设计,包装设计等.     网页美工是美工用Dreamwerver等网页编辑软件把已经设计好的平面效果图,制做成HTML静态网页