Vue|项目结构与执行过程介绍

2023-07-24 12:15:01

一、项目文件

1.1 目录结构

在这里插入图片描述

1.2 结构介绍

文件结构文件介绍
node_modules第三方包文件夹
public放html文件的地方
favicon.ico默认的网站图标
index.html模板文件
src存放代码的文件夹
assets存放静态资源的文件夹
components组件文件夹
App.vue主组件
main.js入口文件,打包或运行的时候,所运行的第一个文件
.gitignore用于设置哪些文件被git忽略的配置文件
babel.config.jsbabel的配置文件
jsconfig.jsonjs核心库的配置文件
package-lock.json依赖包的下载地址文件
package.json项目配置文件,里面会有项目名称、版本号、scripts和依赖包等
README.md项目说明文件
vue.config.jsvue-cli的配置文件

二、执行过程

2.1 main.js

该文件是整个项目的入口文件,当在控制台执行npm run serve时,随后来到src目录找到main.js,在main.js中,首先引入vue,然后引入App父组件,它是所有组件的父组件。

在这里插入图片描述

//引入Vue
import { createApp } from 'vue'

//引入App组件,它是所有组件的父组件
import App from './App.vue'

//创建Vue的实例对象->vm
//将App组件放入容器中
createApp(App).mount('#app')

2.2 App.vue

接下来找到App.vue,它由页面模板、页面脚本、页面样式组成,其中引入了HelloWorld.vue,它默认首字母以及第二个单词首字母大写,大驼峰命名法

在这里插入图片描述

<!-- 结构 -->
<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld msg="Welcome to Your Vue.js App"/>
</template>

<!-- 交互 -->
<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

<!-- 样式 -->
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
  1. App.vue 是一个vue组件,这个组件中包含三部分内容:1.页面模板(template);2.页面脚本(script);3.页面样式(style)
  2. 页面模板中,定义了页面的 HTML 元素
  3. 页面脚本主要用来实现当前页面数据初始化、事件处理等等操作
  4. 页面样式就是针对 template 中 HTML 元素的页面美化操作

2.3 index.html

index.html 是项目的首页,入口页,也是整个项目唯一的HTML页面

在这里插入图片描述

<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>

    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>


 1. <meta http-equiv="X-UA-Compatible" content="IE=edge">,针对IE浏览器的特殊配置,让IE浏览器以最高的渲染级别渲染页面 
 2. <meta name="viewport" content="width=device-width,initial-scale=1.0">,开启移动端的理想视口
 3. <link rel="icon" href="<%= BASE_URL %>favicon.ico">,配置页签图标,使用BASE_URL即可访问到public文件夹下的素材,避免使用[./],因为部署在服务器上后有各种各样的问题会出现
 4. <title><%= htmlWebpackPlugin.options.title %></title>,配置网页标题,这是webpack里面的一个插件,会自动去package.json中找到name节点的值设置为页面标题
 5. <noscript>标签, 如果当前使用的浏览器不支持JS,那么页面就会渲染noscript标签里面的内容
 6. <div id="app"></div>,容器

三、生命周期

Vue 实例从创建到销毁的过程,就是生命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,称之为 Vue 的生命周期。

3.1 周期阶段

vue生命周期有11个,8个常见的阶段:1、beforeCreate(创建前);2、created(创建后);3、beforeMount(载入前);4、mounted(载入后);5、beforeUpdate(更新前);6、updated(更新后);7、beforeDestroy(销毁前);8、destroyed(销毁后);后三个不常用阶段:;9、activated;10、deactivated;11、errorCaptured。

在这里插入图片描述

3.2 Vue实例的产生过程

  1. beforeCreate 在实例初始化之后,数据观测和事件配置之前被调用。
  2. created 在实例创建完成后被立即调用。
  3. beforeMount 在挂载开始之前被调用。
  4. mounted el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。
  5. beforeUpdate 数据更新时调用,发生在虚拟DOM打补丁之前。
  6. updated 由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子。
  7. beforeDestroy 实例销毁之前调用。
  8. destroyed 实例销毁后调用

3.3 钩子函数用途

每一个钩子函数在特定的阶段执行,可以利用不同钩子函数的特性,实现不同的功能。

  1. created函数是最早可以获取到 data数据的钩子,可以发送 ajax 异步请求,向后台请求数据。
  2. mounted函数是数据已经挂载到模板中了,但是data数据一旦更新就会使虚拟DOM重新渲染页面,也是可以发送 ajax 异步请求,向后台请求数据。
  3. beforeDestroy函数时是在销毁 Vue 实例之前调用,可以用于处理一些收尾工作。
更多推荐

SpringMVC之JSR303和拦截器

目录一.JSR303二.JSR常用的注解三.JSR快速入门四.拦截器⭐⭐⭐拦截器和过滤器有什么不一样,或者它们的区别是什么??五.拦截器快速入门--登录的案例一.JSR303JSR303是Java规范的一部分,全称为BeanValidation框架。它定义了一组基于标注的验证注解,用于验证Java对象的属性值的合法性。

【Java 基础篇】ThreadPoolExecutor 详解

多线程编程是现代应用程序开发中的一个重要主题。为了更有效地管理和利用多线程资源,Java提供了丰富的线程池支持。ThreadPoolExecutor类是Java中用于创建和管理线程池的核心类之一,本文将详细介绍ThreadPoolExecutor的使用方法和原理。线程池的基本概念在深入探讨ThreadPoolExecu

leetcode 54. 螺旋矩阵

1.题解如果一条边从头遍历到底,则下一条边遍历的起点随之变化选择不遍历到底,可以减小横向、竖向遍历之间的影响一轮迭代结束时,4条边的两端同时收窄1一轮迭代所做的事情变得很清晰:遍历一个“圈”,遍历的范围收缩为内圈一层层向里处理,按顺时针依次遍历:上、右、下、左。不再形成“环”了,就会剩下:一行或一列,然后单独判断矩阵不

计算机竞赛 机器视觉opencv答题卡识别系统

0前言🔥优质竞赛项目系列,今天要分享的是🚩答题卡识别系统-opencvpython图像识别该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!🥇学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:3分🧿更多资料,项目分享:https://gitee.com/dancheng-senior

Vue路由及Node.js环境搭建

目录一.Vue路由1.1定义1.2应用领域1.3代码展示二、Node.js2.1定义2.2特点三.Node.js安装与配置好啦今天到这了,希望帮到你!!!一.Vue路由1.1定义Vue路由是指使用VueRouter插件来管理前端应用程序的导航和页面路由的过程。它允许你在单页面应用程序(SPA)中定义不同的路由路径,并将

JVM相关知识

运行程序时JVM中内存区域的划分:线程私有:本地方法栈:本地方法栈与虚拟机栈相似,区别是,本地方法栈为虚拟机使用的本地方法服务,虚拟机栈为虚拟机使用的JAVA方法服务。虚拟机栈:虚拟机栈中保存的主要是一个个栈帧,每当有一个方法被调用时,都会有栈帧入栈,方法结束时,栈帧就会被弹出,每个栈帧由局部变量表和操作数栈,动态连接

计算机毕业设计 基于SSM的电影推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟————————————————计算机毕业设计题目《10

亚运之城:杭州的搞钱之王 首富都得靠边站

作者:积溪简评:这届亚运会,杭州成了显眼包,也卷成了蚊香,这背后杭州的搞钱实力,究竟有多牛?#杭州亚运会#马云#阿里手机可以“打”公交10分钟就能到还只要1块钱?这届亚运会杭州的宝子们真成了“显眼包”杭州也卷成了蚊香钱塘江边的灯光秀玉皇大帝睡觉都得戴眼罩路边的椅子能充电垃圾桶穿上新外套就连“美男计”都不放过地铁口人均1

软考 -- 计算机学习(2)

文章目录一、安全性知识1.1信息安全和信息系统安全1.2信息安全技术1.3网络安全技术二、多媒体技术三、软件工程基础知识3.1信息系统生命周期3.2软件过程模型3.3信息系统开发方法3.4系统分析和设计概述3.5结构化开发方法3.6系统运行与维护四、项目管理4.1进度管理4.2质量管理4.3风险管理一、安全性知识1.1

OpenText EnCase 客户案例——诺贝丽斯(Novelis)

OpenTextEnCase客户案例——诺贝丽斯(Novelis)诺贝丽斯(世界领先的铝材压延和回收企业)通过OpenText保存数据和节省资金诺贝丽斯在内部引入电子发现,通过OpenTextEnCaseInformationAssurance(以前称为EnCaseeDiscovery)解决方案交付复杂的案例。挑战电子

MySQL常见面试题(四)

😀前言在进行数据库设计和优化的过程中,我们不得不面对多样化的技术和方法来确保我们的系统可以高效、可靠地运行。为了深入了解和掌握这个领域,我们将讨论InnoDB存储引擎的多种索引类型,以及索引的不同方面和分类。我们还将深入探讨为什么通常推荐使用自增列作为主键,以及主键和唯一键之间的区别。最后,我们将提供一系列可用于SQ

热文推荐