vue 指令和模板

来源:互联网 发布:汉诺塔的非递归算法 编辑:程序博客网 时间:2024/05/21 09:27

今天我来总结一下vue的指令和模板。指令和模板是vue比较基础的东西,也是vue中很重要的东西。

一、vue指令

vue指令有很多,比如:
v-bind,
v-click,
v-style,
v-class,
v-once,
v-if,
v-else-if,
v-model 等等。
这些指令我就不一一讲解用法了。具体用法可以去看vue 官网的APIhttps://cn.vuejs.org/v2/api/这里写链接内容

二、vue模板

vue的模板是vue很重要的部分。下面我来讲一些vue创建模板的几种方法。

1. 使用 v-html

    <div id="dome">      <p v-html="divWarp"></p>    </div>    <script type="text/javascript">      const data = '<span>I am new elemenp</span>';      var vm = new Vue({        el:'#dome',        data:{          divWarp:data,        }      })    </script>

重点内容 这里有个知识点我们写的data 数据中间不能断开,象这样,
'<span>I am new elemenp
</span>'
否则会报错。
但是ES6为我们提供了一个方法可以这样做,那就是用 ``反引号。这样我们在给它换行时,js就不会报错。

2.使用template

  <div id="dome">  </div>    <script type="text/javascript">      const data = "<ul><li>我是 template 模板</li></ul>"      var vm = new Vue({        el:'#dome',        template:data,      })    </script>

重点内容
① 这时会出现一种现象,我们写的模板data会替换掉 <div id="dome"></div> 它,展示为 <ul><li>我是 template 模板</li></ul>,也就时说template 权级是比较高一些。
② 我们写的字符串data 中 只能有一个根源素,后面不能出现第二个,否则vue 会报错。例如<ul><li>我是 template 模板</li></ul><div>我是DIV</div> 这样是不对的,ul后面不能够在有元素存在,以后所有元素都要写在ul里面(这里只为说明道理,元素包含规则要这注意)

3.使用 <script> 标签

 <div id="dome"></div   <script type="x-template" id="temp"> // type 和 id 是重点       <div>我是 script 模板</div>   </script>   <script type="text/javascript">     new Vue({        el:'#dome',        template:temp,     })   </script>

重点内容 <script> 的type 是重点,当我们更改script的 type 为 x-template 并且要给 <script> 添加一个ID, 在构造vue,中用template 去引入对应id 即可

4.使用render 函数

我这里简单的总结一下render 函数,以后单独写文章详细总结render.
render函数是很接近原声编译的。

rander(createElement){   return createElement(标签名,{数据对象},子元素)   // 第一个参数 标签名是必要的   // 第二个参数 数据对象 是不必须的   // 第三个参数 子元素是不必须的}

数据对象又包含以下(部分)属性:

class:{} 绑定class,和v-bind:class 一样的API
style:{} 绑定样式,和v-bind:style 一样的API
attrs:{} 添加行间属性 domProps:{} DOM元素属性
on:{} 绑定事件
nativeOn:{} 监听原生事件
directive:{} 自定义指令
scopedSlots:{} slot 作用域
key:”key” 给元素添加唯一的标示
ref:”ref” 引用信息

例如

<style> .color{color:red;}  // 我这里定义了一个类名,下面会绑定 color 类名</style>
<div id="dome"></div><script type="text/javascript">   new Vue({    el:'#dome',    render(createElement){        return createElement(                 "ul", //标签名                 {                    class:{color:true},                    style:{                        fontSize:"26px"                    },                    attrs:{                        newAttr:"111"                    }                 },  // 数据对象,包含一些属性,id ,class,事件的添加                 [                    createElement("li","1"),                    createElement("li","2"),                    createElement("li","3"),                    createElement("li","4"),                 ] // 子元素对象            )    }   })   </script>

以上代码渲染成的DOM 就是

  <ul newAttr="111" class="color" style="font-size:26px">     <li>1</li>     <li>2</li>     <li>3</li>     <li>4</li>  </ul>
原创粉丝点击