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

模板引擎 Handlebars.js

时间:2024-04-03 18:25:15浏览次数:19  
标签:服务器端 Handlebars js template var 模板

模板引擎 Handlebars.js

 

概述

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

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

官方网站 Github

特性

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

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

  3. 条件和循环:Handlebars.js 提供了条件语句(如 if 和 unless)以及循环语句(如 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/sexintercourse/p/18113298

相关文章

  • 使用 Node.js 连接 MySQL
    使用Node.js连接MySQL 概述当使用Node.js开发Web应用程序时,经常需要与数据库进行交互来存储和检索数据。MySQL 是一个流行的关系型数据库管理系统,它提供了强大的功能和性能。本文将介绍如何使用Node.js连接MySQL数据库,并展示一些常见的操作示例。开始在这里我们将......
  • RobotJS截取屏幕screen.capture踩坑
    RobotJS截取屏幕screen.capture踩坑 调用robot.screen.capture()或robot.screen.capture(0,0,1920,1080),返回的Bitmap对象是色彩格式是BGR色彩,这导致了如果未经处理就直接生成图像,色彩会产生错误,只需将BGR色彩转换成RGB色彩即可。constrobot=require('robotjs');con......
  • 使用NodeJS将数据保存成JSON文件
    使用NodeJS将数据保存成JSON文件 在平时我需要把后端一些object变量保存至本地,可以这样做:constexpress=require("express");constapp=express();constserver=require("http").createServer(app);constfs=require('fs');app.use(express.static("publ......
  • Jmeter使用json提取器进行模糊提取的方法
    根据JsonPath的官方文档:GitHub-json-path/JsonPath:JavaJsonPathimplementation即下图:若需要对既有的json内容进行模糊匹配,需要使用以上多种方式,但是更建议使用正则匹配的方式。 $..results[?(@.name=~/.*CICD/i)].name表示对results中的name值为CICD结尾的内容进行......
  • node.js 代码执行时间的实现
    基础实现//记录开始时间varstartTime=performance.now();//要执行的代码for(leti=0;i<1000;i++){console.log("第"+(i+1)+"次循环");}//记录结束时间varendTime=performance.now();//计算执行时间varexecutionTime=endTime-startTi......
  • vue项目打包发现index.js加载了两次?差别在于请求头purpose:prefetch
    上线后打开f12,开启禁用缓存=>发现index.js加载了两次;6.6M直接双倍流量;一番研究得知:vue-cli打包时,会将一些文件preload和prefetch;(1)preload(预先加载文件)app.jsvendor.js(2)prefetch(闲时加载)index.js/router懒加载独立打包的文件【就是那串注释标明打包在xx模块用的】再者:启......
  • json字符串重复转义问题
    若后台返回的是一个json字符串格式的值,我们首先做的是先用JSON.parse()转化成json数组,然后再通过点的方式取到里面的值但是在实际使用过程中,会发现有重复转义的问题,第一次操作正常,第二次点击其他按钮后,json字符串前就多了一个\,所以在进行parse之前,要先用replace()去除\ 一、使......
  • Python框架下的qt设计之JSON格式化转换小程序
    JSON转换小程序代码展示:主程序代码:fromPyQt6.QtWidgetsimport(QApplication,QDialog,QMessageBox)importsysimportjsonclassMyJsonFormatter(jsonui.Ui_jsonFormatter,QDialog):#jsonui是我qt界面py文件名def__init__(self):supe......
  • 【C/C++】VsCode调试配置tasks.json和launch.json
    前段时间配大作业环境改了很多配置,发现tasks.json和launch.json经常令自己很迷惑。网上找的配置有时会有各种各样的问题,在此记录一下上学期配好的配置文件,日后有时间再详细研究研究tasks.json:{"version":"2.0.0","tasks":[{"type":"shell",......
  • 如何判断JS类型,快速上手前端开发
    注意1.nulltypeofnull//“object”因为历史遗留的原因。typeofnull尝试返回为null失败了,所以要记住,typeofnull返回的是object。2.NaN特殊值NaN返回的是“number”typeofNaN//“number”3复杂数据类型而复杂数据类型里,除了函数返回了"function"其他均返回......