Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
如果你想在深入学习 Vue 之前对它有更多了解,我们制作了一个视频,带您了解其核心概念和一个示例工程。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>VUE入门案例</title> </head> <body> <!-- 入门案例步骤: 1.导入vue.js文件 html下部编辑 2.指定区域进行渲染 需要准备div 里面写vue.js代码 3.创建vue.js对象 指定渲染区域 动态调用 --> <!-- 指定区域 --> <div id="app"> <!-- 展现msg属性 插值表达式:{{key}} --> <h1>{{msg}}</h1> </div> <!-- 导入js文件 --> <script src="../js/vue.js"></script> <!-- 创建vue对象 --> <script> /** * 语法: * 1.const 定义常量 * 2.let 作用与var类似,有作用域概念 * 3.var 特点:没有作用域 */ const app=new Vue({ el: "#app", data: { msg: "你好vue" } }) </script> </body> </html>
!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>VUE入门案例</title> </head> <body> <div id="app"> <!-- 特点: 如果页面没有渲染完成,则直接展现给用户 插值表达式需要直接显示 显示时使用,输入不可使用--> <h1>{{msg}}</h1> <!-- v-text 如果页面没有渲染完成,则不显示信息--> <h1 v-text="msg"></h1> <!-- v-html 直接渲染html标签 --> <div v-text="h3html"></div> <div v-html="h3html"></div> <!-- v-pre 跳过预编译 --> <div v-pre>{{msg}}</div> <!-- v-once 只渲染一次 --> <div v-once>{{once}}</div> </div> <script src="../js/vue.js"></script> <script> const app=new Vue({ el: "#app", data: { msg: "你好vue", h3html: "<h3>需要html渲染</h3>", once: "我只能被渲染一次" } }) </script> </body> </html>
双向数据绑定: 实现了页面与数据的绑定. 页面变数据变 / 数据变页面变.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>VUE入门案例</title> </head> <body> <div id="app"> <!-- v-model 双向数据绑定 数据段--页面 页面----数据 --> {{msg}} <input name="msg" v-model="msg" /> </div> <script src="../js/vue.js"></script> <script> const app=new Vue({ el: "#app", data: { msg: "数据随时修改", } }) </script> </body> </html>
回顾: mvc模式,核心思想:减少代码的耦合性
m model:封装的数据
v view :视图层: 数据的展现
c contro 控制层: 程序的流转过程
衍生: 3层代码的结构 controller–service–mapper/dao
MVVM思想:
M: model 封装的数据
V: view 数据的展现 视图层
VM: 数据视图的控制层 控制数据流转的过程
MVVM是前端为了解耦,模拟后端设计的一种思想
步骤:
语法:
v-on:click="函数/直接进行计算"
具体代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>双向数据绑定</title> </head> <body> <div id="app"> <!-- 双向数据绑定 v-model 1.数据端---页面 2.页面-----数据 --> <input name="msg" v-model="msg"/><br> {{msg}} </div> <!-- 1.导入JS文件 --> <script src="../js/vue.js"></script> <!-- 3.创建VUE对象 --> <script> const APP = new Vue({ el: "#app", data: { msg: "数据随时修改" } }) </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>按键触发操作</title> </head> <body> <div id="app"> <!-- 语法: 1.v-on:keydown="" 按下触发 2.v-on:keyup="" 弹起来触发 3.v-on:keypress="" 小键盘触发 按键支持: .enter .tab .delete (捕获“删除”和“退格”键) .esc .space .up .down .left .right 需求:用户通过输入 按特殊的键位触发函数 要求1. 按钮实现加法操作 num = num + num2 要求2. 用户按回车按钮实现触发 要求3. 用户按空格键实现触发 --> <h3>用户数据:{{num}}</h3><br> <!-- <input type="text" v-on:keyup.enter="addNum" v-model="num2" /> --> <input type="text" v-on:keyup.space="addNum" v-model="num2" /> <button @click="addNum">计算</button> </div> <script src="../js/vue.js"></script> <script> const APP = new Vue({ el: "#app", data: { num: 100, num2: 0 }, methods: { addNum(){ //this.num = this.num + this.num2 //将字符串转化为数值类型 this.num += parseInt(this.num2) } } }) </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>计算器案例</title> </head> <body> <div id="app"> <!-- 要求 1.准备两个文本输入框 num1/num2 2.要求准备一个按钮 "计算" 当点击按钮时实现 count=num1+num2 将得到的结果通过 总数输出count 3.当输入num2时可以通过回车按键 计算. 注意事项: input框默认是字符串 --> 数值1: <input type="text" v-model="num1" /><br> 数值2: <input type="text" v-model="num2" @keyup.enter="addNum" /><br> 总数: {{count}} <br> <button @click="addNum">计算</button> </div> <script src="../js/vue.js"></script> <script> const APP = new Vue({ el: "#app", data: { num1: 0, num2: 0, count: 0 }, methods: { addNum(){ this.count = parseInt(this.num1) + parseInt(this.num2) } } }) </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>按键修饰符</title> </head> <body> <div id="app"> <!-- 难点: 元素可能需要嵌套,事件可能嵌套 说明: 如果事件嵌套则必然带来事件的冒泡. 解决方案: 阻止事件冒泡 .stop属性 --> 数值: {{num}} <div @click="num++"> 嵌套结构 <button @click.stop="num++">计算</button> </div> <script src="../js/vue.js"></script> <script> const APP = new Vue({ el: "#app", data: { num: 0 }, methods: { } }) </script> </body> </html>
<!-- 需求2: a标签作用中的href的跳转是默认规则 要求: 用户点击a标签 不跳转页面,同时触发事件 解决: 阻止标签的默认行为 @click.prevent --> <a href="http://baidu.com" @click.prevent="aClick">百度</a> <!-- 用途: prevent阻止页面跳转 a标签/form表单 action同步请求 -->