Vue.js前端框架教程1:Vue应用启动和Vue组件

文章目录

        • Vue 应用
          • Vue 应用的主要组成部分:
      • 启动 Vue 应用:
        • Vue组件
          • 基础组件
          • 组件注册
          • 父子组件
          • 组件插槽(Slots)
          • 动态组件和 `keep-alive`

Vue 应用

Vue 应用由几个主要部分组成,每个部分都有其特定的角色和职责。以下是 Vue 应用的主要组成部分以及如何启动一个 Vue 应用的介绍:

Vue 应用的主要组成部分:
  1. Vue实例(Vue Instance)

    • Vue 应用的核心,所有的 Vue 功能都是围绕着 Vue 实例展开的。
    • 通过 new Vue({ ... }) 创建,其中大括号中的内容称为选项对象,可以包含数据、模板、方法等。
  2. 模板(Template)

    • Vue 实例的 template 选项定义了应用的 HTML 结构。
    • 使用声明式渲染,允许你将 DOM 操作逻辑分离到 JavaScript 代码中。
  3. 数据(Data)

    • Vue 实例的 data 选项定义了应用的数据模型。
    • Vue 实例的数据是响应式的,当数据变化时,视图会自动更新。
  4. 方法(Methods)

    • Vue 实例的 methods 选项定义了应用的行为。
    • 方法可以响应用户交互,如点击事件,并可以更改数据。
  5. 生命周期钩子(Lifecycle Hooks)

    • Vue 实例的不同生命周期阶段会触发不同的钩子函数。
    • 例如 createdmountedupdateddestroyed 等。
  6. 组件(Components)

    • Vue 的组件系统允许你将应用分解成独立、可复用的组件。
    • 组件有自己的模板、数据和方法。
  7. 指令(Directives)

    • Vue 提供了一系列内置指令,如 v-modelv-ifv-for 等。
    • 指令可以用于在模板中将 DOM 元素绑定到底层 Vue 实例的数据上。
  8. 插件(Plugins)

    • Vue 插件可以添加全局功能或通过全局方法、属性或组件扩展 Vue 的功能。
    • 例如 Vue Router、VuexVue CLI 都是插件。

启动 Vue 应用:

  1. 通过 CDN
    • 直接在 HTML 文件中通过 <script> 标签引入 Vue.js
    • 创建一个 Vue 实例并挂载到 DOM 元素上。
<!DOCTYPE html>
<html>
<head><title>Vue 应用</title><script src="https://unpkg.com/vue@3.2.31/dist/vue.global.prod.js"></script>
</head>
<body><div id="app">{{ message }}</div><script>const { createApp } = Vue;createApp({data() {return {message: 'Hello, Vue!'};}}).mount('#app');</script>
</body>
</html>
  1. 通过 Vue CLI

    • 使用 Vue CLI 创建项目,它提供了一个完整的开发环境,包括热重载、保存时 lint 检查等。
    • 通过运行 vue create my-project 创建新项目。
    • 进入项目目录,运行 npm run serveyarn serve 启动开发服务器。
  2. 通过单文件组件(Single File Components, SFC)

    • Vue CLI 项目中,可以使用 .vue 文件组织组件。
    • 每个 .vue 文件包含 <template><script><style> 三个部分。
<template><div>{{ message }}</div>
</template><script>
export default {data() {return {message: 'Hello, Vue SFC!'};}
}
</script><style scoped>
div {color: green;
}
</style>
  1. 通过 Vite
    • Vite 是一个现代化的前端构建工具,它利用了原生 ES 模块特性,提供了快速的冷启动和即时模块热更新。
    • 使用 Vite 创建项目,可以通过 npm create vite@latestyarn create vite
    • 运行 npm run devyarn dev 启动开发服务器。

通过这些方法,你可以快速启动和开发一个 Vue 应用。Vue 的灵活性和易用性使得从简单的项目到复杂的单页面应用的构建都变得简单快捷。

Vue组件

Vue 组件是 Vue.js 的核心概念之一,它是自定义的可复用的组件,可以包含自己的模板、逻辑和样式。组件系统是 Vue.js 的一个重要特性,它允许开发者将界面拆分成独立、可复用的小块,每一块都是一个带有独立功能的组件。

基础组件

Vue 中,一个组件可以简单地定义为一个包含 templatescriptstyle.vue 文件。以下是一个基础组件的例子:

<!-- MyComponent.vue -->
<template><div><h1>{{ message }}</h1><button @click="reverseMessage">反转消息</button></div>
</template><script>
export default {data() {return {message: 'Hello, Vue!'};},methods: {reverseMessage() {this.message = this.message.split('').reverse().join('');}}
}
</script><style scoped>
h1 {color: #42b983;
}
</style>
组件注册

Vue 应用中,你需要注册组件才能使用它们。可以在局部(单个文件)或全局注册组件。

  • 局部注册:
import MyComponent from './MyComponent.vue';export default {components: {MyComponent}
}
  • 全局注册:
import Vue from 'vue';
import MyComponent from './MyComponent.vue';Vue.component('my-component', MyComponent);
父子组件

Vue 组件可以创建父子关系,子组件可以通过 props 接收来自父组件的数据,并通过 $emit 向父组件发送事件。

  • 子组件(ChildComponent.vue):
<template><div><p>{{ message }}</p><button @click="notifyParent">通知父组件</button></div>
</template><script>
export default {props: ['message'],methods: {notifyParent() {this.$emit('message-from-child', 'Hello from child!');}}
}
</script>
  • 父组件:
<template><div><child-component :message="parentMessage" @message-from-child="handleMessageFromChild" /></div>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent},data() {return {parentMessage: 'Message from parent'};},methods: {handleMessageFromChild(message) {console.log(message); // 输出:Hello from child!}}
}
</script>
组件插槽(Slots)

插槽是 Vue.js 提供的一种分发内容的机制,允许你将内容从父组件传递到子组件的模板中。

  • 子组件(ChildComponent.vue):
<template><div><slot>默认内容</slot></div>
</template>
  • 父组件:
<template><child-component><p>这是通过插槽传递的内容</p></child-component>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent}
}
</script>
动态组件和 keep-alive

Vue 提供了 <component> 标签,允许你动态地切换不同的组件。

<template><component :is="currentComponent" />
</template><script>
export default {data() {return {currentComponent: 'ComponentA'};}
}
</script>

使用 keep-alive 可以缓存不活动的组件实例,避免重复创建和销毁组件的性能损耗。

<template><keep-alive><component :is="currentComponent" /></keep-alive>
</template>

Vue 组件是构建大型应用的基础,它们使得代码更加模块化、可维护和可复用。通过组合不同的组件,你可以构建出复杂的用户界面。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

界面控件DevExpress v24.2.3全新发布——正式支持.NET 9

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。 屡获大奖的软件开发平台DevExpress 近期重要版本v24.2已正式发布&#xff0c;该版本拥有众多新…

Three.js资源-模型下载网站

在使用 Three.js 进行 3D 开发时&#xff0c;拥有丰富的模型资源库可以大大提升开发效率和作品质量。以下是一些推荐的 Three.js 模型下载网站&#xff0c;它们提供了各种类型的 3D 模型&#xff0c;适合不同项目需求。无论你是需要逼真的建筑模型&#xff0c;还是简单的几何体…

(三)PyQT5+QGIS+python使用经验——解决各版本不兼容问题

一、问题描述 基础环境&#xff1a;Windows10&#xff08;64&#xff09; PyCharm2024 QGIS 3.22。 目的&#xff1a;解决之前python版本多&#xff0c;pyqt5以及QT Designer交互使用存在环境变量冲突矛盾&#xff0c;以及QGIS安装时自带python、pyqt5等问题。 尤其是在QT …

C++ webrtc开发(非原生开发,linux上使用libdatachannel库)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、libdatachannel库的下载和build二、开始使用 1.2.引入库3.开始使用 总结 前言 使用c开发webrtc在互联网上留下的资料甚少&#xff0c;经过我一段时间的探…

SpringBoot 手动实现动态切换数据源 DynamicSource (中)

大家好&#xff0c;我是此林。 SpringBoot 手动实现动态切换数据源 DynamicSource &#xff08;上&#xff09;-CSDN博客 在上一篇博客中&#xff0c;我带大家手动实现了一个简易版的数据源切换实现&#xff0c;方便大家理解数据源切换的原理。今天我们来介绍一个开源的数据源…

上海艾一公司-运维工程师知识点备战

1.AD域控&#xff08;ActionDirectory活动目录&#xff09; ad域的作用&#xff1a;批量管理主机和用户&#xff08;所以数量要多用这个才合适&#xff09; 前置1&#xff1a;VM安装Windows镜像 2.IT资产管理 3.会议室管理

构建一个rust生产应用读书笔记四(实战2)

此门课程学习采用actix-web框架完成一个生产级别的rust应用&#xff0c;在 actix-web 中&#xff0c;Extractors 是一个非常重要的概念&#xff0c;它们用于从传入的 HTTP 请求中提取特定的信息片段。actix-web 提供了多种内置的提取器&#xff0c;以满足常见的使用场景。说白了…

前端学习笔记-Vue篇-04

4 Vue中的ajax 4.1 解决开发环境Ajax跨域问题 vue脚手架配置代理 配置参考 | Vue CLI方法一&#xff1a;在vue.config.js中添加如下配置: module.exports {devServer: {proxy: http://localhost:4000} } 说明: 1.优点:配置简单&#xff0c;请求资源时直接发给前端(8080)即…

InnoDB事务系统(二):事务的实现

事务隔离性由锁来实现。原子性、一致性、持久性通过数据库的 redo log 和 undo log 来完成。 redo log 称为重做日志&#xff0c;用来保证事务的原子性和持久性。undo log 用来保证事务的一致性。 有的 DBA 或许会认为 undo 是 redo 的逆过程&#xff0c;其实不然。redo 和 u…

c++理解(三)

本文主要探讨c相关知识。 模板是对类型参数化 函数模板特化不是模板函数重载 allocator(空间配置器):内存开辟释放,对象构造析构 优先调用对象成员方法实现的运算符重载函数,其次全局作用域找 迭代器遍历访问元素,调用erase&#xff0c;insert方法后&#xff0c;当前位置到容器…

实训项目11基于51单片机的门禁监测系统设计

00 要求 基于51单片机和RFID模块实现门禁的设计。使之具有以下功能: 能够正常的读卡信息&#xff1b;在正常刷卡通过后&#xff0c;可以控制电子锁动作&#xff1b;在刷卡失败后&#xff0c;可以产生报警信号; 01 功能分析 读卡后会RFID会自动通过TXD&#xff08;串口&…

opencv——识别图片颜色并绘制轮廓

图像边缘检测 本实验要用到Canny算法&#xff0c;Canny边缘检测方法常被誉为边缘检测的最优方法。 首先&#xff0c;Canny算法的输入端应为图像的二值化结果&#xff0c;接收到二值化图像后&#xff0c;需要按照如下步骤进行&#xff1a; 高斯滤波。计算图像的梯度和方向。非极…

源码安装PHP-7.2.19

源码安装PHP-7.2.19 1.解压 tar -xjvf php-7.2.19.tar.bz2.编译 -prefix安装路径 cd php-7.2.19 ./configure --prefix/home/work/study 成功输出 3.make(构建) makemake testmake installlinux对php操作的一些命令 # 进入到php [rootvdb1 study]# cd php/ [rootvdb1 st…

数据库管理-第271期 Oracle 23ai:用MongoDB的方式来操作JSON二元性(20241214)

数据库管理271期 2024-12-14 数据库管理-第271期 Oracle 23ai&#xff1a;用MongoDB的方式来操作JSON二元性&#xff08;20241214&#xff09;1 初始化数据1.1 创建用户1.2 导入数据1.3 创建JSON关系二元性视图 2 创建ORDS服务2.1 下载JDK172.2 安装ORDS2.3 启用MongoDB API2.4…

2024 年的科技趋势

2024 年在科技领域有着诸多重大进展与突破。从人工智能、量子计算到基因组医学、可再生能源以及新兴技术重塑了众多行业。随着元宇宙等趋势的兴起以及太空探索取得的进步&#xff0c;未来在接下来的岁月里有望继续取得进展与突破。让我们来探讨一下定义 2024 年的一些关键趋势&…

WPF+MVVM案例实战与特效(三十八)- 封装一个自定义的数字滚动显示控件

文章目录 1、运行效果2、案例实现1、功能设计2、页面布局3、控件使用4、运行效果3、拓展:多数字自定义控件1、控件应用4、总结1、运行效果 在Windows Presentation Foundation (WPF)应用程序中,自定义控件允许开发者创建具有特定功能和外观的独特UI元素。本博客将介绍一个名…

ElasticSearch的自动补全功能(拼音分词器、自定义分词器、DSL实现自动补全查询、RestAPI实现自动补全查询)

文章目录 1. 什么是自动补全2. 拼音分词器2.1 初识拼音分词器2.2 下载拼音分词器2.3 安装拼音分词器2.4 测试拼音分词器 3. 自定义分词器3.1 拼音分词器存在的问题3.2 分词器&#xff08;analyzer&#xff09;的组成3.3 如何自定义分词器3.4 拼音分词器的可选参数3.5 配置自定义…

八股—Java基础(二)

目录 一. 面向对象 1. 面向对象和面向过程的区别&#xff1f; 2. 面向对象三大特性 3. Java语言是如何实现多态的&#xff1f; 4. 重载&#xff08;Overload&#xff09;和重写&#xff08;Override&#xff09;的区别是什么&#xff1f; 5. 重载的方法能否根据返回值类…

Java-08

类的抽象是将类的实现和使用分离, 而类的封装是将实现的细节封装起来并且对用户隐藏,用户只需会用就行。 类的合约指的是从类外可以访问的方法和数据域的集合以及与其这些成员如何行为的描述 isAlive()方法的返回值类型为布尔型&#xff08;Boolean&#xff09;。这个方法用于…

【MATLAB第109期】基于MATLAB的带置信区间的RSA区域敏感性分析方法,无目标函数

【MATLAB第108期】基于MATLAB的带置信区间的RSA区域敏感性分析方法&#xff0c;无目标函数 参考第64期文章【MATLAB第64期】【保姆级教程】基于MATLAB的SOBOL全局敏感性分析模型运用&#xff08;含无目标函数&#xff0c;考虑代理模型&#xff09; 创新点&#xff1a; 1、采…