• Vue入门


    目录

    一,Vue的简介

    1.什么是 Vue?

     2. 库和框架的区别

    3.mvm的介绍

    二,案例演示

    1.页面展示实现

     2.Mvvm数据的双向绑定

    3.Vue事件


    一,Vue的简介

    1.什么是 Vue?

    是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。

     官网:https://cn.vuejs.org/

      

    Vue作者:尤雨溪/中国无锡

     2. 库和框架的区别

    库(Library),本质上是一些函数的集合。每次调用函数,实现一个特定的功能,接着把控制权交给使用者

    框架(Framework):是一套完整的解决方案,使用框架的时候,需要把你的代码放到框架合适的地方,框架会在合适的时机调用你的代码

    代表:vue

          框架规定了自己的编程方式,是一套完整的解决方案

          使用框架的时候,由框架控制一切,我们只需要按照规则写代码

          框架的侵入性很高(从头到尾)

    3.mvm的介绍

     MVVM,一种更好的UI模式解决方案,MVVM通过数据双向绑定让数据自动地双向同步

    相比较于mvc更加便捷;

            

     VM:ViewModel 视图模型 虚拟dom

     数据是核心

    二,案例演示

    1.页面展示实现

    步骤:

    1.导入js依赖(在官网上找,js的版本有很多,之间也存在差异。最好不要随便导入一个js

    查看网址:BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务

     

    2.定义Vue所管理的边界

    3.创建Vue实例

    4.挂载边界

    代码演示 

    1. DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8" />
    5. <title>title>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. head>
    8. <body>
    9. //定义边界
    10. <div id="app">
    11. <h3>{{msg}}h3>
    12. {{msg}}
    13. div>
    14. body>
    15. <script type="text/javascript">
    16. //绑定边界 es6的具体体现
    17. new Vue({
    18. //设置Vue所管理的边界中可以使用的变量
    19. el:'#app',
    20. data(){
    21. return {msg:'vue哈哈哈'};
    22. }
    23. })
    24. script>
    25. html>

    《效果图》

     2.Mvvm数据的双向绑定

    1. DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8" />
    5. <title>title>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. head>
    8. <body>
    9. //定义边界
    10. <div id="app">
    11. //数据双向绑定
    12. <h3>{{msg}}h3>
    13. <input type="text" v-model="msg"/>
    14. <h3>{{msg}}h3>
    15. <h3>{{msg}}h3>
    16. <h3>{{msg}}h3>
    17. {{msg}}
    18. div>
    19. body>
    20. <script type="text/javascript">
    21. //绑定边界 es6的具体体现
    22. new Vue({
    23. el:'#app',
    24. data(){
    25. return {msg:'vue哈哈哈'};
    26. }
    27. })
    28. script>
    29. html>

    《效果图》

    只要是跟边界相关的变量都会被改变,如果变量写在边界外就不会被Vue进行监管

     

     

    3.Vue事件

    v-model:为双向绑定

    v-on:绑定方法

    methods:将所有的方法定义methods里面

    send:在里面定义函数

    在方法区中可以拿到变量区中任意的变量

    优点:提高开发效率

    1. DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8" />
    5. <title>title>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. head>
    8. <body>
    9. //定义边界
    10. <div id="app">
    11. <h3>{{msg}}h3>
    12. <input type="text" v-model="msg"/>
    13. <button v-on:click="getMsg" >获取内容button>
    14. div>
    15. body>
    16. <script type="text/javascript">
    17. //绑定边界 es6的具体体现
    18. new Vue({
    19. el:'#app',
    20. data(){
    21. return {msg:'vue哈哈哈'};
    22. },
    23. methods:{
    24. //在方法区中可以拿到变量区中任意的变量
    25. //this相当于Vue实例
    26. getMsg(){
    27. alert(this.msg);
    28. }
    29. }
    30. })
    31. script>
    32. html>

    《效果图》

     4.生命周期

    解析:

    new Vue(): 代表初始化实例(里面什么也没有,只是一个空壳)

    int Events...:初始化事件

    beforeCreate:执行函数

    Compile template:编译模板进行渲染(自定义模板)

    beformount:挂载(挂到Vue里面)

    beforeupdata:可以改变变量的值

    destroy:销毁

    初始化Vue一定会执行的构造函数

    beforCreate

    created

    beforeMount

    mounted

     

    1. DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8" />
    5. <title>title>
    6. <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js">script>
    7. head>
    8. <body>
    9. <div id="d1">
    10. <div>number:{{number}}div>
    11. <div>{{detail()}}div>
    12. <input type="text" v-model="number" />
    13. div>
    14. <script>
    15. var data = {
    16. number:999,
    17. msg:null
    18. };
    19. var vm = new Vue({
    20. el:'#d1',
    21. data:data,
    22. methods:{
    23. detail:function(){
    24. return "使用方法来插值:"+this.msg;
    25. }
    26. },
    27. beforeCreate:function(){
    28. console.log('beforeCreate:刚刚new Vue()之后,这个时候,数据还没有挂载呢,只是一个空壳')
    29. console.log(this.msg)//undefined
    30. console.log(document.getElementsByClassName("myp")[0])//undefined
    31. },
    32. created:function(){
    33. console.log('created:这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数')
    34. this.msg+='!!!'
    35. console.log('在这里可以在渲染前倒数第二次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取')
    36. console.log('接下来开始找实例或者组件对应的模板,编译模板为虚拟dom放入到render函数中准备渲染')
    37. },
    38. beforeMount:function(){
    39. console.log('beforeMount:虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated')
    40. this.msg+='@@@'
    41. console.log('在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取')
    42. console.log(document.getElementsByClassName("myp")[0])//undefined
    43. console.log('接下来开始render,渲染出真实dom')
    44. },
    45. // render:function(createElement){
    46. // console.log('render')
    47. // return createElement('div','hahaha')
    48. // },
    49. mounted:function(){
    50. console.log('mounted:此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了')
    51. console.log(document.getElementsByClassName("myp")[0])
    52. console.log('可以在这里操作真实dom等事情...')
    53. // this.$options.timer = setInterval(function () {
    54. // console.log('setInterval')
    55. // this.msg+='!'
    56. // }.bind(this),500)
    57. },
    58. beforeUpdate:function(){
    59. //这里不能更改数据,否则会陷入死循环
    60. console.log('beforeUpdate:重新渲染之前触发')
    61. console.log('然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染')
    62. },
    63. updated:function(){
    64. //这里不能更改数据,否则会陷入死循环
    65. console.log('updated:数据已经更改完成,dom也重新render完成')
    66. },
    67. beforeDestroy:function(){
    68. console.log('beforeDestory:销毁前执行($destroy方法被调用的时候就会执行),一般在这里善后:清除计时器、清除非指令绑定的事件等等...')
    69. // clearInterval(this.$options.timer)
    70. },
    71. destroyed:function(){
    72. console.log('destroyed:组件的数据绑定、监听...都去掉了,只剩下dom空壳,这里也可以善后')
    73. }
    74. });
    75. script>
    76. body>
    77. html>

    《效果图》

     

  • 相关阅读:
    基于STM32的简化版智能手表
    RV1126-RV1109-进入uboot的按键和名字显示-HOSTNAME
    Java用fastjson转换JSON对象和字符串
    PyTorch C++ 前端:张量
    微服务的故障处理
    css的三种引入方式
    kotlin 注解 @Parcelize 使用
    对西方国家的智能制造研究综述:过去现在和未来
    视频剪辑中生成花字特效的代码案例详述
    阿里云第一次面试记录
  • 原文地址:https://blog.csdn.net/weixin_66202611/article/details/126639766