[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…

[vue] 你知道v-model的原理吗?说说看

[vue] 你知道v-model的原理吗&#xff1f;说说看 v-model 為一個語法糖&#xff0c;Vue 會默認使用一個名為 value 的 prop&#xff0c;以及名為 input 的事件。 為了避免不同的 value 有不同的作用&#xff0c;現在可以使用下面的方式自訂義自己想要的 v-model 行為。 mode…

Virut样本取证特征

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

[vue] 你有使用过vue开发多语言项目吗?说说你的做法?

[vue] 你有使用过vue开发多语言项目吗&#xff1f;说说你的做法&#xff1f; 使用Vue-i18n 加载不同的语言配置文件, 重要是初始化时&#xff0c;判断当前语言环境&#xff0c;要想好存储方案 采用i18n来解决国际化问题&#xff0c;关于语言环境的存储方案&#xff0c;看到有…

ES6必知必会 (七)—— Generator 函数

Generator 函数 1.Generator 函数是 ES6 提供的一种异步编程解决方案&#xff0c;语法行为与传统函数完全不同&#xff0c;通常有两个特征&#xff1a; function关键字与函数名之间有一个星号&#xff1b; 函数体内部使用yield表达式&#xff0c;定义不同的内部状态 //一个简单…

[vue] 在使用计算属性的时,函数名和data数据源中的数据可以同名吗?

[vue] 在使用计算属性的时&#xff0c;函数名和data数据源中的数据可以同名吗&#xff1f; 莫名其妙的问题。可以同名&#xff0c;但data会覆盖methods。并且本就不该同名&#xff0c;同名说明你命名不规范。然后解释为什么会覆盖&#xff0c;因为Props、methods、data、comput…

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…

[js] 模拟 localStorage 时如何实现过期时间功能

[js] 模拟 localStorage 时如何实现过期时间功能 1.存储时记录下有效截止时间 2.取数据时判断是否超过有效时间,在有效期内则返回,不在则提示或返回空并且将其删除class MyStorage {get(key) {const wrapValue localStorage.getItem(key)if (wrapValue null) {return undefi…

表格

表格划分三部分&#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…

[js] js中的undefined和 ReferenceError: xxx is not defined 有什么区别?

[js] js中的undefined和 ReferenceError: xxx is not defined 有什么区别&#xff1f; undefined是变量已声明&#xff0c;但未赋值 ReferenceError: xxx is not defined 是xxx未声明&#xff0c;使用了不存在的变量 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端…

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

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

[js]JavaScript Number.toPrecision() 函数详解

[js]JavaScript Number.toPrecision() 函数详解 JavaScript: numberObject.toPrecision( [ precision ] ) 如果没有提供precision参数或其值为undefined&#xff0c;则将转而调用toString()方法进行处理。 如果提供了参数&#xff0c;则参数precision必须介于 [1, 21] 之间&…

记一次sql优化之索引的引用

sql 优化时&#xff0c;一张200条数据的表&#xff0c;觉得数据量太少根本无须加索引&#xff0c;在一长段sql 优化无果后&#xff0c;发现这张表被频繁分组引用了四次&#xff0c;在外键加上索引后&#xff0c;成功优化。。。 所以数据量少的表&#xff0c;被频繁引用也需要加…

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

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