首页 > 其他分享 >掌握Vue生命周期,让你的前端开发效率翻倍!

掌握Vue生命周期,让你的前端开发效率翻倍!

时间:2023-06-11 20:31:34浏览次数:30  
标签:function el 生命周期 console log 实例 Vue 前端开发

1 Vue实例

<!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Vue实例</title>
     <script src='../vue.js'></script>
 </head>
 <body>
 
 <div id="root">
     <!-- v-on可简写为@ -->
     <div @click="handleClick">
         {{message}}
     </div>
     <item></item>
 </div>
 
 <script>
 
     Vue.component('item', {
         template: '<div>hello item</div>'
     })
 
     /**
      * 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始
      */
     var vm = new Vue({
         /**
          * el: '#root'表示Vue实例将挂载到id为"root"的HTML元素
          * 这个HTML元素可以是任何元素 如div、section
          * Vue实例挂载到该元素后,Vue实例就可以操作该元素及其子元素,以及响应用户的交互行为
          */
         el: '#root',
         /**
          * 当一个 Vue 实例被创建时,它将 data 对象中的所有的 property 加入到 Vue 的响应式系统中
          * 当这些 property 的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。
          * 只有当实例被创建时就已经存在于 data 中的 property 才是响应式的
          */
         data: {
             message: 'hello world'
         },
         // 在 `methods` 对象中定义方法
         methods: {
             handleClick: function () {
                 alert("hello")
             }
         }
     })
 </script>
 
 </body>
 </html>

一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实例,以及可选的嵌套的、可复用的组件树组成。

所有的 Vue 组件都是 Vue 实例,并且接受相同的选项对象 (一些根实例特有的选项除外)。

组件是可复用的 Vue 实例,且带有一个名字:在这个例子中是 <item>

<div id="root">
     <!-- v-on可简写为@ -->
     <div @click="handleClick">
         {{message}}
     </div>
     <!-- 使用item组件 -->
     <item></item>
 </div>

2 Vue实例生命周期

<!DOCTYPE html>
 <html lang="en">
 <head>
   <meta charset="UTF-8">
   <title>Vue实例生命周期函数</title>
   <script src='../vue.js'></script>
 </head>
 <body>
   <div id="app">Hello World</div>
 
   <script>
     // 生命周期函数:Vue实例在某时间点自动执行的函数
     var vm = new Vue({
       el: "#app",
       template: "<div>{{test}}</div>",
       data: {
         test: "hello world"
       },
       beforeCreate: function() {
         console.log("beforeCreate");
       },
       created: function() {
         console.log("created");
       },
       beforeMount: function() {
         console.log(this.$el);
         console.log("beforeMount");
       },
       mounted: function() {
         console.log(this.$el);
         console.log("mounted");
       },
       beforeDestroy: function() {
         console.log("beforeDestroy");
       },
       destroyed: function() {
         console.log("destroyed");
       },
       beforeUpdate: function() {
         console.log("beforeUpdate");
       },
       updated: function() {
         console.log("updated");
       }
     })
   </script>
 </body>
 </html>

这些方法都是单独定义,不放在 methods 对象里。

掌握Vue生命周期,让你的前端开发效率翻倍!_Vue

掌握Vue生命周期,让你的前端开发效率翻倍!_生命周期_02

见鬼了,其它几个生命周期点呢?为啥没打印出来呢?

<!DOCTYPE html>
 <html lang="en">
 <head>
   <meta charset="UTF-8">
   <title>Vue实例生命周期函数</title>
   <script src='../vue.js'></script>
 </head>
 <body>
   <div id="app">Hello World</div>
 
   <script>
     // 生命周期函数:Vue实例在某时间点自动执行的函数
     var vm = new Vue({
       el: "#app",
       template: "<div>{{test}}</div>",
       data: {
         test: "hello world"
       },
       // 第一个被调用
       beforeCreate: function() {
         console.log("beforeCreate");
       },
created: function() {
         console.log("created");
       },

template

掌握Vue生命周期,让你的前端开发效率翻倍!_Vue_03

<!DOCTYPE html>
 <html lang="en">
 <head>
   <meta charset="UTF-8">
   <title>Vue实例生命周期函数</title>
   <script src='../vue.js'></script>
 </head>
 <body>
   <script>
     // 生命周期函数:Vue实例在某时间点自动执行的函数
     var vm = new Vue({
       el: "#app",
       template: "<div>{{test}}</div>",
       data: {
         test: "hello world"
       },
       beforeCreate: function() {
         console.log("beforeCreate");
       },

上面这么写和下面一样:

<!DOCTYPE html>
 <html lang="en">
 <head>
   <meta charset="UTF-8">
   <title>Vue实例生命周期函数</title>
   <script src='../vue.js'></script>
 </head>
 <body>
   <script>
     // 生命周期函数:Vue实例在某时间点自动执行的函数
     var vm = new Vue({
       el: "#app",
       data: {
         test: "hello world"
       },
       beforeCreate: function() {
         console.log("beforeCreate");
       },

vm.$destroy()

完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及事件监听器。

触发 beforeDestroydestroyed 的钩子。

在大多数场景中你不应该调用这个方法。最好使用 v-ifv-for ,以数据驱动的方式控制子组件的生命周期。

掌握Vue生命周期,让你的前端开发效率翻倍!_html_04

update

掌握Vue生命周期,让你的前端开发效率翻倍!_生命周期_05


标签:function,el,生命周期,console,log,实例,Vue,前端开发
From: https://blog.51cto.com/JavaEdge/6458937

相关文章

  • Vue3.js第一部分【核心篇】
    Vue3Vue核心Vue3快速上手​1.Vue3简介2020年9月18日,Vue.js发布3.0版本,代号:OnePiece(海贼王)耗时2年多、​2600+次提交、30+个RFC、600+次PR、99位贡献者github上的tags地址:​https://github.com/vuejs/vue-next/releases/tag/v3.0.0国内官网地址:​Vue.js-渐进式JavaScr......
  • [Vue warn]: Error compiling template: Component template should contain exactly
    报错信息:[Vuewarn]:Errorcompilingtemplate:Componenttemplateshouldcontainexactlyonerootelement.Ifyouareusingv-ifonmultipleelements,usev-else-iftochaintheminstead.2|3|4||......
  • Vue_Django 登录注册+图书管理系统
    Vue前端注册页面点击查看代码<template><divclass="register"><el-row:gutter="20"><el-col:span="12":offset="6"><divclass="grid-contentbg-purple">&......
  • Spring Boot&Vue3前后端分离实战wiki知识库系统<八>--分类管理功能开发二
    接着上一次SpringBoot&Vue3前后端分离实战wiki知识库系统<七>--分类管理功能开发的分类功能继续完善。分类编辑功能优化:概述:现在分类编辑时的界面长这样:很明显目前的父分类的展现形式不太人性,这里需要指定父分类的id才可以,对于用户来说这种交互是反人道的,用户怎么知道父分类......
  • vue报错Invalid VNode type: undefined
    报错项目启动后,部分内容没有显示出来。打开console后,显示[Vuewarn]:InvalidVNodetype:undefined(undefined)处理引入“defineAsyncComponent”实现异步引入。import{defineAsyncComponent}from'vue'。问题解决了。......
  • Vue插件:Vue-resource github搜索示例
     1:安装插件  vue-resourcevue的插件库,在vue1.0年代使用几率很高2:界面效果3:代码信息说明:该示例代码基本上是与《“Vue中通过事件总线方式组件间传递数据及调用Vue脚手架中的axios数据调用方式获取github提供的用户接口数据信息”》一文中的代码相同。        故:此处......
  • Vue 中通过事件总线方式组件间传递数据及调用 Vue脚手架中的axios数据调用方式获取git
    1:看界面效果2:代码结构3:代码内容3.1:引入第三方css样式表:bootstrap.css/*!*Bootstrapv3.3.5(http://getbootstrap.com)*Copyright2011-2015Twitter,Inc.*LicensedunderMIT(https://github.com/twbs/bootstrap/blob/master/LICENSE)*//*!normalize.cssv3.0.3|......
  • vue后台管理系统实现全屏展示
    效果图展示直接上代码<!--全屏显示--><divclass="btn-fullscreen"@click="handleFullScreen"><el-tooltipeffect="dark":content="fullscreen?`取消全屏`:`全屏`"placement="bottom">......
  • Vue跨域配置异常采坑:Request failed with status code 401
    本地用Express作为服务端,前端Vue项目配置跨域代理,调用服务端api接口始终报错“Requestfailedwithstatuscode401”。原来发现是端口3000被占用了,被VSCode的一个插件占用了,修改为其他端口解决。具体解决过程记录一下。后端、前端配置Express服务端接口为3000,地址:http://lo......
  • Vue进阶(幺贰幺):ElementUI 表单校验注意事项
    (文章目录)一、表单检验注:prop对应的不单单是rules规则里面的验证项,同时对应着form-item下v-model绑定的值。prop绑定的类要与el-form-item下v-model的值相对应。否则就算校验元素输入字符,也会提示“请输入”之类的提示语,造成校验不友好问题。二、清除表单校验//清除表单校......