1.生命周期.html 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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 class="main">{{msg}}</div>
  11. <button @click="changeMain">修改</button>
  12. <button @click="des">销毁</button>
  13. <!--
  14. Vue的diff算法 => 虚拟DOM树 真实DOM树
  15. 生命周期 生命周期钩子 生命周期的回调函数
  16. 三个阶段:
  17. 初始阶段:
  18. 1.beforeCreate() 创建前:方法(methods)和 数据(data)都是无法被调用
  19. 2.created() 创建后:方法(methods)和 数据(data)都是被调用
  20. 运行阶段:
  21. 3.beforeMount() 挂载前:页面数据并没有更新到视图上(并没有被vue编译)对DOM操作无效
  22. 4.mounted() 挂载后:页面渲染数据,DOM操作生效
  23. 5.beforeUpdate() 更新前:视图改变 数据未更新
  24. 6.updated() 更新后:数据改变 视图更新
  25. 销毁阶段:
  26. 7.beforeDestroy() 销毁前:对DOM操作无效
  27. 8.destroyed() 销毁后:彻底销毁
  28. -->
  29. </div>
  30. <script src="../vue初阶/vue.js"></script>
  31. <script>
  32. var app = new Vue({
  33. el:"#app",
  34. data:{
  35. msg:"生命周期"
  36. },
  37. methods: {
  38. changeMain() {
  39. this.msg = '新的'
  40. },
  41. des() {
  42. this.$destroy()
  43. }
  44. },
  45. computed: {
  46. },
  47. beforeCreate() {
  48. console.log(this.msg,'创建前');
  49. },
  50. created() {
  51. console.log(this.msg,'创建后');
  52. },
  53. beforeMount() {
  54. console.log(this.$el,'挂载前')
  55. },
  56. mounted() {
  57. console.log(this.$el,'挂载后')
  58. },
  59. beforeUpdate() {
  60. console.log(this.$el,document.querySelector(".main").innerHTML,'更新前')
  61. },
  62. updated() {
  63. console.log(this.$el,document.querySelector(".main").innerHTML,'更新后')
  64. },
  65. beforeDestroy() {
  66. console.log(this.$el,'销毁前')
  67. },
  68. destroyed() {
  69. console.log(this.$el,'销毁后')
  70. },
  71. watch: {
  72. },
  73. components:{
  74. }
  75. });
  76. </script>
  77. </body>
  78. </html>