[vue] 你知道vue的模板语法用的是哪个web模板引擎的吗?说说你对这模板引擎的理解

[vue] 你知道vue的模板语法用的是哪个web模板引擎的吗?说说你对这模板引擎的理解

模板引擎:

负责组装数据,以另外一种形式或外观展现数据。
优点:

可维护性(后期改起来方便);
可扩展性(想要增加功能,增加需求方便);
开发效率提高(程序逻辑组织更好,调试方便);
看起来舒服(不容易写错)

解答
在这里插入图片描述

git地址: https://github.com/janl/mustache.js
模板引擎技术是非常有用的,所以它不是一个冷门的知识,反而是需要我们去了解的;
所以我们通过github的安装指令,一步一步的来实现基本的api
我搜查了很多资料,网上并没有一个使用npm包的方式来做demo,都是使用render来执行渲染,鉴于我们日常工作中使用npm比较多,我做一版npm的demo
首先npm init初始化一个空项目;
然后安装mustache

npm i mustache -s -d

在package.json中填写如下内容:

"scripts": {"build": "mustache dataView.json myTemplate.mustache>public/output.html",},

如同这个指示看到的一样,我们需要创建一个json文件,这个文件就是变量配置文件,还需要创建一个模板文件,这个模板文件相当于执行render函数的文件,这种方式更加一目了然;
我们创建它们,我使用了vscode,并且装了相关的mustache的插件,所以语法会有提示;
在这里插入图片描述
我们首先在json文件中写入一个对象,里面写一个值,然后在模板文件中使用{{}}来执行渲染;

然后执行

npm run build

就会发现在public下面生成了一个html文件,如果报错,说明你的文件目录跟我的不一样

我们在json文件中,写入了这么多值,有普通的值,有布尔值,有数组等等

"age": "19","html": "<p>123</p>","isTrue": true,"thisIsObject": {"name": "shenhao","age": "19"},"isArray": [{"name" : "shenhao"},{"name" : "shenhao"},{"name" : "shenhao"}]}

我们在模板中写出了这些代码,我在模板中写了一个简单的html

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title></head><body>{{name}} 有一个 {{&html}}  <br><hr>{{thisIsObject.name}} {{thisIsObject.age}}<br><hr>-webkit- {{#isTrue}} 如果是真就显示了 {{/isTrue}}<br><hr>循环一下下面的内容, 如果是数组,可以用.来表示循环的每一个元素{{#isArray}} {{name}} {{/isArray}}<br><hr>{{!^}}与{{!#}}相反,如果变量是null、undefined、 false、和空数组讲输出结果</body></html>

我们来讲解一下基本的api

{{name}}:会在json中查询对应的值,并且渲染
{{&html}}: html在json中如果式一个html标签,可以用这样的方式进行转义 (类似vue中的v-html)
{{#boolean}} 和 {{/boolean}}: 是一个组合,如果boolean为真那么它们之间的内容会渲染,否则不会
{{^boolean}}: 和上面用法一样,只不过是上面的else
{{object.name}}: 同样支持对象键值对的方式获取
{{#array}} 和 {{/array}}: 如果这样写是一个数组,那么不仅有判断boolean的真假,它会迭代中间可以写迭代中的每一个元素,每一个元素可以用{{.}}来获取,如果要获取迭代中的内容是一个键值对,那么可以直接使用{{name}}

这就是mustache简单的用法,上面有demo,你们可以对着demo敲一遍就能非常easy的理解了;
希望理解了这个技术,你可以在其他语言同样可以用到它!

个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家发表自己的见解

主目录

与歌谣一起通关前端面试题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 面向对象 新式类和经典类

# 经典类写法# schoolMember.__init__(self, name, age, sex)# 新式类写法super(Teather, self).__init__(name, age, sex) class schoolMember(object):学校成员分类member 0def __init__(self, name, age, sex):self.name nameself.age ageself.sex sexself.enroll() # …

支付宝支付—沙箱环境使用

前言 支付宝支付—沙箱环境使用「本文」支付宝支付-支付宝PC端扫码支付支付宝支付-手机浏览器H5支付 支付宝提供的沙箱环境&#xff0c;入门门槛非常低&#xff0c;不需要商家认证那一套&#xff0c;这一点对开发者是非常友好的&#xff0c;可以直接在本地运行测试&#xff0…

Virut样本取证特征

1、网络特征 ant.trenz.pl ilo.brenz.pl 2、文件特征 通过对文件的定位&#xff0c;使用PEID查看文件区段&#xff0c;如果条件符合增加了7个随机字符区段的文件&#xff0c;则判定为受感染文件。 3、受感染特征 参考&#xff1a; 【病毒分析】Virut.ce-感染型病毒分析报告 htt…

IDEA启动项目报错:Error:(1, 1) java: 非法字符: '\ufeff'

1. 报错信息 IDEA导入支付宝支付测试Demo启动报错&#xff0c;报错信息如下&#xff1a; Error:(1, 1) java: 非法字符: \ufeff Error:(1, 10) java: 需要class, interface或enum经测试&#xff0c;MyEclipse并没有报同样的错误信息。 2. 解决方法 在IDEA右下角将编码改为GBK&a…

[js] 请使用js实现一个秒表计时器的程序

[js] 请使用js实现一个秒表计时器的程序 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv&quo…

IDEA中导入支付宝电脑网站支付测试Demo遇到的错误

前言 官方推荐Demo的运行环境为Eclipse&#xff0c;本次主要针对IDEA中导入遇到的一些问题 本地环境&#xff1a;IDEA Tomcat8.5 1、错误一 Error:(1, 1) java: 非法字符: \ufeff Error:(1, 10) java: 需要class, interface或enum请参考这篇文章&#xff1a;https://www.cnblo…

表格

表格划分三部分&#xff1a;表头&#xff0c;主体&#xff0c;教主 thead&#xff1a;表格的头&#xff08;放标题之类的内容&#xff09; tbody&#xff1a;表格的主体&#xff08;放数据主体&#xff09; tfoot&#xff1a;表格的脚&#xff08;放表格的脚注&#xff09; 转载…

[js] 请使用js实现商品的自由组合,并说说你的思路

[js] 请使用js实现商品的自由组合&#xff0c;并说说你的思路 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

maven打包:找不到符号 符号: 方法 getXxx()

先交代一下我这边的情况&#xff0c;如若跟你想要的结果不符&#xff0c;勿喷。 聚合项目 使用过 mvn install 指令 聚合项目&#xff0c;主模块 A 需要打 war 包&#xff0c;其他模块 BCD 需要打为 jar 包作为其依赖。 先看一下报错截图&#xff1a; 这次的问题主要在于之前在…

DHCP的4步租约过程

请尊重原作者 &#xff1a;http://blog.51cto.com/yuanbin/109574 DHCP租约过程就是DHCP客户机动态获取IP地址的过程。 DHCP租约过程分为4步&#xff1a; ①客户机请求IP&#xff08;客户机发DHCPDISCOVER广播包&#xff09;&#xff1b; ②服务器响应&#xff08;服务器发DHCP…

支付宝支付-支付宝PC端扫码支付

前言 支付宝支付—沙箱环境使用支付宝支付-支付宝PC端扫码支付「本文」支付宝支付-手机浏览器H5支付「待写」 PC端扫码支付&#xff0c;其实就是就是 电脑网站支付&#xff0c;本文基于支付宝沙箱环境&#xff0c;不了解的可以看一下上边的链接。 废话不多说&#xff0c;直接进…

支付宝支付-手机浏览器H5支付

前言 支付宝支付—沙箱环境使用支付宝支付-支付宝PC端扫码支付支付宝支付-手机浏览器H5支付「本文」 手机浏览器支付&#xff0c;用户在安装支付宝APP的情况下&#xff0c;调用手机网站支付接口默认会唤起支付宝钱包支付&#xff0c;接下来通过运行官方Demo进行测试。 本文开发…

uniapp添加网站favicon文件

前言 uniapp 默认创建的项目并没有给我们提供加上网站 favicon 的 ”机会”&#xff0c;但其实官方已经给出解决方法了&#xff0c;使用的是 自定义模板 自定义模板的场景&#xff0c;通常有以下几种情况&#xff1a; 调整界面 head 中的 meta 配置补充 SEO 相关的一些配置「仅…

微信支付—微信H5支付「非微信内部浏览器-QQ/UC浏览器等」

前言 微信支付-微信H5外部浏览器支付「本文」微信H5内部浏览器支付「待写」PC端扫码支付「待写」 一直计划着写一写微信支付相关的文章&#xff0c;希望能加深一下自己的印象&#xff0c;拖了一天又一天… 最近终于空出时间来填坑了&#xff0c;我将文章分为微信H5外部浏览器支…

[js] 如何避免JS浮点运算的精度问题(例:0.1+0.7=0.7999999999999999)

[js] 如何避免JS浮点运算的精度问题&#xff08;例&#xff1a;0.10.70.7999999999999999&#xff09; function precision(num1,num2){num1Length num1.toString().length;num2Length num2.toString().length;let len num1Length > num2Length ? num1Length : num2Len…

多线程小结(1)

原文出处 定义就不多说了&#xff0c;直接上代码 1 /// <summary> 2 /// 单线程应用 3 /// </summary> 4 class Program 5 { 6 static void Main(string[] args) 7 { 8 Console.WriteLine("进入主线程"); 9 …

uniapp中使用微信jssdk

在做自定义分享时&#xff0c;用到了微信jssdk&#xff0c;记录一下。 声明&#xff1a;本文演示uniapp中使用jssdk&#xff0c;示例为网页自定义分享 npm方式使用下方指令进行安装&#xff0c;正文部分为非npm方式。 npm install jweixin-module --save 1、下载导入jssdk文件…

微信支付—微信H5支付「微信内部浏览器」

前言 微信支付-微信H5外部浏览器支付微信支付-微信H5内部浏览器支付「本文」微信支付-PC端扫码支付「待写」 本篇是微信支付系列的第二篇、微信H5内部浏览器支付&#xff0c;关于微信H5外部浏览器唤起微信APP支付&#xff0c;请参考上一篇文章。 开发环境&#xff1a;Java Spr…

微信支付—微信H5支付「PC端扫码支付」

前言 微信支付-微信H5外部浏览器支付微信支付-微信H5内部浏览器支付微信支付-PC端扫码支付「本文」 本篇是微信支付系列的第三篇&#xff0c;PC端扫码支付。 开发环境&#xff1a;Java SpringBoot Vue WxJava(开源SDK) 流程补充&#xff1a;关于微信PC端扫码支付&#xff0c;…

前后端分离项目,后端是如何处理前端传递的token?

前后端分离项目中&#xff0c;在不使用 SpringSecurity、Shiro 安全框架的情况下&#xff0c;后端是如何处理前段传递的 token 的呢&#xff1f; 简单说一个场景&#xff0c;在一个非常小的项目中&#xff0c;由于业务逻辑比较简单&#xff0c;也没有啥安全要求&#xff0c;所以…