vue组件的基本介绍

简介: (1)script 中的 name 节点①可以通过 name 节点为当前组件定义一个名称:②在使用 vue-devtools 进行项目调试的时候,自定义的组件名称可以清晰的区分每个组件。(2) script 中的 data 节点①vue 组件渲染期间需要用到的数据,可以定义在 data 节点②vue 规定:组件中的 data 必须是一个函数,不能直接指向一个数据对象。




在学习组件之前,我们先了解一下项目的结构


一.项目的结构


1.项目的总体结构


5274777ed0ac42088fd3276f7e1833a0.png


(1)node_modules:用来存放第三方依赖包

(2)public:公共的静态资源目录

(3)src:项目的源代码目录(程序员写的源代码都放在此目录下)

(4).gitignore:是Git的忽略文件

(5)index.html:是SPA单页面应用程序中唯一的HTML页面

(6)package.json是项目的包管理配置文件


2.src目录结构


3c2f10f92dbb4eb2967a4ad756a5cc87.png


(1)assets目录用来存放项目中的静态资源文件(css、fonts等)

(2)components目录用来存放项目中的自定义组件

(3)App.vue是项目的根组件

(4)index.css是项目的全局样式表文件

(5)main.js是整个项目的打包入口文件


3.项目运行流程


在工程化的项目中,vue 要做的事情很单纯:通过 main.js 把 App.vue 渲染到 index.html 的指定区域中。


其中:

① App.vue 用来编写待渲染的模板结构

② index.html 中需要预留一个 el 区域

③ main.js 把 App.vue 渲染到了 index.html 所预留的区域中


实例:

(1)在 App.vue 中编写模板结构

清空 App.vue 的默认内容,并书写如下的模板结构:


<template>
  <h1>这是App组件</h1>
</template>



(2)在 index.html 中预留 el 区域


<body>
  <div id="app"></div>
  <script type="module" src="/src/main.js"></script>
</body>


(3)在 main.js 中进行渲染


// 1.从vue中按需导入 creatApp函数
// creatApp函数的作用:创建vue的“单页面应用程序实例”
import { createApp } from "vue";
// 2.导入待渲染的APP组件
import App from "./App.vue";
import "./index.css";
// 3.调用createApp函数,返回值是“单页面应用程序的实例”,用常量spa_app进行接收
const spa_app = createApp(App);
// 4.调用spa_app实例的mount方法,用来指定vue实际要控制的区域
spa_app.mount("#app");


二.Vue组件


1.什么是组件化开发


(1)组件化开发指的是:根据封装的思想,把页面上可重用的部分封装为组件,从而方便项目的开发和维护。


(2)前端组件化开发的好处主要体现在以下两方面:

⚫ 提高了前端代码的复用性和灵活性

⚫ 提升了开发效率和后期的可维护性


(3)vue 是一个完全支持组件化开发的框架。vue 中规定组件的后缀名是 .vue。之前接触到的 App.vue 文件本质

上就是一个 vue 的组件。


2… vue 组件组成结构


每个 .vue 组件都由 3 部分构成,分别是:

⚫ template -> 组件的模板结构

⚫ script -> 组件的 JavaScript 行为

⚫ style -> 组件的样式

其中,每个组件中必须包含 template 模板结构,而 script 行为和 style 样式是可选的组成部分。


2.1 template -> 组件的模板结构


(1)组件的 template 节点

vue 规定:每个组件对应的模板结构,需要定义到 <template> 节点中。

注意:<template> 是 vue 提供的容器标签,只起到包裹性质的作用,它不会被渲染为真正的 DOM 元素。

(2)在 template 中定义根节点

①在 vue 2.x 的版本中,<template> 节点内的 DOM 结构仅支持单个根节点:


<template>
  <div>//该实例以div为根节点
    <h1>这是App组件1</h1>
    <h2>>这是App组件2</h2>
  </div>
</template>


②但是,在 vue 3.x 的版本中,<template> 中支持定义多个根节点:


<template>
  <h1>这是App组件1</h1>
  <h2>>这是App组件2</h2>
</template>


2.2 组件的 script 节点


(1)vue 规定:组件内的 <script> 节点是可选的,开发者可以在 <script> 节点中封装组件的 JavaScript 业务逻辑。

<script > 节点的基本结构如下:


9939427696444ac894d4fde9958af1bb.png


(1)script 中的 name 节点

①可以通过 name 节点为当前组件定义一个名称:

②在使用 vue-devtools 进行项目调试的时候,自定义的组件名称可以清晰的区分每个组件。

(2) script 中的 data 节点

①vue 组件渲染期间需要用到的数据,可以定义在 data 节点

②vue 规定:组件中的 data 必须是一个函数,不能直接指向一个数据对象。


<template>
  <div>
    <h1>这是App组件1</h1>
    <h2>这是App组件2---{{ username }}}</h2>
  </div>
</template>
<script>
export default {
  //name属性指向的是当前组件的名称(建议:每个单词的首字母大写)
  name: 'MyApp',
  data() {
    return {
      username: 'zhangsan',
    }
  },
}
</script>


(3)script 中的 methods 节点

组件中的事件处理函数,必须定义到 methods 节点中,示例代码如下:


5979e763936140039211c4de8012af67.png


2.2 组件的 style 节点


(1)vue 规定:组件内的 <style> 节点是可选的,开发者可以在 <style> 节点中编写样式美化当前组件的 UI 结构。

<script > 节点的基本结构如下:


56230988f5b14882aab7e46d01200588.png


(2)其中 <style> 标签上的 lang=“css” 属性是可选的,它表示所使用的样式语言。默认只支持普通的 css 语法,可

选值还有 less、scss 等。

(3)如果希望使用 less 语法编写组件的 style 样式,可以按照如下两个步骤进行配置:

① 运行 npm install less -D 命令安装依赖包,从而提供 less 语法的编译支持

② 在 <style> 标签上添加 lang=“less” 属性,即可使用 less 语法编写组件的样式


c73db87efb604efdaa07fe9a5b8de612.png


三.Vue组件的使用步骤


1.组件之间的父子关系


(1)组件在被封装好之后,彼此之间是相互独立的,不存在父子关系


8ff78b02b6584aa58adce80a108fcb3d.png


(2)在使用组件的时候,根据彼此的嵌套关系,形成了父子关系、兄弟关系


552e3d9945324a919445e593018391e7.png


2.使用组件的三个步骤


9d5cdc39ddbd4e6196764a778ae9969f.png


注意:此处的@代表src路径


3.通过components注册的是私有组件


0d878a525cf641918e40d07a66f90500.png


4.注册全局组件


(1)在vue项目的main.js入口文件中,通过Vue.component()方法,可以注册全局组件。例如:


d62e669c30084f7a9ab395d48e34878b.png


(2)在其他组件中不需要注册,就可以使用这个全局组件了


e26b27647a97490b90c448d043468e62.png

目录
相关文章
|
5天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
vue学习第四章
|
5天前
|
JavaScript 前端开发
vue学习第九章(v-model)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript与Vue的大一学生,自学前端2年半,正向全栈进发。此篇介绍v-model在不同表单元素中的应用及修饰符的使用,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
vue学习第九章(v-model)
|
5天前
|
JavaScript 前端开发 开发者
vue学习第十章(组件开发)
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文深入讲解Vue组件的基本使用、全局与局部组件、父子组件通信及数据传递等内容,适合前端开发者学习参考。持续更新中,期待您的关注!🎉🎉🎉
vue学习第十章(组件开发)
|
11天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
11天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
11天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
11天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
10天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
12天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
10天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉