目录
1、JavaScript框架
2、简化Dom操作
3、响应式数据驱动
官方文档:Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org)
- html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Vue基础title>
- head>
-
- <body>
- <div id="app">
- {{message}}
- div>
-
- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
- <script>
- var app = new Vue({
- el: "#app",
- data: {
- message: "Hello Vue!"
- }
- })
- script>
- body>
-
- html>
创建Vue程序步骤:
el是用来设置Vue实例挂载(管理)的元素
Vue会管理el选项命中的元素及其内部的后代元素
可以使用其他的选择器,但是建议使用ID选择器
可以使用其他的双标签,不能使用html和body
Vue中用到的数据定义在data中
data中可以写复杂类型的数据
渲染复杂类型数据时,遵守js的语法即可
v-text:设置标签的文本值,无论内容是什么,只会解析为文本
v-HTML:设置标签的innerHTML,内容中有html结构会被解析为标签
v-on基础:为元素绑定事件,事件名不需要写on,指令可以简写为@,绑定的方法定义在methods属性中,方法内部通过this关键字可以访问定义的data中数据
- html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- head>
-
- <body>
- <div id="app">
- <h2 v-text="message">h2>
- <h2>{{message}}呀h2>
- <p v-html="content">p>
- <p v-text="content">p>
- <input type="button" value="v-on指令" v-on:click="doIt">
- <input type="button" value="v-on指令" @click="doIt">
- <input type="button" value="双击事件" @dblclick="doIt">
- <h2 @click="changeMessage">{{message}}h2>
- div>
-
- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
- <script>
- var app = new Vue({
- el: "#app",
- data: {
- message: "hello,Vue",
- content: "百度"
- },
- methods: {
- doIt: function () {
- alert('做IT');
- },
- changeMessage: function () {
- this.message += "嘿呀!"
- },
- },
- })
- script>
- body>
-
- html>
v-show:根据表达值的真假,切换元素的显示和隐藏,原理是修改元素的display,指令后面的内容最终解析为布尔值,true显示,false隐藏
v-if:根据表达值的真假,切换元素的显示和隐藏(操纵dom元素)
v-bind:设置元素的属性,语法:v-bind:属性名,可直接省略v-bind
- html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- <style>
- .active {
- border: 1px solid red;
- }
- style>
-
- head>
-
- <body>
- <div id="app">
- <button @click="changeIsShow">切换图片状态button>
- <button @click="addAge">年龄增加button>
- <button @click="changeIsShow2">切换汉字状态button>
- <br>
-
- <img v-show="isShow" src="img/afternoon.jpg" alt="">
- <img v-show="age>=18" src="img/afternoon.jpg" alt="">
-
- <p v-if="isShow2">我是汉字p>
- <h2 v-if="temperature>=35">我是汉字h2>
-
- <img v-bind:src="imgSrc" alt="">
- <br>
- <img :src="imgSrc" alt="" :title="imgTitle+'!!!'" :class="isActive?'active':''" @click="toggletActive">
- <img :src="imgSrc" alt="" :title="imgTitle+'!!!'" :class="{active:isActive}" @click="toggletActive">
- div>
- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
- <script>
- var app = new Vue({
- el: "#app",
- data: {
- isShow: false,
- isShow2: false,
- age: 17,
- temperature: 30,
- imgSrc: "img/morning.jpg",
- imgTitle: "早上好",
- isActive: false,
- },
- methods: {
- changeIsShow: function () {
- this.isShow = !this.isShow;
- },
- addAge: function () {
- this.age++;
- },
- changeIsShow2: function () {
- this.isShow2 = !this.isShow2;
- },
- toggletActive: function () {
- this.isActive = !this.isActive;
- }
- }
- })
- script>
- body>
-
- html>
v-for:根据数据生成列表结构,数组经常和v-for结合使用,语法(item,index)in数据
v-on补充:传递自定义参数,事件修饰符;事件绑定的方法写成函数调用的形式,可以传入自定义参数;定义方法是需要定义形参来接收传入的实参;事件的后面跟上.修饰符可以对事件限制
v-model:获取和设置表单元素的值(双向数据绑定)
- html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- head>
-
- <body>
- <div id="app">
-
- <button @click="add">添加数据button>
- <button @click="remove">删除数据button>
- <ul>
- <li v-for="item in arr">
- 名次:{{item}}
- li>
- ul>
- <h2 v-for="it in vegtables" v-bind:title="it.name">
- {{it.name}}
- h2>
-
-
- <button @click="doIt(66,'加油')">点击button>
- <input type="text" @keyup.enter="sayHi">
- <br>
-
-
- <button @click="setM">修改messagebutton>
- <input type="text" v-model="message" @keyup.enter="getMessage">
- <h2>{{message}}h2>
- div>
- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
- <script>
- var app = new Vue({
- el: "#app",
- data: {
- message: "加油",
- arr: ["第一", "第二", "第三"],
- vegtables: [
- { name: "西红柿" },
- { name: "西红柿炒鸡蛋" }
- ]
- },
- methods: {
- add: function () {
- this.vegtables.push({ name: "蛋炒饭" });
- },
- remove: function () {
- this.vegtables.shift();
- },
- doIt: function (p1, p2) {
- // alert('做IT');
- alert(p1);
- alert(p2);
- },
- sayHi: function () {
- alert("你好");
- },
- getMessage: function () {
- alert(this.message);
- },
- setM: function () {
- this.message = "哈哈哈"
- }
- }
- })
- script>
- body>
-
- html>