[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的理解了;
希望理解了这个技术,你可以在其他语言同样可以用到它!

个人简介

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

主目录

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