
- 一、项目文件
- 1.1 目录结构
- 1.2 结构介绍
- 二、执行过程
- 2.1 main.js
- 2.2 App.vue
- 2.3 index.html
- 三、生命周期
- 3.1 周期阶段
- 3.2 Vue实例的产生过程
- 3.3 钩子函数用途
一、项目文件
1.1 目录结构
1.2 结构介绍
文件结构 | 文件介绍 |
---|---|
node_modules | 第三方包文件夹 |
public | 放html文件的地方 |
favicon.ico | 默认的网站图标 |
index.html | 模板文件 |
src | 存放代码的文件夹 |
assets | 存放静态资源的文件夹 |
components | 组件文件夹 |
App.vue | 主组件 |
main.js | 入口文件,打包或运行的时候,所运行的第一个文件 |
.gitignore | 用于设置哪些文件被git忽略的配置文件 |
babel.config.js | babel的配置文件 |
jsconfig.json | js核心库的配置文件 |
package-lock.json | 依赖包的下载地址文件 |
package.json | 项目配置文件,里面会有项目名称、版本号、scripts和依赖包等 |
README.md | 项目说明文件 |
vue.config.js | vue-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>
复制
- App.vue 是一个vue组件,这个组件中包含三部分内容:1.页面模板(template);2.页面脚本(script);3.页面样式(style)
- 页面模板中,定义了页面的 HTML 元素
- 页面脚本主要用来实现当前页面数据初始化、事件处理等等操作
- 页面样式就是针对 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实例的产生过程
- beforeCreate 在实例初始化之后,数据观测和事件配置之前被调用。
- created 在实例创建完成后被立即调用。
- beforeMount 在挂载开始之前被调用。
- mounted el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。
- beforeUpdate 数据更新时调用,发生在虚拟DOM打补丁之前。
- updated 由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子。
- beforeDestroy 实例销毁之前调用。
- destroyed 实例销毁后调用
3.3 钩子函数用途
每一个钩子函数在特定的阶段执行,可以利用不同钩子函数的特性,实现不同的功能。
- created函数是最早可以获取到 data数据的钩子,可以发送 ajax 异步请求,向后台请求数据。
- mounted函数是数据已经挂载到模板中了,但是data数据一旦更新就会使虚拟DOM重新渲染页面,也是可以发送 ajax 异步请求,向后台请求数据。
- beforeDestroy函数时是在销毁 Vue 实例之前调用,可以用于处理一些收尾工作。