提升网站安全临沂做网站建设公司
文章目录
- 前言
- 一、v-text指令
- 二、v-html指令
- 三、v-cloak指令
- 四、v-once指令
- 五、v-pre指令
- 六、其他指令
前言
Vue.js 提供了许多内置指令(Directives),这些指令用于在模板中添加特殊功能。内置指令以 v- 前缀开始。
- v-text : 更新元素的 textContent
- 更新元素的
textContent
。 - 例如:
<span v-text="message"></span>
- 更新元素的
- v-html : 更新元素的 innerHTML
- 更新元素的
innerHTML
。 - 例如:
<div v-html="rawHtml"></div>
- 更新元素的
- v-if : 如果为 true, 当前标签才会输出到页面
- 根据表达式的真假值条件性地渲染元素。
v-if
是“惰性”的:如果条件为假,则元素不会出现在 DOM 中。
- 根据表达式的真假值条件性地渲染元素。
- v-else: 如果为 false, 当前标签才会输出到页面
- v-show : 通过控制 display 样式来控制显示/隐藏
- 根据表达式的是与否来切换元素的显示状态(通过改变 CSS 的
display
属性)。 - 例如:
<p v-show="isShown">Visible only if isShown is truthy.</p>
- 根据表达式的是与否来切换元素的显示状态(通过改变 CSS 的
- v-for : 遍历数组/对象
- 基于源数据多次渲染元素或模板块。
- 例如:
<li v-for="item in items">{{ item.text }}</li>
或<div v-for="(value, name) in object">{{ name }}: {{ value }}</div>
- v-on : 绑定事件监听, 一般简写为@
- 用于绑定事件监听器。
- 例如:
<button v-on:click="doSomething">Click me</button>
或<button @click="doSomething">Click me</button>
- v-bind : 绑定解析表达式, 可以省略 v-bind,简写为
:
- 用于动态地绑定一个或多个属性到表达式。
- 例如:
<a v-bind:href="url">
或<a :href="url">
- v-model : 双向数据绑定
- 在表单元素上创建双向数据绑定。
- 例如:
<input v-model="message">
- v-cloak : 防止闪现, 与 css 配合: [v-cloak] { display: none }
- 这个指令保持在元素上直到 Vue 实例结束编译。常与 CSS 规则一起使用,可以隐藏未编译的 Mustache 标签直到 Vue 完成编译。
- 例如:在 CSS 中使用
[v-cloak] { display: none }
,然后在模板中使用<div v-cloak>{{ message }}</div>
。
- v-pre:跳过这个元素和它的子元素的编译过程。
- 用来显示原始 Mustache 标签。可以用于显示原始数据,例如从服务器获取的未编译模板。
- 例如:{{ this will not be compiled }}
一、v-text指令
v-text指令:
1.作用:向其所在的节点中渲染文本内容。
2.与插值语法的区别:v-text会替换掉节点中的内容,{{xx}}则不会。
<head><meta charset="UTF-8" /><title>v-text指令</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script>
</head>
<body><!-- 准备好一个容器--><div id="root"><div>你好,{{name}}</div><!-- v-text会替换div标签里的内容 --><div v-text="name">你好,阿里</div><div v-text="str">你好,腾讯</div></div>
</body>
<script type="text/javascript">Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。//创建实例const vm = new Vue({el:'#root',data:{name:'vue学院',str:'<h3>你好啊!</h3>'}})
</script>
二、v-html指令
v-html指令:
1.作用:向指定节点中渲染包含html结构的内容。
2.与插值语法的区别:
(1).v-html会替换掉节点中所有的内容,{{xx}}则不会。
(2).v-html可以识别html结构。
<head><meta charset="UTF-8" /><title>v-html指令</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script>
</head>
<body><!-- 准备好一个容器--><div id="root"><div>你好,{{name}}</div><div v-html="str"></div><div v-html="str2"></div></div>
</body>
<script type="text/javascript">Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。//创建实例const vm = new Vue({el:'#root',data:{name:'百度',str:'<h3>你好啊!</h3>',str2:'<a onclick="event.preventDefault()" href=javascript:location.href="http://www.baidu.com">百度网址</a>',}})
</script>
三、v-cloak指令
场景:当 Vue 实例初始化较慢(如网络延迟或数据加载时间长)时,页面会短暂显示未编译的 {{}} 插值表达式,造成视觉干扰。
效果:页面加载时隐藏未编译内容,Vue 完成编译后自动显示渲染结果,自动删除v-cloak属性。
<head><meta charset="UTF-8" /><title>v-text指令</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script><style>[v-cloak] {display: none;}</style></head><body>
<!-- 使用v-cloak --><div id="root" v-cloak><p>{{ content }}</p></div>
</body><!-- 模拟延迟加载 Vue.js -->
<script>Vue.config.productionTip = false; //阻止 vue 在启动时生成生产提示setTimeout(() => { new Vue({el: "#root",data() {return{content: "hello vue" } },});}, 2000); // 延迟 2 秒模拟网络延迟
</script>
四、v-once指令
v-once指令:
1.v-once所在节点在初次动态渲染后,就视为静态内容了。
2.以后数据的改变不会引起v-once所在结构的更新,可以用于优化性能。
<head><meta charset="UTF-8" /><title>v-once指令</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script>
</head>
<body><!-- 准备好一个容器--><div id="root"><h2 v-once>初始化的n值是:{{n}}</h2><h2>当前的n值是:{{n}}</h2><button @click="n++">点我n+1</button></div>
</body>
<script type="text/javascript">Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。//创建实例const vm =new Vue({el:'#root',data:{n:1}})
</script>
五、v-pre指令
v-pre指令:
1.跳过其所在节点的编译过程。
2.可利用它跳过:没有使用指令语法、没有使用插值语法的节点,会加快编译。
<head><meta charset="UTF-8" /><title>v-pre指令</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script>
</head>
<body><!-- 准备好一个容器--><div id="root"><h2 v-pre>Vue其实很简单</h2><h2 >当前的n值是:{{n}}</h2><button @click="n++">点我n+1</button></div>
</body>
<script type="text/javascript">Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。//创建实例new Vue({el:'#root',data:{n:1}})
</script>
六、其他指令
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>其他常用指令</title><!-- 引入Vue --><script type="text/javascript" src="../js/vue.js"></script>
</head>
<body><div id="root"><h2>v-bind指令</h2><div :id="prop">{{name}}</div><h2>v-model指令</h2>姓名:<input type="text" v-model="name"><h2>v-on指令</h2><button @click="func">点我</button><h2>v-for指令</h2><ul><li v-for="(item,index) in arr" :key="index">{{item}}-{{index}}</li></ul><h2>v-show指令</h2><p v-show="isShown">Visible only if isShown is truthy.</p></div>
</body>
<script>Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。// 创建实例const vm = new Vue({el:'#root',data(){return{name:'hello vue',prop:"mydiv",arr:["张三","李四","王五"],isShown:true}},methods: {func(){alert("v-vlick")}},})</script>