美文网首页
VUE 知识点汇总:

VUE 知识点汇总:

作者: 饼子_5a37 | 来源:发表于2022-10-10 19:19 被阅读0次

已安装好node.js 16.14.2

一、项目脚手架

  • 第一步:
npm install -g @vue/cli 或  yarn add -g @vue/cli
  • 第二步:
vue create 项目的名字(尽量用英文)
  • 第三步:运行项目
npm run serve
> 安装新的软件包,使用npm i 依赖包的名字 或 yarn add 依赖包的名字

二、VUE相关概念

  • vue3 渐进式javaScript 框架

  • 特点:组件化、虚拟dom、diff算法

  • vue文件以.vue 结尾, 是一个SFC(Single-File-Component) 单文件组件

  • 遵循 MVVM架构,Model-View-ViewModel,重点是实现了数据的双向绑定,指令用的是v-model、v-bind、v-on

  • 理解M-V-VM 模型,VIewModel 是实现虚拟dom、diff算法的核心点

1665900958510.png
  • 内置指令:

    • v-text:插值绑定、语法也可以是 {{}}

    • v-html:绑定html代码片段,相当于是原生的 innerHtml、 有安全性问题,容易XSS攻击

    • v-show: 显示一个dom元素,dom元素存在后不会被删除

    • v-if、v-else-if、v-else: 动态显示一个dom元素,条件成立,dom元素才会真正显示出来、否则移除(不新增)真实dom

    • v-for :循环当前所在的元素,当前!当前!当前!

    • v-on: 简写@, 绑定事件,鼠标的事件、键盘的事件、例如@click,@dbclick、@mouseup、@mousedown、@mousemove

    • v-bind: 绑定属性指令,可以是组件的 prop或者 attribute(width、height、style)

    • v-model: 值的双向绑定,通常用与input(text、password、radio、checkbox、number)、select

    • v-slot: 声明具名插槽或是期望接收 props 的作用域插槽

<!-- 具名插槽 -->
<BaseLayout>
 <template v-slot:header>
   Header content
 </template>

 <template v-slot:default>
   Default slot content
 </template>

 <template v-slot:footer>
   Footer content
 </template>
</BaseLayout>

<!-- 接收 prop 的具名插槽 -->
<InfiniteScroll>
 <template v-slot:item="slotProps">
   <div class="item">
     {{ slotProps.item.text }}
   </div>
 </template>
</InfiniteScroll>
  • v-cloak 防止闪现指令、v-once 静态内容指令、 v-pre 跳过编译指令

  • 属性

    • data:返回一个对象,这个对象是局部的状态,可以通过this直接引用
<template>
  <div class="about">
    <el-form label-position="left" label-width="100px" style="max-width: 460px">
      <el-form-item label="用户名">
        <el-input v-model="formObj.username" />
      </el-form-item>
      <el-form-item label="密码">
        <el-input v-model="formObj.password" />
      </el-form-item>
      <el-form-item>
        <!-- 使用动态跳转方式 -->
        <el-button type="primary" @click="submitForm()">立即登录</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  name: "LoginView",
  data() {
    return {
      // 在 eslint 中的标准的对象,k-value 中的 value通常需要使用 单引号
      formObj: {
        username: "",
        password: "",
      },
    };
  },
}

在template中不用写this

  • computed:计算属性,用计算属性的前提是:

    • 和vuex中的状态属性之间有关联

    • 需要用到的三元表达式代码

这里面不能写耗时的一些代码,必须有返回值

computed: {
    orderStatData2() {
        return this.$store.state.home.orderStatArr;
    },
},
  • watch:侦听器,作用:每次响应式属性(data中返回的局部状态)发生变化时触发一个函数。

    监听的方法名字是和局部状态中的状态名字一一对应。

    监听到变化后,执行的是一个异步操作,同步的话会使用计算属性

export default {
   data() {
       return {
           question: '',
           answer: 'Questions usually contain a question mark. ;-)'
       }
   },
   watch: {
       question(newQuestion,oldQuestion) {
           if(newQuestion,include('?')){
               this.getAnswer()
           }
       }
   }
}
  • props声明:接受父组件传入的相应状态或方法

    props在当前组件中是只读的

export default {    props: {        
title:String,                
likes:Number,    }}
  • mixin:对代码的复用进行抽取

    弊端:大项目里命名不可控,容易冲突,不好发现

    优点:代码复用,加强团队之间的代码协作

export const score = {
    //这里和组件中的export default{}中的属性平级关系
  methods: {
    //弹出分数
    alentScore(student, score1) {
      alert(student + "的成绩是:" + score1);
    },
  },
};

局部混入的使用

1665902796205.png
  • 组件的通信

    第一种:父传子

    props:传入的属性是只读的

    第二种:子传父 this.$emit()

<Demo @atguigu="test"/>或<Demo v-on:atguigu="test"/>

第三种:跨组件(2.0之前,3.0之后this.$on()取消了)

this.on() 在需要的组件中

第四种:插槽

默认插槽、具名插槽、作用域插槽

1665902913820.png 1665902956681.png

作用域插槽:商品列表(elementUI中的table组件)

数据在子组件中,但是自己不能决定结构,需要将数据传递给父组件,父组件决定结构

  • this.$nextTick:确保dom渲染完成后,执行一个方法,保证界面体验无错误

    适用的场景


    1665903153486.png

三、路由(vue-router)

路由是前端框架定制化后的一种对界面跳转的新叫法

  • hash路由:地址栏的路径规则有#这个符号

  • history路由:传统的用符号/分割这个地址(刷新页面,会提示404错误,需要后端做代理配置)

  • 路由的定义方式:

路由懒加载,延迟加载 import中的值是 路径地址 component: () => import("../layout/BaseLayout.vue")

1665903203963.png
  • 路由的传参

第一种:使用path中的占位符号(定义的方式 :id,id相当于形参)

多用于嵌套路由

1665903298831.png

跳转的页面接收:

1665903337913.png

第二种:push方法

多用于单页面间的跳转

常规用法

1665903376496.png

传递参数的用法

1665903417941.png

小程序使用的 uni.navigateTo:跳转单页面 uni.switchTab:跳转到tab导航页面

  • 导航守卫

    全局的前置守卫

    • 界面跳转时增加一个进度条效果

    • 判断用户是否有权限访问当前页面

//to:要跳转的导航地址  from:当前页面  next:执行跳转页面的方法 
router.beforeEach((to,from,next) =>{
    //判断是否登录过了,如果是,跳转到to传入的页面地址,反之,拦截页面跳转,还停留在登陆界面
    if(to.name !== 'login' && !isAuthenticater)
    next({name:'login'})
    else next()
})

全局的后置守卫

  • 页面开始渲染时,修改地址栏的信息、和title
1665903476286.png
  • 路由元信息 定义的规则: meta:{}

使用$route.meta 获取到元信息

1665903509586.png

用到的组件库

Element-ui 2.2.17

uView 2.0

相关文章

  • vue知识点汇总

    1 对于MvvM的理解? MVVM是Model_View_ViewModel的缩写Model: 是数据模型,可...

  • Vue知识点汇总

    Q:什么是mvvm mvvm是一种设计思想m->model 数据层v->view 视图层vm->viewmodel...

  • vue 知识点 汇总

    原网址 :https://mp.weixin.qq.com/s/6Mo5csEDVKMq4-v6Yi8ZPQ Gi...

  • vue知识点汇总

    mvvm和mvc的区别: view 是视图层, model是数据层,比如本地数据和存储于数据库的数据 当view和...

  • vue知识点汇总

    1、vue的生命周期 初始化: beforeCreate:一般没啥用,数据没挂载,DOM 没有渲染出来 creat...

  • VUE 知识点汇总:

    已安装好node.js 16.14.2 一、项目脚手架 第一步: 第二步: 第三步:运行项目 二、VUE相关概念 ...

  • VUE知识点汇总:

    已安装好node.js 16.14.2 一、项目脚手架 第一步: npm install -g @vue/cli ...

  • vue 组件大全,持续更新中...

    1.Vue开源项目库汇总2.Vue常用经典开源项目汇总参考-海量3.vue 资料合集4.vue开源项目库汇总5.v...

  • Vue 小知识点汇总

    插槽slot 如何使用slot的同时传数据(v-slot:name="value") situation: 父页面...

  • Vue知识点精简汇总

    一、 组件component 1. 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一。组...

网友评论

      本文标题:VUE 知识点汇总:

      本文链接:https://www.haomeiwen.com/subject/pnwoartx.html