Vue 基础知识

一款轻量、干净的 Vue 后台管理框架 Nova-admin[1]是一个基于Vue3、Vite5、Typescript、Naive UI, 简洁干净后台管理模板,用简单的方式实现完整功能,并尽可能的考虑代码规范,易读易理解无过度封装,方便二次开发。 阅读详情

简介

vue的优势:轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快。vue是单页面应用,使页面局部刷新,不用每次跳转页面都要请求所有数据和dom

vue模板

 <script src="vue.js"></script>
  </head>
  <body>
    <div id="app">{{ name }}</div>
    <script>
      var vue = new Vue({
        el: "#app",
        data: {
          name: "tom"
        }
      });
    </script>

备注:

  • el:是挂载的DOM元素
  • data:是提供的数据模型
  • {{}}:是vue提供的模板语法,里面可以嵌套变量或者进行简单的运算
  • vue.js:是vue的外包

vue指令

v-text和v-html

v-text:是获取data里的所有数据(包括标签)

<div id="app">
      <div v-text="name"></div>
    </div>

    <script>
      var vue = new Vue({
        el: "#app",
        data: {
          name: "<span>姓名</span>"
        }
      });
    </script>

// 结果
<span>姓名</span>

v-html:是获取data里的数据(如果有标签,会把标签略掉)

<div id="app">
      <div v-html="name"></div>
    </div>

    <script>
      var vue = new Vue({
        el: "#app",
        data: {
          name: "<span>姓名</span>"
        }
      });

// 结果
姓名

v-model

特点:双向数据绑定: data中的数据--->渲染到页面;页面中输入框的内容变化---->data中的数据变化。

事件处理

<div id="app">
      <button v-on:click="getRes">按钮</button>
      <button @click="getRes">按钮</button>
      <button @click="getRes(event)">按钮</button>
      <h3>{{ num }}</h3>
    </div>

    <script>
      var vue = new Vue({
        el: "#app",
        data: {
          num: 10
        },
        methods: {
          getRes: function() {
            this.num++;
            console.log(this == vue); //这里的this指的是vue的实例对象
            console.log(event);
          }
        }
      });
    </script>

事件修饰符

<a href="https://www.baiud.com" @click.stop="fn"></a>
<a href="https://www.baiud.com" @click.prevent="fn"></a>
备注:a标签默认有默认跳转行为,添加了prevent修饰符,点击就不会页面跳转了。

属性绑定

语法: v-bind:属性名=值 或者:属性名=值

 <div id="app">
      <a :href="url">跳转</a>
      <button @click="fn">更改跳转地址</button>
    </div>

    <script>
      var vue = new Vue({
        el: "#app",
        data: {
          url: ""
        },
        methods: {
          fn: function() {
            this.url = "https://www.baidu.com";
          }
        }
      });
    </script>

样式绑定

<style>
      .red {
        width: 200px;
        height: 200px;
        background-color: red;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <div v-bind:class="{red:isShow}">我是测试div</div><!--样式-->
      <button @click="fn">更改跳转地址</button>
    </div>

    <script>
      var vue = new Vue({
        el: "#app",
        data: {
          isShow: false
        },
        methods: {
          fn: function() {
            this.isShow = !this.isShow;// 绑定样式
          }
        }
      });
    </script>

类名数组形式

<style>
      .redName {
        width: 200px;
        height: 200px;
        background-color: red;
      }
      .fzName {
        font-size: 40px;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <div :class="[red,fz]">我是测试div</div><!--类名数组-->
      <button @click="fn">更改跳转地址</button>
    </div>

    <script>
      var vue = new Vue({
        el: "#app",
        data: {
// 绑定
          red: "redName",
          fz: "fzName"
        },
        methods: {
          fn: function() {
            this.red = "";
          }
        }
      });
    </script>

style类绑定

<div id="app">
      <div :style="{width:w,height:h,border:bd}">111</div>
    </div>

    <script>
      var vue = new Vue({
        el: "#app",
        data: {
// 绑定
          w: "200px",
          h: "200px",
          bd: "1px solid #000"
        },
        methods: {
          fn: function() {
            this.w = "300px";
          }
        }
      });
    </script>

分支和循环结构

条件

语法: v-if v-else-if ... v-else

<div id="app">
      <p v-if="sal>=8000">吃大餐</p>
      <p v-else-if="sal>=5000&&sal<8000">在家吃</p>
      <p v-else="sal>=8000">没得吃</p>
    </div>

    <script>
      var vue = new Vue({
        el: "#app",
        data: {
          sal: 5000
        },
        methods: {
          fn: function() {
            this.w = "300px";
          }
        }
      });
    </script>

v-if和v-show

<div id="app">
      <button @click="fn">按钮</button>
      <div v-show="flag">我是div元素</div>
      <div v-if="flag">我是div元素</div>
    </div>

    <script>
      var vue = new Vue({
        el: "#app",
        data: {
          flag: false
        },
        methods: {
          fn: function() {
            this.flag = !this.flag;
          }
        }
      });
    </script>
注意v-if和v-show的区别:

v-if是是否渲染显示出来,v-show是已经渲染了,切换了display:none属性。
如果页面频繁切换的时候,考虑到性能问题,推荐使用 v-show

循环

代码结构:

<div id="app">
      <!-- 第一种写法 -->
      <ul>
        <li v-for="item in students">{{ item }}</li>
      </ul>
      <!-- 第二种写法 -->
      <ul>
        <li v-for="(item,index) in students">{{ item }}---{{ index }}</li>
      </ul>
    </div>

    <script>
      var vue = new Vue({
        el: "#app",
        data: {
          students: ["tom", "jim", "jack"]
        }
      });
    </script>

vue基础语法

表单操作

表单绑定

 <div id="app">
      <form action="">
<!--设置绑定-->
        姓名 <input type="text" v-model="name" />
        性别
        <input type="radio" v-model="sex" value="男" />男
        <input type="radio" v-model="sex" value="女" />女 爱好
        <input type="checkbox" value="唱歌" v-model="hobby" />唱歌
        <input type="checkbox" value="跳舞" v-model="hobby" />跳舞
        <input type="checkbox" value="敲代码" v-model="hobby" />敲代码
        你的户籍地址
        <select v-model="city">
          <option value="保定">保定</option>
          <option value="北京">北京</option>
          <option value="上海">上海</option>
        </select>
        你的想法是?
        <textarea v-model="ideas" cols="30" rows="10"></textarea>
        <input type="button" @click="handle" />
      </form>
    </div>
<script>
      let vue = new Vue({
        el: "#app",
        data: {
          name: "",
          sex: "",
          hobby: [],
          city: [],
          ideas: ""
        },
        methods: {
          handle: function() {
// 绑定数据
            console.log(this.name);
            console.log(this.sex);
            console.log(this.hobby);
            console.log(this.city);
            console.log(this.ideas);
          }
        }
      });
    </script>

表单修饰符

<div id="app">
      <input type="text" v-model.trim="text" />
      <input type="text" v-model.lazy="text" />
      <div>{{ text }}</div>
      <button @click="handle">测试</button>
    </div>
    <script>
      let vue = new Vue({
        el: "#app",
        data: {
          text: ""
        },
        methods: {
          handle: function() {
            console.log(this.text.length);
          }
        }
      });
    </script>
备注:
.trim是去掉前后的空格
.lazy是失去焦点以后才会触发
.number是输入的是字符串,会自动转换成数字

计算属性

特点:

  1. 方法调用的时候需要用小括号,计算属性不需要
  2. 计算属性有缓存,调用多次,还是从缓存中读取,方法调用1次执行1次。

侦听器

用法:侦听器一般用于执行异步操作或者比较消耗性能的时候,主要是用于监听data中的数据变化。

过滤器

简介:vue中的过滤器一般用于日期格式化或者把字符串比如大写变小写等等格式处理

过滤器总结:vue中的过滤器有全局过滤器和局部过滤器两种,局部的只能在本组件中起作用,全局的在整个项目中起作用。

全局过滤器语法:

 Vue.filter("过滤器名字", function(val) {
   处理逻辑
 });

局部过滤器语法:

filters: {
   过滤器名称: function(val) {
           处理逻辑
    }
  }

Vue生命周期

挂载阶段:主要是初始化数据用的

  1. beforeCreate
  2. created
  3. beforeMount
  4. mounted

更新阶段:元素或者组件的变更

  1. beforeUpdate
  2. updated

销毁阶段:

  1. beforeDestroy
  2. destroyed

总结:

1、created函数及以后才能处理data中的数据
2、mounted函数及以后才能对DOM元素获取并处理。(vue不建议直接操作DOM元素)

Vue3基础知识 Vue Router 4与3的主要区别在于API设计和功能强化。Vue Router 4采用createRouter()创建路由,使用独立函数定义路由模式,提供更清晰的守卫系统和组合式API支持。相比Vue Router 3,它在动态路由匹配、组件注入和TypeScript支持等方面都有改进,同时减少了30%的包体积。 Vue 3推荐使用Pinia作为状态管理工具,相比Vuex 4,Pinia取消了mutations,提供更简洁的API和更好的TypeScript支持。Vuex 4则保留了传统架构,适合已有 阅读详情

相关推荐

动态修改 Vue 类的宽度

通过上述代码,我们实现了在 Vue 中动态修改类的宽度。通过使用动态绑定语法和计算属性,我们可以根据数据的变化来实时更新类和样式,实现更灵活的界面效果。在 Vue 中,我们可以使用动态绑定来修改元素的类和样式。如果你想要通过编程的方式给一个类增加宽度,你可以使用 Vue 的绑定语法和计算属性来实现。首先,我们需要在 Vue 实例中定义一个数据属性,用于控制类的宽度。属性的值返回一个布尔值,用于判断是否添加宽度增加的类。绑定语法来绑定类,并使用计算属性来动态计算类的宽度。的值来判断是否添加宽度增加的类。

CyberLynxX的博客 542

vue使用‘:style‘控制动态width样式!

【代码】vue使用‘:style‘控制动态width样式!

TangMonk的博客 1454

告别sgmediation!Stata中介效应分析新选择:mediation包完整操作指南

本文介绍了Stata中介效应分析从传统sgmediation命令向mediation包的范式升级。重点阐述了如何使用medeff和medsens命令进行更严谨的因果推断,并执行关键的敏感性分析,以评估结果对未观测混杂的稳健性,为学术研究提供发表级的分析工具。

redis7keeper的博客 1159

Vue项目:style样式篇

目录 一、动态使用样式 二、全局公共css样式文件 2.1 main.js中引入 2.2 index.html引入 三、单个vue文件中引入样式 四、样式作用范围控制 4.1 scoped私有作用域 4.2 混合使用 4.3 深度作用选择器 4.4 动态生成的dom的样式 一、动态使用样式 使用场景:根据不同的值使用不同的样式,或者给样式某个属性设置一个变量值 使用方法:...

happy81997的博客 5万+

Proteus仿真——电压比较器

电压比较器是一种对输入信号进行鉴别与比较的电路,是组成非正弦波发生电路的基本单元电路。常用电压比较器有如下几种:单限比较器、滞回比较器、窗口比较器、集成电压比较器等。

weixin_58745307的博客 3377

基于STM32 FOC下桥三电阻采样方式的电机相电流重构方法

如何提高三电阻采样的调制率

wanrenqi的博客 9198

vue中宽度动态设置的几种常用方法

我们可以使用resize事件,来动态的实时获取界面宽度,再把根据这个div与设计稿的比例,动态的设置宽度。通过addEventListener,把事件添加到了window上,当当前组件不用时,需要在onUnmounted中,将该事件销毁,节约资源。二、今天在使用vant组件进行开发时,vant组件中swipe中的宽度设置,只能接受px。一.一种常见的是使用vw的方式设置宽度,这样当我们的屏幕发生变化时,可以跟着动态的修改。场景:当我们在项目开发中,有时候某个宽度,需要根据界面当前的宽度动态设置。

weixin_45155922的博客 4428

中科蓝讯(第一次使用指南)

中科蓝讯 新手指南

qq_48579018的博客 1万+

vuejs适合写什么项目_VueJS 基础知识及项目总结

1、build :dev-server.js 是在使用终端命令时启动时执行的,里面可以修改端口号 (修改第16行即可)2、index.html 是整个文件的入口src 装的是你写入的文件3、main.js 是当前文件的主要的逻辑入口APP.vue 是根组件4、一些事件和方法v-on:click="事件名"v-on:keyup="事件名" //在按下任意键时触发v-on:keyup.enter="...

weixin_31755771的博客 551

Ubuntu22.04下,用Fast-LIVO2+3DGS重建桌面小物件:从点云到高清模型的保姆级避坑实录

本文详细介绍了在Ubuntu22.04环境下,使用Fast-LIVO2与3DGS技术进行桌面小物件三维重建的完整流程。从环境配置、数据采集到点云-图像对齐和3DGS训练,提供了针对小物件优化的参数设置和避坑指南,帮助用户实现媲美商业扫描仪的高清模型重建效果。

weixin_30897233的博客 399

YOLOv11改进策略【卷积层】| TIP 2025 MFA 多阶段特征聚合 大核扩感受 + 多梯度融合,强效增强弱小目标特征

红外弱小目标尺寸极小、信噪比低,在特征传递中极易丢失信息;常规卷积感受野单一、梯度源不足,难以同时捕捉局部细节与全局上下文,导致小目标特征表达弱、检测漏检。因此提出多阶段特征聚合 MFA,用大核卷积+多分支+通道注意力强化小目标特征提取。

Limiiiing的博客 585

Vue基础知识测试

Vue基础知识测试

简单点的博客 8234

Open3D 计算点云法向量的夹角【2026最新版】

计算法向量的夹角,博客长期更新,本文最新更新时间为:2026年3月7日。

点云侠的博客 3131

VueJs基础知识学习

--1、导入Vue的包-->

zwh1636771005的博客 225

AUTOSAR SHE 密钥更新协议

依赖内存槽的使用用例,内存槽有不同的保护协议。M2是新的计数值C_ID‘,相应的标志位F_ID',0填充第一个块,以及新的密钥K_ID'的组合的CBC算法加密的消息。例如,我要更新一个MASTER_ECU_KEY, 那么参考上表,我需要知晓Non-volatile的MASTER_ECU_KEY (即授权密文为MASTER_ECU_KEY自己的密文).内存的更新协议分为两部分,第一部分是实际内存更新到发送一个秘密且真实的key到SHE,然后第二部分为验证,即提供给后台一个key更新成功的证据。

weixin_46481662的博客 3279

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

vue 基础知识

v-if用于基于条件的渲染,当条件为假时,元素将不会被渲染到 DOM 中。v-show用于基于条件的显示/隐藏,元素始终存在于 DOM 中,只是通过改变display样式属性来控制显示或隐藏。局部注册:在一个 Vue 实例或另一个组件中注册。全局注册:在整个应用中可用。使用单文件组件(SFCs):通常在项目中使用。<template>

m0_69850580的博客 1634

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

vuejs基础知识

@vuejs基础知识整理 vuejs基础整理 主要整理了vue的mmvm模式和基础的指令 mmvm模式 mmvm模式拆分解释 Model 负责数据存储 View 负责页面显示 View Model 负责业务逻辑处理(比如ajax请求等),对数据进行加工后交给视图展示。 MMVM要解决的问题是将业务逻辑代码与视图代码进行完全分离,使各自的职责更加清晰,后期代码维护简单。 3...

developestudent的博客 413

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

vue基础知识汇总

vue基础知识汇总

yuandawang的博客 6169

【VUE】【基础知识】VUE简介

Vue 是一个非常适合开发现代 Web 应用的框架,它的响应式、组件化、轻量级特性让我们开发过程中受益匪浅。通过学习和实践 Vue 生态系统中的 Vue Router、Vuex、Vue CLI 等工具,能够更加高效地开发和管理我的应用。

pandaHua的博客 1554

VueJS 基础知识及项目总结

1、build :dev-server.js 是在使用终端命令时启动时执行的,里面可以修改端口号 (修改第16行即可) 2、index.html 是整个文件的入口 src 装的是你写入的文件3、main.js 是当前文件的主要的逻辑入口 APP.vue 是根组件 4、一些事件和方法 v-on:click="事件名" v-on:keyup="事件名" //在按下任意键时触发...

weixin_33690963的博客 299

VUE3基础知识

本文深入浅出地解析了Vue 3的核心特性,包括其革新的组合式API、新增的内置组件、详尽的生命周期管理以及高效的状态管理机制。

m0_64455070的博客 1006

《前端Vue基础知识》

3.16、v-cloak

maeryang0510的博客 414

vue基础知识小demo

1、用vue基础知识,做的一个小demo ,实现功能是,任务表的完成与删除; <template> <div id="box"> <input @keyup.enter="shuru" type="text" v-model="inputinfo" /> <div class="box-inner"> <ul&gt...

qq_42972187的博客 316

【vue】Vue 重要基础知识清单

Vue 是一款功能强大的前端框架,包含核心概念、组件系统、状态管理等重要知识体系。基础部分包括实例生命周期、模板语法、数据绑定和事件处理;组件系统涵盖组件通信、插槽等特性;状态管理涉及 Vuex/Pinia 的核心用法;路由管理包含 Vue Router 的基础配置和进阶功能;Vue 3 新增了组合式 API 等现代特性。此外,构建工具、开发调试和常用插件也是 Vue 生态的重要组成部分。掌握这些知识能够为构建高效 Vue 应用奠定基础。

weixin_56334307的博客 1055

vue 第一天基础知识总结

vue 第一天基础知识总结

Little_Fishs的博客 359
上一篇: Git管理系统基础知识
下一篇: 微信小程序基础知识
HUSBANDL
博客等级 码龄6年 38粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值