一、初始Vue
Hello小案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 引入Vue -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!--
初识vue:
1. 想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象;
2. root容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法;
3. root容器里的代码被称为【Vue模板】;
-->
<!-- 准备好一个容器 -->
<div id="root">
<!-- <h1>Hello,????</h1> -->
<h1>Hello,{{name}}</h1>
</div>
<script type="text/javascript">
Vue.config.productionTip = false; //阻止 vue 在启动时生成生产提示。
//创建Vue实例
const x = new Vue({
el:'#root',//el:element,用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符串。
data:{ //data用于存储数据,数据供el所指定的容器去使用,值暂时先写成一个对象。
name:'你好!'
}
})
</script>
</body>
</html>
分析Hello案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 引入Vue -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!--
1.Vue实例和容器是一一对应的;
2.真实开发中只有一个Vue实例,并且会配合着组件一起使用;
3.{{xxx}}中的xxx要写js表达式,且xxx可以自动读取到data中的所有属性;
4.一旦data中的数据发生改变,那么模板中用到该数据的地方也会自动更新;
-->
<!--
注意区分:js表达式和js代码(语句)
1. 表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方:
(1). a
(2). a+b
(3). demo(1)
(4) x === y ? 'a' : 'b'
2. js代码(语句)
(1) if(){}
(2) for(){}
-->
<!-- 准备好一个容器 -->
<div class="root">
<!-- <h1>Hello,????</h1> -->
<h1>Hello,{{name}},{{address}},{{1+1}},{{Date.now()}}</h1>
</div>
<div class="root">
<!-- <h1>Hello,????</h1> -->
<h1>Hello,{{name}}</h1>
</div>
<script type="text/javascript">
Vue.config.productionTip = false; //阻止 vue 在启动时生成生产提示。
//创建Vue实例
new Vue({
el:'.root',//el:element,用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符串。
data:{ //data用于存储数据,数据供el所指定的容器去使用,值暂时先写成一个对象。
name:'你好!'
}
})
new Vue({
el:'.root',//el:element,用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符串。
data:{ //data用于存储数据,数据供el所指定的容器去使用,值暂时先写成一个对象。
address:'广州从化'
}
})
</script>
</body>
</html>
二、模板语法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 引入Vue -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!--
Vue模板语法有2大类:
1. 插值语法:{{}}
功能:用于解析标签中标签体的内容
写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性。
2. 指令语法:v-xxx
功能:用于解析标签,标签内容,以及一些特殊属性(包括:标签属性、标签体内容、绑定事件。。。。。。)
举例:v-bind:href="xxx" 或简写为::href="xxx",xxx同样要写js表达式,且可以直接读取到data中的所有属性。
备注:Vue中有很多的指令,且形式都是:v-????。
-->
<!-- 准备好一个容器 -->
<div id="root">
<h1>插值语法</h1>
<h3>你好,{{name}}</h3>
<hr/>
<h1>指令语法</h1>
<a href="{{url}}">点我去百度1</a>
<a v-bind:href="url">点我去百度2</a>
<a v-bind:href="url" v-bind:x="hello">点我去百度2</a>
<a :href="url">点我去百度3</a>
</div>
<script type="text/javascript">
Vue.config.productionTip = false; //阻止 vue 在启动时生成生产提示。
new Vue({
el:'#root',
data:{
name:'jack',
url:'https://www.baidu.com',
hello:'你好'
}
})
</script>
</body>
</html>
三、数据绑定
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 引入Vue -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!--
Vue中有2种数据绑定的方式:
1.单向数据绑定:数据只能从data流向页面
2.双向数据绑定:数据不仅能从data流向页面,还可以从页面流向data
v-bind:value="name" 单向数据绑定
v-model="name" 双向数据绑定
v-model:x="name" 双向数据绑定,x是自定义参数,用于接收name的值
备注:1.双向绑定一般都应用在表单类元素上(如:input、select等)
2.v-model:value可以简写为v-model,因为v-model默认收集的就是value值。
-->
<!-- 准备好一个容器 -->
<div id="root">
单向数据绑定:<input type="text" v-bind:value="name">
<br>
双向数据绑定:<input type="text" v-model="name">
<br>
<!-- 如下代码是错误的,因为v-model只能用于表单类元素上(输入类元素) -->
<h2 v-model:x="name">你好啊</h2>
</div>
<script type="text/javascript">
Vue.config.productionTip = false; //阻止 vue 在启动时生成生产提示。
new Vue({
el: '#root',
data: {
name: '张三'
}
})
</script>
</body>
</html>