1.生命周期.html 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <div id="main">
  11. {{msg}}</div>
  12. <button @click="showMsg">按钮</button>
  13. <button @click="del">销毁</button>
  14. <!--
  15. vue 底层中diff算法 => DOM虚拟树 DOM真实树
  16. 生命周期:生命周期函数 生命周期钩子 生命周期回调函数
  17. 生命周期的名字是不可以更改的
  18. 三个阶段:
  19. 创建阶段
  20. 1.beforeCreate 创建前:方法(methods) 和 数据(data)都是无法被调用
  21. 2.created 创建后:方法(methods) 和 数据(data)都是可以被调用
  22. 运行阶段
  23. 3.beforeMount 挂载前:页面数据不会更新到视图里(没有通过vue编译) 对DOM操作无效
  24. 4.mounted 挂载后:页面渲染数据,并可以开始对DOM进行操作
  25. 5.beforeUpdate 更新前:数据改变 页面未更新
  26. 6.updated 更新后:数据改变 页面更新
  27. 销毁阶段
  28. 7.beforeDestroy 销毁前:对DOM操作无效
  29. 8.destroyed 销毁后:彻底销毁
  30. -->
  31. </div>
  32. <script src="./vue.js"></script>
  33. <script>
  34. var app = new Vue({
  35. el:"#app",
  36. data:{
  37. msg:"信息:看笔记"
  38. },
  39. methods:{
  40. showMsg() {
  41. this.msg = "生命周期";
  42. },
  43. del() {
  44. this.$destroy();
  45. }
  46. },
  47. beforeCreate() {
  48. console.log(this.msg,'创建前')
  49. },
  50. created() {
  51. console.log(this.$el,'创建后')
  52. },
  53. beforeMount() {
  54. console.log(this.$el,'挂载前')
  55. },
  56. mounted() {
  57. console.log(this.msg,'挂载后')
  58. },
  59. beforeUpdate() {
  60. console.log(this.$el,document.getElementById("main").innerHTML,'更新前')
  61. },
  62. updated() {
  63. console.log(document.getElementById("main").innerHTML,'更新后')
  64. },
  65. beforeDestroy() {
  66. console.log(this.$el,"销毁前")
  67. },
  68. destroyed() {
  69. console.log(this.$el,'销毁后')
  70. },
  71. })
  72. </script>
  73. </body>
  74. </html>