我是靠谱客的博主 愉快季节,最近开发中收集的这篇文章主要介绍Vue基础笔记,Vue-cli脚手架 Vue常用指令功能以及修饰符@vue/cliMVVM设计模式Vue指令,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

@vue/cli

@vue/cli安装

@vue/cli 目录和代码分析

项目的执行顺序,引入关系

 vue.config.js文件常用配置项

MVVM设计模式

面试常考题,MVVM与MVC有何区别?

Vue指令

V-bind 简写: 给标签属性设置Vue变量的值

动态class

动态style

v-on 简写@ 给标签绑定事件

v-on修饰符

v-on按键修饰符

v-model 表单value属性和Vue数据变量,双向数据绑定

v-model 修饰符

v-text v-html

v-show v-if 控制标签隐藏

v-for 列表渲染,所在标签结构,按数据数量循环生成

v-for更新检测

V-for中的key作用,

diff算法

Vue获取原生DOM

虚拟DOM


@vue/cli

全局模块的包名,开箱即用,不用过多的配置。

@vue/cli安装

全局安装命令

yarn global add @vue/cli

npm install -g @vue/cli

创建项目

vue create vuecli-demo 
创建完记得 cd vuecli-demo 
进入项目文件下,再 yarn serve
注意:
在 cmd 命令框里输入命令在 Powershell 里会报错!!!
# vue和create是命令, vuecli-demo是要创建的文件夹名称

@vue/cli 目录和代码分析

vuecil-demo        # 项目目录
    ├── node_modules # 项目依赖的第三方包
    ├── public       # 静态文件目录(公共的)
      ├── favicon.ico# 浏览器小图标
      └── index.html # 单页面的html文件(网页浏览的是它)
    ├── src          # 业务文件夹
      ├── assets     # 静态资源(资产)
        └── logo.png # vue的logo图片
      ├── components # 组件目录(组件)
        └── HelloWorld.vue # 欢迎页面vue代码文件 
      ├── App.vue    # 整个应用的根组件
      └── main.js    # 入口js文件
    ├── .gitignore   # git提交忽略配置(忽略)
    ├── babel.config.js  # babel配置
    ├── package.json  # 依赖包列表
    ├── README.md    # 项目说明( 自述文件)
	└── yarn.lock    # 项目包版本锁定和缓存地址
	主要文件及含义
node_modules下都是下载的第三方包
public/index.html – 浏览器运行的网页
src/main.js – webpack打包的入口文件
src/App.vue – vue项目入口页面
package.json – 依赖包列表文件

项目的执行顺序,引入关系

执行yarn serve 时就会被webpack打包这个项目,打包的时候运行入口文件main.js里的代码,实例化new Vue的对象,把以App.vue根组件内的标签样式和数据插入到index.html的页面上。

如图:

 vue.config.js文件常用配置项

自动打开网页,更改地址,关闭eslint代码检查(慎用)

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  //以下为添加属性
  devServer: {
    port: 3000,  //更改地址
    open: true	 //自动开启网页
  },
  lintOnSave: false		//关闭eslint代码检查
})

MVVM设计模式

MVVM是模型,视图,视图模型双向关联的一种设计模式。由三部分组成

M:model (模型):负责从数据库中取数据。

V:View (视图):负责展示数据的地方。

VM:viewmodel (视图模型层)连接view和model的桥梁,实现数据的双向绑定。

MVVM 即 Model-View-ViewModel 的简写,即模型-视图-视图模型,模型(Model) 指的是后端传递的数据,视图(View)指的是所看到的页面,视图模型(ViewModel)是 mvvm 模式 的核心,它是连接 view 和 model 的桥梁。它有两个方向:

一是将模型(Model)转化成视图(View),即将后端传递的数据转化成所看到的页面,实现的方式是:数据绑定,

二是将视图(View)转化成模型(Model),即将所看到的页面转化成后端的数据。 实现的方式是:DOM 事件监听,这两个方向都实现的,我们称之为数据的双向绑定

简单来说:实现了View和Model的自动同步,当Model的属性改变时,不用手动操作DOM元素,来改变View的显示,而是改变属性后该属性对应View层会自动改变。

面试常考题,MVVM与MVC有何区别?

首先要了解MVC的组成:

Model(模型):负责从数据库中取数据。

View(视图):负责展示数据的地方。

Controller(控制器):用户交互的地方,例如点击事件等等。

MVC 是 Model-View- Controller 的简写。即模型-视图-控制器。M 和 V 指的意思和MVVM 中的 M 和 V 意思一样。C 即 Controller 指的是页面业务逻辑,使用 MVC 的目的就是将M 和 V 的代码分离。MVC 是单向通信。也就是 View 跟 Model,必须通过 Controller 来承上启下

简单来说,MVC模式:Controller 将 Model 的数据展示在 View 上。

 前两点与MVVM模式功能基本相同,区别就在最后一点,MVC和MVVM都是一种设计思想。 主要就是MVC中Controller演变成MVVM中的viewModel。 解决了MVC中大量DOM操作使页面渲染性能降低,加载速度变慢的问题 。不仅简化了业务与界面的依赖,还解决了数据频繁更新的问题,不用再用选择器操作DOM元素。因为在MVVM中,View不知道Model的存在,ModelheViewModel也观察不到View,这种低耦合模式提高代码的可重用性。

MVC 和 MVVM 其实区别并不大,都是一种设计思想, MVC 和 MVVM 的区别并不是VM 完全取代了 C,只是在 MVC 的基础上增加了一层 VM,只不过是弱化了 C 的概念,ViewModel 存在目的在于抽离 Controller 中展示的业务逻辑,而不是替代 Controller,其它视图操作业务等还是应该放在 Controller 中实现,也就是说 MVVM 实现的是业务逻辑组件的重用,使开发更高效,结构更清晰,增加代码的复用性。

Vue指令

V-bind 简写: 给标签属性设置Vue变量的值

语法:v-bind:属性名="vue属性名"

简写: :属性名="vue变量"

<template>
  <div>
    <p><a :href="imgUrl">ajdsoas</a></p>
    <div><img :src="url" alt=""></div>
  </div>
</template>

动态class

语法:  :class="{类名:布尔值(true 或 false)}"

<p :class="{new : one}">one为true时,class名为new的样式生效</p>

<style scoped>
  .new{
    width: 12px;
    height: 12px;
  }
</style>

data () {
    return {
      one: true
    }
  },

动态style

语法: :style="{ css属性名:值}”

<p :style="{width: box}">可直接写 width: '21px' ,也可以用变量</p>

 data () {
    return {
      box:'21px'
    }
  },

v-on 简写@ 给标签绑定事件

语法:

v-on:事件名= "要是执行的少量代码”

v-on:事件名= "methods中的函数名“

v-on:事件名= "methods中的函数名(实参)"

<template>
  <div>
    <p>数量:{{num}} </p>
    <button v-on:click ='num = num + 1'>+1</button>
    <button @click ='jia'>+1</button>
    <button @click ='jiashi(11)'>+11</button>
  </div>
</template>

<script>
export default {
  data () {
    return {
      num: 1
    }
  },
  methods: {
    jia() {
      this.num++
    },
    jiashi(a) {
      this.num = this.num + a
    }
  }
}
</script>

v-on修饰符

  • .stop -阻止事件冒泡

  • .prevent -阻止默认行为 

  • .once -程序运行期间,只触发一次事件处理函数

v-on按键修饰符

@keyup.enter ——监测回车按键

@keyup.esc ——检测返回按键

事件处理 v-on修饰符— Vue.js

v-model 表单value属性和Vue数据变量,双向数据绑定

v-model="Vue数据变量"

双向数据绑定

  • 变量变化-> 视图自动同步

  • 视图变化->变量自动同步

下拉菜单绑定在select上

复选框绑定在每一项上,

  • 非数组——关联的是复选框的checked属性(true和false)

  • 数组——关联的是复选框的value属性

<template>
  <div>
    <select v-model="form">
      <option value="a">A</option>
      <option value="b">B</option>
      <option value="c">C</option>
    </select>
    <input type="checkbox" value="甲" v-model="name">甲
    <input type="checkbox" value="乙" v-model="name">乙
  </div>
</template>
<script>
export default {
  data(){
    return {
      form:"",
      name:[], //同一个v-model,关联的是复选框的value属性,用[]!!!
    }
  }
}
</script>

v-model 修饰符

  • .number  转型成数字类型

  • .trim  去除首尾空白字符(空格)

  • .lazy  在change时触发而非inupt时(失去焦点,内容改变时触发)

v-text v-html

把vue的变量赋值到当前的标签里

语法:

  • v-text= “vue数据变量” 只当作普通字符串处理
  • v-html= “vue数据变量” 可以解析成HTML标签

会覆盖插值表达式

v-show v-if 控制标签隐藏

语法:

  • v-show=‘vue变量’
  • v-if= ‘vue变量’ 可以配合使用v-else

区别:

v-show用的CSS方法,display:none(频繁切换使用)

v-if 直接从DOM树上删除 (移除)

v-for 列表渲染,所在标签结构,按数据数量循环生成

语法:

  • v-for = "(值变量,索引变量)in 目标结构"

  • v-for = "值变量 in 目标结构"

  • v-for = “(值变量,索引变量) in 对象“

想要谁循环就放到谁身上

v-for更新检测

数组变更方法会导致v-for更新,页面更新。

push() 向数组的末尾添加一个或多个元素,并返回新的长度。
pop() 删除数组的最后一个元素并返回删除的元素。
shift() 把数组的第一个元素从其中删除,并返回第一个元素的值。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
splice() 添加或删除数组中的元素。
sort() 对数组的元素进行排序。
reverse() 颠倒数组中元素的顺序。

数组非变更方法,返回新数组,不会导致v-for更新,可采用覆盖数组或this.$set()

filter() 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
concat() 连接两个或多个字符串
slice() 从已有的数组中返回选定的元素

V-for中的key作用,

可以当作索引配合虚拟DOM提高更新DOM的性能。要求key是唯一不重复字符串或者数值(有id用id,无id用索引)

diff算法

当原有的数组内容改变时导致v-for更新页面,会触发diff算法。同级对比对比新旧虚拟DOM。当根元素发生改变时,删除重新建立整个DOM树。根元素未改变是,DOM复用只更新属性。判断内容改变时,会优先根据key进行更新,没有key就地更新。

Vue获取原生DOM

通过$refs获取,功能相当于 document.getElementById

$refs也可以用来获取组件对象,向目标组件添加ref属性即可。

<template>
  <div id="a" ref="b"></div>
</template>

mounted () {
    console.log(document.getElementById('a'));
    console.log(this,$refs.b);
  }

虚拟DOM

<template>
  <div id="box">
    <p class="yangshi">123</p>
  </div>
</template>

本质是保存节点信息,属性和内容的一个JS对象。相当于:

const dom = {
    type: 'div',
    attributes:[{id:'box'}],
    children: {
        tupe: 'p',
        attributes:[{class:'yangshi'}],
        text: '123'
    }
}

最后

以上就是愉快季节为你收集整理的Vue基础笔记,Vue-cli脚手架 Vue常用指令功能以及修饰符@vue/cliMVVM设计模式Vue指令的全部内容,希望文章能够帮你解决Vue基础笔记,Vue-cli脚手架 Vue常用指令功能以及修饰符@vue/cliMVVM设计模式Vue指令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部