首页 > 其他分享 >模板引擎 Handlebars.js

模板引擎 Handlebars.js

时间:2023-06-03 18:44:20浏览次数:47  
标签:服务器端 Handlebars js template var 模板

概述

Handlebars.js 是一个简单而强大的 JavaScript 模板引擎。它允许开发者通过定义模板和数据来生成动态的 HTML 页面。

Handlebars.js 基于 Mustache 模板语法,它提供了一些扩展和增强功能。并且开发者可以创建可重用的模板,并通过将数据传递给模板来生成最终的输出。这种分离数据和视图的方式使得应用程序的逻辑与界面呈现相互独立,提高了代码的可维护性和可扩展性。

官方网站 Github

特性

  1. 简洁易用:Handlebars.js 的模板语法简单易懂,类似于 Mustache 的语法。它使用双花括号({{}})来标识变量、表达式和控制结构。

  2. 数据绑定:Handlebars.js 支持数据绑定,可以将数据动态地插入到模板中。通过将数据对象传递给模板,可以使用 {{}} 语法在模板中引用数据的属性。

  3. 条件和循环:Handlebars.js 提供了条件语句(如 ifunless)以及循环语句(如 each),使得可以根据条件和数据集合来动态地生成内容。

  4. 局部模板和部分视图:Handlebars.js 允许定义局部模板和部分视图,可以在一个模板中引用其他模板,从而实现模块化和代码复用。

  5. 注释:Handlebars.js 支持注释,可以在模板中添加注释来提供代码的解释和说明。

  6. Helpers 扩展:Handlebars.js 允许定义自定义的 Helper 函数,用于处理和格式化数据,实现更复杂的模板逻辑。

  7. 客户端和服务器端支持:Handlebars.js 可以在客户端和服务器端运行。在客户端,它可以直接嵌入到 HTML 页面中,并通过 JavaScript 脚本来渲染模板。在服务器端,可以使用 Handlebars.js 与服务器端框架(如 Node.js)进行集成,以生成动态的 HTML 页面。

开始

安装

npm install handlebars
# or
yarn add handlebars

使用

const Handlebars = require("handlebars");
const template = Handlebars.compile("Name: {{name}}");
console.log(template({ name: "Nils" }));

简单示例

<!-- template.hbs -->
<div class="entry">
  <h1>{{title}}</h1>
  <div class="body">
    {{body}}
  </div>
</div>
//index.js
var source = fs.readFileSync("./template.hbs");
var template = Handlebars.compile(source);
var context = { title: "My New Post", body: "This is my first post!" };
var html = template(context);
console.log(html)

结果

<div class="entry">
  <h1>My New Post</h1>
  <div class="body">
    This is my first post!
  </div>
</div>

其他方法

if-else

{{#if condition}}
  <!-- 条件为真时的内容 -->
{{else}}
  <!-- 条件为假时的内容 -->
{{/if}}

for

{{#each items}}
  <!-- 遍历 items 数组的每个元素 -->
  {{this}} <!-- 当前元素的值 -->
{{/each}}

标签:服务器端,Handlebars,js,template,var,模板
From: https://www.cnblogs.com/mydyxy/p/17454375.html

相关文章

  • 使用 Node.js 连接 MySQL
    概述当使用Node.js开发Web应用程序时,经常需要与数据库进行交互来存储和检索数据。MySQL是一个流行的关系型数据库管理系统,它提供了强大的功能和性能。本文将介绍如何使用Node.js连接MySQL数据库,并展示一些常见的操作示例。开始在这里我们将使用Node.js的mysql2库来连......
  • c# xml、json相互转换
    stringjsonString="{\"Table\":{\"Row\":[{\"Name\":\"张三\",\"Age\":\"20\"},{\"Name\":\"李四\",\"Age\":\"25\"}]}}";......
  • 3、利用初始化好的虚拟机当作模板,用于克隆
    利用初始化好的虚拟机当作模板,用于克隆第一步:先拷贝个虚拟机当作模板[root@ubuntimages]#virt-clone-orocky8-f/var/lib/libvirt/images/rocky8-template.qcow2-nrocky8-templateAllocating'rocky8-template.qcow2'......
  • 4、虚拟机单机、集群的克隆、删除脚本(以初始化好的虚拟机为模板)
    虚拟机克隆、删除脚本[root@ubunt~]#catclone.sh#!/bin/bash##./etc/init.d/functions(如果是ubuntu,注释此行)Red="\e[1;31m"Purple="\e[1;35m"Green="\e[1;32m"Blue="\e[1;36m"Yellow="\e[1;33m"End="\e[0m&......
  • json结构比较问题
    两个json字符串结构一样,但是单纯比较字符串不一样解决:fastjson2这个依赖亲测直接equals方法就可以比较出来,但是json得要JSON.parseObject或者parseArrary解析出来的对象,如果是自己造的对象,可以先转字符串再转对象......
  • 面试题:如何理解 JS的异步?
    JS是一门单线程的语言,这是因为它运行在浏览器的渲染主线程中,而渲染主线程只有一个而渲染主线程承担着诸多的工作,渲染页面、执行JS都在其中运行。如果使用同步的方式,就极有可能导致主线程产生阻塞,从而导致消息队列中的很多其他任务无法得到执行。这样一来,一方面会导致繁忙的主线......
  • 时间戳转化“刚刚”、“几小时前”、“几天前”、“几周前”等形式的js代码片段
    代码片段(可用于vue过滤器)functiongetTimeStr(timestamp){ constnow=newDate(); constdate=newDate(timestamp); constdiff=(now-date)/1000;//毫秒转换为秒 if(diff<60){   return"刚刚"; }elseif(diff<3600){   returnMath.f......
  • nodejs使用eggjs创建项目,接入influxdb完成单表增删改查
    转载请注明出处:1.Eggjs特性:Eggjs是Node.js服务端应用开发框架,它提供了一套约定,使开发者能够快速搭建、开发和部署应用。以下是Egg.js的一些特性和作用:框架内置了基于约定的目录结构、约定的扩展机制和一些常用的插件,可以帮助开发者快速搭建应用。Egg.js遵循MVC......
  • 深度解析JSTL标签库
    1. 什么是JSTL标签库?  53  - Java Standard Tag Lib(Java标准的标签库)  - JSTL标签库通常结合EL表达式一起使用。目的是让JSP中的java代码消失。  - 标签是写在JSP当中的,但实际上最终还是要执行对应的java程序。(java程序在jar包当中。)2. 使用JSTL标签库的步骤:532.1......
  • js使用xlsx插件导出table中的数据
    js代码需要引入<scripttype="text/javascript"src="static/js/xlsx.core.min.js"></script>//导出excelfunctiontoExcel(){varblob=sheet2blob(XLSX.utils.table_to_sheet($('table')[0]));......