Vue.js 提供了许多内置指令(Directives),这些指令用于在模板中添加特殊功能。内置指令以 v- 前缀开始。
textContent
。
innerHTML
。
v-if
是“惰性”的:如果条件为假,则元素不会出现在 DOM 中。display
属性)。Visible only if isShown is truthy.
- {{ item.text }}
或 {{ name }}: {{ value }}
或
:
[v-cloak] { display: none }
,然后在模板中使用 {{ message }}
。v-text指令:
1.作用:向其所在的节点中渲染文本内容。
2.与插值语法的区别:v-text会替换掉节点中的内容,{{xx}}则不会。
<head>
<meta charset="UTF-8" />
<title>v-text指令title>
<script type="text/javascript" src="../js/vue.js">script>
head>
<body>
<div id="root">
<div>你好,{{name}}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:'你好啊!
'
}
})
script>
v-html指令:
1.作用:向指定节点中渲染包含html结构的内容。
2.与插值语法的区别:
(1).v-html会替换掉节点中所有的内容,{{xx}}则不会。
(2).v-html可以识别html结构。
<head>
<meta charset="UTF-8" />
<title>v-html指令title>
<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:'你好啊!
',
str2:'百度网址',
}
})
script>
场景:当 Vue 实例初始化较慢(如网络延迟或数据加载时间长)时,页面会短暂显示未编译的 {{}} 插值表达式,造成视觉干扰。
效果:页面加载时隐藏未编译内容,Vue 完成编译后自动显示渲染结果,自动删除v-cloak属性。
<head>
<meta charset="UTF-8" />
<title>v-text指令title>
<script type="text/javascript" src="../js/vue.js">script>
<style>
[v-cloak] {
display: none;
}
style>
head>
<body>
<div id="root" v-cloak>
<p>{{ content }}p>
div>
body>
<script>
Vue.config.productionTip = false; //阻止 vue 在启动时生成生产提示
setTimeout(() => {
new Vue({
el: "#root",
data() {
return{
content: "hello vue"
}
},
});
}, 2000); // 延迟 2 秒模拟网络延迟
script>
v-once指令:
1.v-once所在节点在初次动态渲染后,就视为静态内容了。
2.以后数据的改变不会引起v-once所在结构的更新,可以用于优化性能。
<head>
<meta charset="UTF-8" />
<title>v-once指令title>
<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+1button>
div>
body>
<script type="text/javascript">
Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
//创建实例
const vm =new Vue({
el:'#root',
data:{
n:1
}
})
script>
v-pre指令:
1.跳过其所在节点的编译过程。
2.可利用它跳过:没有使用指令语法、没有使用插值语法的节点,会加快编译。
<head>
<meta charset="UTF-8" />
<title>v-pre指令title>
<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+1button>
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>
<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>