基础篇:带你打开Vue的大门(一)

news2024/12/23 23:54:11

 

学习目标:

  1. 理解Vue的基本概念:掌握Vue.js是什么,它的设计理念,以及它在现代Web开发中的应用。
  2. 掌握Vue的基本语法:学习Vue的基础指令和语法,能够使用Vue构建简单的交互式界面。
  3. 熟悉Vue组件化开发:理解组件的概念,学会如何创建和使用Vue组件。
  4. 掌握数据绑定和事件处理:学会如何在Vue中实现数据双向绑定和事件处理机制。
  5. 了解Vue生命周期:熟悉Vue实例的生命周期钩子函数,能够在合适的时机进行操作。
  6. 初步掌握Vue路由和状态管理:了解Vue Router的基本使用和Vuex的状态管理概念。

目录

学习目标:

学习内容:

Vue简介

Vue.js的定义和特点

Vue的发展历程和社区生态

Vue环境搭建

Vue CLI的安装和使用

Vue项目的基本结构

Vue基本语法

模板语法:插值、指令等

数据绑定:单向数据绑定和双向数据绑定

计算属性和侦听器

Vue组件

组件的定义和注册

组件的props和自定义事件

组件的props

定义props

组件间的通信


 

学习内容:

  1. Vue简介

    • Vue.js的定义和特点

Vue.js是一个用于构建用户界面的渐进式JavaScript框架。它是一个开源的框架,由尤雨溪于2014年创建,并在开发者社区的支持下持续发展。

Vue.js的特点包括:

  1. 渐进式框架:Vue.js采用渐进式的设计,开发者可以逐渐引入Vue.js到现有的项目中,也可以使用Vue.js构建全新的应用程序。

  2. 轻量级:Vue.js的核心库只有几十kb大小,因此加载速度很快,同时也不会占用太多的系统资源。

  3. 易学易用:Vue.js的语法简洁明了,开发者可以很快上手并开始构建应用程序。同时,Vue.js的文档也非常详细,可以提供开发者所需的各种指导和示例。

  4. 双向数据绑定:Vue.js支持双向数据绑定,可以通过简单的语法实现数据的双向同步。这使得开发者可以更加方便地管理和更新数据。

  5. 组件化开发:Vue.js鼓励组件化开发,将界面拆分成各个独立的组件,降低代码的耦合度,提高代码的可复用性和可维护性。

  6. 生态系统丰富:Vue.js拥有丰富的生态系统,有许多插件和工具可供选择,开发者可以根据自己的需求进行扩展和定制。

总的来说,Vue.js是一款简单易用、灵活且高效的前端框架,适用于构建各种规模的应用程序。它的渐进式设计

    • Vue的发展历程和社区生态

Vue.js是一款轻量级、高效、易用的前端JavaScript框架,由尤雨溪于2014年首次发布。它的设计灵感来源于AngularJS和React,并结合了它们的优点,成为了一款受欢迎的前端框架。

Vue.js的发展历程如下:

  1. 2013年:尤雨溪开始编写Vue.js作为一个个人项目。

  2. 2014年:Vue.js的首个版本0.6.0发布,引起了一些开发者的关注。

  3. 2015年:Vue.js发布了1.0版本,正式进入公众视野。这个版本是一个重大的改进,并引入了一些重要的特性,如组件系统和虚拟DOM。

  4. 2016年:Vue.js 2.0发布,带来了全新的重写,并引入了更多的改进和性能优化。2.0版本的发布扩大了Vue.js的用户基础,并吸引了更多的开发者关注。

  5. 2018年:Vue.js推出了3.0版本的预览版,这个版本在性能和体验方面有了重大的改进,包括使用Proxy代理替代了Object.defineProperty进行响应式数据处理,并引入了很多新的特性和优化。

Vue.js的社区生态非常活跃,拥有庞大的开发者社区和丰富的插件库。开发者可以在官方的Vue.js网站上获取大量的文档、教程和示例代码。在社区中,开发者可以交流经验、分享开发技巧,并获得问题解答和支持。

Vue.js的插件库Vue CLI和Vue Router提供了丰富的工具和组件,使开发者可以更方便地构建和管理Vue.js应用程序。此外,还有许多第三方插件和组件库,如Element UI、Vuetify和Ant Design Vue等,提供了丰富的UI组件和工具,进一步扩展了Vue.js的功能和应用场景。

Vue.js也广泛应用于各种项目和企业,许多知名公司和网站都使用Vue.js作为前端框架,如华为、腾讯、阿里巴巴、京东、百度等。

总的来说,Vue.js通过其简洁高效的特性和活跃的社区生态,成为了当今最受欢迎和广泛应用的前端框架之一。它的发展历程和社区生态为开发者提供了灵活、可扩展和高效的前端开发解决方案。

  1. Vue环境搭建

    • Vue CLI的安装和使用

Vue的环境搭建需要以下步骤:

  1. 安装Node.js:首先需要安装Node.js,因为Vue CLI需要依赖Node.js运行环境。可以在Node.js官网下载适合自己操作系统的安装包,并按照提示安装即可。

  2. 安装Vue CLI:在安装完Node.js后,可以使用npm(Node.js的包管理工具)来安装Vue CLI。在终端或命令行中输入以下命令:

    npm install -g @vue/cli
    

    这将全局安装Vue CLI。

  3. 创建新项目:安装完成Vue CLI后,可以使用以下命令来创建新的Vue项目:

    vue create <项目名称>
    

    在命令中将<项目名称>替换为自己想要的项目名称,并按照提示选择相应的配置选项。

  4. 启动开发服务器:项目创建完成后,进入项目目录:

    cd <项目名称>
    

    然后可以使用以下命令来启动开发服务器:

    npm run serve
    

    这将启动一个本地开发服务器,并在浏览器中展示你的Vue应用。

  5. 开始开发:现在你已经成功搭建了Vue的开发环境,可以开始开发你的Vue应用了。你可以在项目的src文件夹中编写Vue组件,使用Vue的各种特性和工具来构建强大的前端应用。

以上步骤完成后,你就成功搭建了Vue的开发环境,并可以使用Vue CLI来创建和管理Vue项目。你可以通过Vue CLI的官方文档来了解更多关于Vue CLI的使用和配置。

    • Vue项目的基本结构

Vue项目的基本结构通常如下:

  1. public/index.html:这是项目的主HTML文件,其中包含了项目的整体结构和基础的HTML代码。在这个文件中,你可以添加全局的CSS样式、引入其他的JS文件等。

  2. src/main.js:这是项目的入口文件,其中包含了Vue实例的初始化和挂载。在这个文件中,你可以引入Vue库、配置Vue插件、创建Vue实例等。

  3. src/App.vue:这是项目的根组件,也是Vue组件的入口。在这个文件中,你可以编写项目的整体布局、子组件的引入和使用,以及项目的全局逻辑。

  4. src/components:这是存放项目组件的文件夹,可以按照功能或者页面来组织组件。在这个文件夹中,你可以创建各种子组件,并在App.vue中引入和使用。

  5. src/assets:这是存放项目静态资源的文件夹,如图片、字体等。可以按照需要创建子文件夹,用于组织不同类型的资源文件。

  6. src/router:这是存放项目路由配置的文件夹,可以使用Vue Router来定义项目的路由规则。通过路由配置,可以实现页面之间的跳转和导航。

  7. src/store:这是存放项目的状态管理的文件夹,可以使用Vuex来管理项目的全局状态。在这个文件夹中,你可以定义和管理项目中的各种状态和数据。

除此之外,还可以根据项目的需求自定义文件夹和文件,来组织和管理项目的其他代码、样式和资源。

注意:以上结构是一种常见的Vue项目结构,实际项目的结构可能会有所不同,根据具体的开发需求和团队约定来进行组织和配置。

  1. Vue基本语法

    • 模板语法:插值、指令等

Vue的基本语法主要包括模板语法和指令,下面是一些常见的模板语法和指令用法:

  1. 插值:使用双大括号“{{}}”来进行数据的插值操作,将数据绑定到HTML标签或文本中。

    <div>
      <p>Hello, {{ name }}</p>
    </div>
    

    在上面的例子中,name是一个Vue实例中的数据,通过插值语法将它绑定到了p标签中。

  2. 指令:Vue提供了一些特殊的指令,可以用于对DOM元素进行操作和数据绑定。

    • v-bind:用于绑定元素的属性或表达式。

      <div v-bind:class="isRed ? 'red' : 'blue'">
        <p>This is a red/blue paragraph.</p>
      </div>
      

      上面的例子中,通过v-bind指令将isRed属性的值绑定到div标签的class属性上,根据isRed的值来动态选择red或blue样式。

    • v-if/v-else:用于根据条件判断是否渲染元素。

      <div v-if="showMessage">
        <p>Message is shown.</p>
      </div>
      <div v-else>
        <p>Message is hidden.</p>
      </div>
      

      在上面的例子中,根据showMessage属性的值来决定显示哪个div块。

    • v-for:用于遍历数组或对象,生成列表或动态元素。

      <ul>
        <li v-for="item in items" :key="item.id">{{ item.name }}</li>
      </ul>
      

      在上面的例子中,通过v-for指令遍历items数组,生成对应的li元素。

  3. 计算属性:使用computed属性来定义计算属性,可以根据一些已有的数据进行计算,提供一个新的派生属性。

    computed: {
      fullName() {
        return this.firstName + ' ' + this.lastName;
      }
    }
    

    在上面的例子中,定义了一个fullName计算属性,根据firstName和lastName的值返回一个新的合并名字。

这只是Vue的基本语法介绍,Vue还提供了很多其他的语法和功能,如事件处理、组件化等,可以根据具体的项目需求来深入学习和应用。

    • 数据绑定:单向数据绑定和双向数据绑定

Vue的基本语法主要包括模板语法和指令,下面是一些常见的模板语法和指令用法:

  1. 插值:使用双大括号“{{}}”来进行数据的插值操作,将数据绑定到HTML标签或文本中。

    <div>
      <p>Hello, {{ name }}</p>
    </div>
    

    在上面的例子中,name是一个Vue实例中的数据,通过插值语法将它绑定到了p标签中。

  2. 指令:Vue提供了一些特殊的指令,可以用于对DOM元素进行操作和数据绑定。

    • v-bind:用于绑定元素的属性或表达式。

      <div v-bind:class="isRed ? 'red' : 'blue'">
        <p>This is a red/blue paragraph.</p>
      </div>
      

      上面的例子中,通过v-bind指令将isRed属性的值绑定到div标签的class属性上,根据isRed的值来动态选择red或blue样式。

    • v-if/v-else:用于根据条件判断是否渲染元素。

      <div v-if="showMessage">
        <p>Message is shown.</p>
      </div>
      <div v-else>
        <p>Message is hidden.</p>
      </div>
      

      在上面的例子中,根据showMessage属性的值来决定显示哪个div块。

    • v-for:用于遍历数组或对象,生成列表或动态元素。

      <ul>
        <li v-for="item in items" :key="item.id">{{ item.name }}</li>
      </ul>
      

      在上面的例子中,通过v-for指令遍历items数组,生成对应的li元素。

  3. 计算属性:使用computed属性来定义计算属性,可以根据一些已有的数据进行计算,提供一个新的派生属性。

    computed: {
      fullName() {
        return this.firstName + ' ' + this.lastName;
      }
    }
    

    在上面的例子中,定义了一个fullName计算属性,根据firstName和lastName的值返回一个新的合并名字。

这只是Vue的基本语法介绍,Vue还提供了很多其他的语法和功能,如事件处理、组件化等,可以根据具体的项目需求来深入学习和应用。

    • 计算属性和侦听器

    • 在Vue中,计算属性和侦听器是用来处理数据的两个重要概念。

    • 计算属性: 计算属性是一种可以根据依赖的数据动态计算得出的属性。计算属性基于它们的依赖进行缓存,只有当依赖的数据发生变化时才会重新计算。计算属性的结果会被缓存起来,除非依赖的数据发生改变,否则下次访问计算属性时会直接返回缓存的结果。

      示例:

      <template>
        <div>
          <p>{{ fullName }}</p>
        </div>
      </template>
      
      <script>
        export default {
          data() {
            return {
              firstName: 'John',
              lastName: 'Doe'
            };
          },
          computed: {
            fullName() {
              return `${this.firstName} ${this.lastName}`;
            }
          }
        };
      </script>
      

      在上面的例子中,fullName是一个计算属性,它依赖于firstName和lastName两个数据属性。当firstName或lastName发生变化时,fullName会重新计算并返回新结果。

    • 侦听器: 侦听器是一种用来监听数据变化并执行某些逻辑的机制。当数据发生变化时,侦听器可以执行特定的函数或方法。

      示例:

      <template>
        <div>
          <input v-model="firstName" type="text" />
          <input v-model="lastName" type="text" />
          <p>{{ fullName }}</p>
        </div>
      </template>
      
      <script>
        export default {
          data() {
            return {
              firstName: 'John',
              lastName: 'Doe',
              fullName: ''
            };
          },
          watch: {
            firstName(value) {
              this.fullName = `${value} ${this.lastName}`;
            },
            lastName(value) {
              this.fullName = `${this.firstName} ${value}`;
            }
          }
        };
      </script>
      

      在上面的例子中,我们通过watch选项定义了两个侦听器,分别监听firstName和lastName的变化。当firstName或lastName的值发生变化时,侦听器会自动执行相应的函数,并在函数中更新fullName

  1. Vue组件

    • 组件的定义和注册

在Vue中,组件是可复用的Vue实例,可以将组件定义为全局组件或局部组件。

定义全局组件: 在Vue应用中,可以使用Vue.component()方法全局注册组件。Vue.component()接受两个参数,第一个参数是组件的标签名,第二个参数是包含组件选项的对象。

// 定义全局组件
Vue.component('my-component', {
  template: '<div>这是我的组件</div>'
});

定义局部组件: 局部组件是在组件的选项中定义的,只能在父组件中使用。

// 定义局部组件
const MyComponent = {
  template: '<div>这是我的组件</div>'
};

在父组件中使用局部组件:

<template>
  <div>
    <my-component></my-component> // 使用局部组件
  </div>
</template>

<script>
export default {
  components: {
    'my-component': MyComponent // 在父组件中注册局部组件
  }
};
</script>

在以上示例中,我们通过Vue.component()方法定义了一个全局组件,标签名为my-component,模板为&lt;div>这是我的组件&lt;/div>。在父组件中,我们使用components选项注册了一个局部组件,将其标签名设置为my-component,并指定该组件的选项对象。

无论是全局组件还是局部组件,在Vue组件中都可以使用该组件的标签名来调用组件。

这样,我们就可以在Vue应用中注册和使用组件了。

    • 组件的props和自定义事件

在Vue中,组件的props(属性)和自定义事件是实现组件间通信的重要机制。下面将详细介绍这两者的概念和使用方法。

组件的props

props是组件的自定义属性,允许父组件向子组件传递数据。

定义props

在Vue组件中,可以通过props选项来定义组件可以接收哪些属性。

Vue.component('my-component', {
  props: ['title', 'likes'],
  template: '<h1>{{ title }}</h1><p>{{ likes }} likes</p>'
});

 

    • 组件间的通信

// 在组件B中
import { EventBus } from './event-bus.js';
EventBus.$on('custom-event', (data) => {
  // 处理数据
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2212751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DBA | 如何将 .bak 的数据库备份文件导入到SQL Server 数据库中?

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 原文链接&#xff1a;DBA | 如何将 .bak 的数据库备份文件导入到SQL Server 数据库中? 如何将&#xff08;.bak&#xff09;的SQL Server 数据库备份文件导入到当前数据库中? Step 1.登录到 Sql…

Centos7安装RocketMQ[图文教程]

文章目录 RocketMQ介绍基于Linux服务部署RocketMQ&#xff08;单机&#xff09;配置JDK环境下载RocketMQ部署RocketMQ1、解压2、修改VM参数3、配置环境变量4、编写Service文件5、启动服务 基于Docker方式部署RocketMQ安装Docker编写docker-compose文件启动RocketMQ服务 部署Roc…

前端学习-css的背景(十六)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 背景颜色 语法格式 背景图片 语法格式 背景平铺 语法格式 背景图片位置 语法格式 参数代表的意思 参数是方位名词 参数是精确单位 参数是混合单位 背…

架构设计笔记-11-未来信息综合技术

知识要点 云原生架构原则包括&#xff1a;服务化原则、弹性原则、可观测原则、韧性原则、所有过程自动化原则、零信任原则和架构持续演进原则。 区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构&#xff0c;并以密码学方式保证的不可篡改和不可…

【项目案例】-音乐播放器-Android前端实现-Java后端实现

精品专题&#xff1a; 01.C语言从不挂科到高绩点 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. SpringBoot详细教程 https://blog.csdn.ne…

项目管理系统如何助力新药研发?药物研发企业康诺亚上线瑞杰项目管理系统

在新药研发过程中&#xff0c;其特点是&#xff1a;周期长、风险高、投入大&#xff0c;同时还要与其他科学相结合&#xff0c;相互渗透、更加需要多部门的共同参与&#xff0c;因此面临的问题相对复杂&#xff0c;而且要求也比较高。所以在这一过程中&#xff0c;必须对新药研…

软考系统分析师知识点十一:系统规划

前言 今年报考了11月份的软考高级&#xff1a;系统分析师。 考试时间为&#xff1a;11月9日。 倒计时&#xff1a;26天。 目标&#xff1a;优先应试&#xff0c;其次学习&#xff0c;再次实践。 复习计划第一阶段&#xff1a;扫平基础知识点&#xff0c;仅抽取有用信息&am…

49 | 桥接模式:如何实现支持不同类型和渠道的消息推送系统?

上一篇文章我们学习了第一种结构型模式&#xff1a;代理模式。它在不改变原始类&#xff08;或者叫被代理类&#xff09;代码的情况下&#xff0c;通过引入代理类来给原始类附加功能。代理模式在平时的开发经常被用到&#xff0c;常用在业务系统中开发一些非功能性需求&#xf…

嵌入式~CAN-专辑2

我自己的原文哦~ 只发CAN相关2 随时更新~~ 一、CAN总线错误分析与解决 从实际工作中碰到的具体问题来分析一些常见的CAN总线错误和解决办法。 CAN节点数据收发过程 我们知道&#xff0c;CAN总线上的每个节点往总线上发送数据的同时&#xff0c;会读取总线上的数据&#x…

stm32单片机个人学习笔记10(TIM编码器接口)

前言 本篇文章属于stm32单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 STM32入门教程-2023版 细…

简单实现手机投屏到电脑代码

1、从手机截图到sdcard 2、将图片导出到PC 3、从PC加载图片 4、开启定时器 1、 private static void takeScreenshot(String path) {long t1 System.currentTimeMillis();String command "adb devices"; // 替换为你需要执行的shell命令String command1 "…

氧化锆ZrO2纳米颗粒50nm|L-ZrO2@mSiO2|Ir1-N-C/ZrO2|AuPd/HB-ZrO2

氧化锆ZrO2纳米颗粒50nm|L-ZrO2mSiO2|Ir1-N-C/ZrO2|AuPd/HB-ZrO2 氧化锆&#xff08;ZrO₂&#xff09;纳米颗粒&#xff0c;特别是直径为50纳米&#xff08;nm&#xff09;的颗粒&#xff0c;是一种具有多种应用前景的功能材料。这种材料因其独特的物理和化学性质&#xff0c…

大一计算机课程之线性代数

《大一计算机课程之线性代数》 在大一的计算机课程中&#xff0c;线性代数是一门极为重要的基础学科&#xff0c;它就像一把神奇的钥匙&#xff0c;为计算机科学领域的诸多方面开启了智慧之门。 线性代数主要研究线性方程组、向量空间、线性变换等内容。对于计算机专业的学生…

Python基础语法条件

注释 注释的作用 通过用自己熟悉的语言&#xff0c;在程序中对某些代码进行标注说明&#xff0c;这就是注释的作用&#xff0c;能够大大增强程序的可读性。 注释的分类及语法 注释分为两类&#xff1a;单行注释 和 多行注释。 单行注释 只能注释一行内容&#xff0c;语法如下…

LabVIEW提高开发效率技巧----事件触发模式

事件触发模式在LabVIEW开发中是一种常见且有效的编程方法&#xff0c;适用于需要动态响应外部或内部信号的场景。通过事件结构&#xff08;Event Structure&#xff09;和用户自定义事件&#xff08;User Events&#xff09;&#xff0c;开发者可以设计出高效的事件驱动程序&am…

深度探索:Linux CentOS 7内核的奥秘与管理之道

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Linux简介 2、CentOS 7简介 3、什么是内核 …

【3dgs】总结3DGS与NeRF如何重塑SLAM(24年4月最新进展)

【3dgs】总结3DGS与NeRF如何重塑SLAM&#xff01; 1. 摘要2. 简洁3. 背景3.1 Existing SLAM Surveys3.2 progress in Radiance Field Theory3.3.1 NeRF3.3.2 3dgs3.4 数据集 4 数据集4.1 SLAM3.1 RGB-D SLAM方法3.1.1 基于NeRF风格的RGB-D SLAM3.1.2 基于3DGS风格的 RGB-D SLAM…

PHP政务招商系统——高效连接共筑发展蓝图

政务招商系统——高效连接&#xff0c;共筑发展蓝图 &#x1f3db;️ 一、政务招商系统&#xff1a;开启智慧招商新篇章 在当今经济全球化的背景下&#xff0c;政务招商成为了推动地方经济发展的重要引擎。而政务招商系统的出现&#xff0c;更是为这一进程注入了新的活力。它…

【C++】踏上C++学习之旅(一):初识C++和命名空间

文章目录 前言1. 初识C2. C的发展阶段2. 命名空间2.1 为什么要有命名空间&#xff1f;2.2 命名空间的语法2.3 命名空间的原理2.4 使用命名空间的三种方式2.4.1 加命名空间名称及作用域限定符( :: )2.4.2 使用using关键字将命名空间中某个成员 引入2.4.3 使用using namespace 命…

注意力机制篇 | 清华大学提出Focused Linear Attention取代Self-Attention成为ViT的新宠

前言:Hello大家好,我是小哥谈。Focused Linear Attention(聚焦线性注意力)是一种用于视觉Transformer模型的注意力机制,旨在提高效率和表现力,它解决了传统线性注意力方法的两个主要问题:聚焦能力和特征多样性。🌈 目录 🚀1.基础概念 🚀2.网络结构 🚀3.…