• Vue.js的简单概念和使用(代码及运行图)


    MVVM
    MVVM 是 Model-View-ViewModel 的简写。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。

    通过Vue实现数据层和视图层的对应对象的自主绑定,由Vue框架进行数据的和绑定自动更新

    VUE
    什么是 Vue.js
    Vue (读音 /vju ː/,类似于 view) 是一套用于构建用户界面的渐进式框架. 与其它大型框架不是,Vue 被设计为可以自底向上逐层应用。Vue 的核心 库只关注视图层,不仅易于上手,还便与第三方库或既有项目整合。 Vue.js 是前端的主流框架之一,和 Angular.js、React.js 一起,并成为前端三 大主流框架!

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

    Vue.js 优点
    1.体积小 压缩后 33K
    2.更高的运行效率
    用 JQuery 或者原生的 JavaScript DOM 操作函数对 DOM 进行频繁操作的
    时候,浏览器要不停的渲染新的 DOM 树,导致页面看起来非常卡顿。
    基于虚拟 dom,一种可以预先通过 JavaScript 进行各种计算,把最终的
    DOM 操作计算出来并优化的技术,由于这个 DOM 操作属于预处理操作,并没
    有真实的操作 DOM,所以叫做虚拟 DOM.最后在计算完毕才真正将 DOM 操作
    提交,将 DOM 操作变化反映到 DOM 树上。
    3.双向数据绑定,简化 Dom 操作
    通过 MVVM 思想实现数据的双向绑定,让开发者不用再操作 dom 对象,
    把更多的精力投入到业务逻辑上.
    4 生态丰富、学习成本低
    市场上拥有大量成熟、稳定的基于 vue.js 的 ui 框架、常用组件!来即用实现
    快速开发!对初学者友好、入门容易、学习资料多.

    Vue 安装
    方式 1:直接用
    方式 2:命令行工具 (CLI)
    安装教程给出了更多安装 Vue 的方式。请注意我们不推荐新手直接使用 vue-cli,尤其是在你还不熟悉基于 Node.js 的构建工具时。

     

    两个js,第一个是没有压缩过的,第二个是压缩过的

    保留压缩过的js

    导入文件vue.js文件

    第一个 Vue 程序
    1. 导入开发版本的 Vue.js
    2. 创建 Vue 实例对象,设置 el 属性和 data 属性
    3. 使用简洁的模板语法把数据渲染到页面上
    Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM的系统:

    代码解析:

    {{ 变量 }} 模板语法,插值表达式获取数据
    new Vue();创建 Vue 对象(VM 对象)
    el:数据挂载的 dom 对象
    Vue 会管理 el 选项命中的元素及其内部的后代元素
    可以使用其他的选择器,但是建议使用 ID 选择器
    可以使用其他的选择器,但是建议使用 ID 选择器,
    可以使用其他的闭合标签,不能使用 HTML 和 BODY
    data:{ message:’hello world’} model 数据
    Vue 中用到的数据定义在 data 中
    data 中可以写复杂类型的数据,如对象,数组
    渲染复杂类型数据时,遵守 js 的语法即可
    模板语法
    Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循 规范的浏览器和 HTML 解析器解析。 在底层的实现上, Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统, Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。
    插值文本
    数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值: Message: {{ msg }}
    Mustache 标签将会被替代为对应数据对象上 msg property 的值。无论何时,
    绑定的数据对象上 msg property 发生了改变,插值处的内容都会更新。
    使用 JavaScript 表达式
    迄今为止,在我们的模板中,我们一直都只绑定简单的 property 键值。但实
    际上,对于所有的数据绑定,Vue.js 都提供了完全的 JavaScript 表达式支持。
    {{ number + 1 }}
    {{ ok ? 'YES' : 'NO' }}
    {{ message.split('').reverse().join('') }}
    这些表达式会在所属 Vue 实例的数据作用域下作为 JavaScript 被解析。有个
    限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效。
    {{ var a = 1 }}
    {{ if (ok) { return message } }}

    Vue 指令

    指令带有前缀 v- 开头,以表示它们是 Vue 提供的特殊属性。
    v-text
    作用是设置标签的文本内容
    默认写法会替换全部内容,使用差值表达式可以替换指定内容
    内部支持写表达式

    非凡英才

    {{message+1}}非凡英才

    v-html
    作用是设置元素的 innerHTML
    内容中有 html 结构会被解析为标签
    内部支持写表达式

    非凡英才

    示例:

    执行结果

    v-on
    作用是为元素绑定事件
    事件名不需要写 on 指令可以简写为@
    绑定的方法定义在 methods 属性中,可以传入自定义参数
    methods:{
    test(a,b){
    alert(a);
    }

    点击后执行

     

    v-model
    作用是便捷的设置和获取表单元素的值
    绑定的数据会和表单元素值相关联
    绑定的数据<---->表单元素的值 双向数据绑定

    {{message}}

    data:{
    message:""
    }

     

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>title>
    6. <script src="./vue.min.js" type="text/javascript" charset="utf-8">script>
    7. head>
    8. <body>
    9. <div id="app">
    10. <p>{{xx}}p>
    11. <input type="text" v-model="xx"/>
    12. div>
    13. <script type="text/javascript">
    14. var app = new Vue({
    15. el: '#app',
    16. data: {
    17. xx:456454,
    18. },
    19. methods:{
    20. }
    21. })
    22. script>
    23. body>
    24. html>

    输入框中的值改变会和影响上方的显示数据

     

    v-show
    作用是根据真假切换元素的显示状态
    原理是修改元素的 display,实现显示隐藏
    指令后面的内容,最终都会解析为布尔值
    值为 true 元素显示,值为 false 元素隐藏
    数据改变之后,对应元素的显示状态会同步更新
    data:{
    isShow:true,
    age:20
    }
    v-if
    作用是根据表达式的真假切换元素的显示状态
    本质是通过操纵 dom 元素来切换
    显示状态表达式的值为 true,元素存在于 dom 中,为 false,从 dom 中移除
    频繁的切换 v-show,反之使用 v-if,前者的切换消耗小 v-bind
    作用是为元素绑定属性
    完整写法是 v-bind:属性名
    简写的话可以直接省略 v-bind,只保留:属性名
    v-bind:src="imgSrc" />
    :src="imgSrc" />
    data:{
    imgSrc:'img/3.jpg'
    imgTitle:"这是一张图片"
    }

     

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>title>
    6. <script src="./vue.min.js" type="text/javascript" charset="utf-8">script>
    7. head>
    8. <body>
    9. <div id="app">
    10. <img style="width: 500px; height: 500px;" src="../img/1.jpg" v-show="flog" >
    11. <img style="width: 500px; height: 500px;" src="../img/2.jpg" v-show="age>20" >
    12. <input type="button" value="图片消失" v-on:click="xs()"/>
    13. <img style="width: 500px; height: 500px;" src="../img/1.jpg" v-if="flog" >
    14. <img style="width: 500px; height: 500px;" src="../img/2.jpg" v-if="age>20" >
    15. <p>if elsep>
    16. <img style="width: 500px; height: 500px;" src="../img/1.jpg" v-if="flog" >
    17. <img style="width: 500px; height: 500px;" src="../img/2.jpg" v-else >
    18. div>
    19. <script type="text/javascript">
    20. var app = new Vue({
    21. el: '#app',
    22. data: {
    23. flog:true,
    24. age:50,
    25. },
    26. methods:{
    27. xs(){
    28. this.flog=false
    29. this.age=10
    30. }
    31. }
    32. })
    33. script>
    34. body>
    35. html>
    v-for
    作用是根据数据生成列表结构
    数组经常和 v-for 结合
    使用语法是(item, index) in 数据
    item 和 index 可以结合其他指令一起使用
    数组长度的更新会同步到页面上是响应式的
    为循环绑定一个 key 值 :key=”值” 尽可能唯一
{{item}}省
  • {{index+1}}{{item}}省
  • {{index+1}}{{item.name}}{{item.age}}
    data:{
    array:['陕西','山西','河南'],
    objects:[
    {name:'admin',age:23},
    {name:'jim',age:22}
    ]
    }
    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8" />
    5. <title>title>
    6. <script src="js/vue.min.js" type="text/javascript" charset="utf-8">script>
    7. head>
    8. <body>
    9. <div id="app">
    10. <img v-bind:src="imgurl" />
    11. <img :src="imgurl" />
    12. <input type="button" @click="test1()" value="下一张"/>
    13. div>
    14. <script>
    15. //创建vue对象
    16. var app = new Vue({
    17. el:"#app",
    18. data:{
    19. array:["img/1.jpg","img/2.jpg","img/3.jpg"],
    20. imgurl:"img/1.jpg",
    21. index:0,
    22. },
    23. methods:{
    24. test1(){
    25. this.index++;
    26. this.imgurl=this.array[this.index];
    27. }
    28. }
    29. })
    30. script>
    31. body>
    32. html>

    使用v-for生成表格

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8" />
    5. <title>title>
    6. <script src="js/vue.min.js" type="text/javascript" charset="utf-8">script>
    7. head>
    8. <body>
    9. <div id="app">
    10. <select>
    11. <option v-for="c in ctity">{{c}}option>
    12. select>
    13. <table border="1">
    14. <tr>
    15. <td>序号td>
    16. <td>姓名td>
    17. <td>年龄td>
    18. tr>
    19. <tr v-for="(user,index) in users">
    20. <td>{{index+1}}td>
    21. <td>{{user.name}}td>
    22. <td>{{user.age}}td>
    23. tr>
    24. table>
    25. div>
    26. <script>
    27. //创建vue对象
    28. var app = new Vue({
    29. el:"#app",
    30. data:{
    31. ctity:["北京","上海","天津"], //List list = new ArrayList()
    32. users:[{name:"jim1",age:20},{name:"jim2",age:20},{name:"jim3",age:20}] //List list = new ArrayList()
    33. },
    34. methods:{
    35. },
    36. //生命周期钩子函数,在每个生命周期阶段,提供一个函数
    37. /* beforeCreate() {
    38. console.log("beforeCreate")
    39. },
    40. created() {
    41. console.log("create")
    42. }, */
    43. mounted() {//vue对象创建完毕,且与标签进行了绑定,类似于 onload
    44. console.log("mounted");// 向后端发送请求,接收后端响应的数据
    45. }
    46. })
    47. /* var s = "";
    48. for (var i = 0; i < ctity.length; i++) {
    49. s+=""
    50. } */
    51. script>
    52. body>
    53. html>

     

     

    Vue 实例生命周期
    每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时 在这个过程中也会运行一些叫做 生命周期钩子 的函数,这给了用户在不同阶段添 加自己的代码的机会。
    beforeCreate: function () {           //初始化前进行执行
    console.log('beforeCreatea ’);
    },
    created: function () {                     //初始化后进行执行
    console.log('createda ' );
    },
    beforeMount:function(){                 
    console.log('beforeMounta’);
    },
    mounted:function(){
    console.log('mounteda’);
    }

     

     

     

     

  • 相关阅读:
    【CNN】SENet——将注意力机制引入通道维度
    Skywalking(8.7)安装以及docker镜像打包
    JSON(详解)
    微信小程序中如何使用fontawesome6的免费图标
    Android T 远程动画显示流程其三——桌面侧动画启动流程(更新中)
    基于CppHttpLib的Httpserver
    [网络工程师]-路由配置-HSRP配置
    docker安装部署skywalking
    让终端命令更有时间观念
    247个Python练习案例附源码(百看不如一练)
  • 原文地址:https://blog.csdn.net/weixin_57197500/article/details/126190218