1. vue生命周期: 一个vue对象从创建到销毁所经历的整个过程, 在这个过程中, vue会在特定的时刻主动调用一些函数, 这些函数叫做生命周期函数 生命周期钩子
    1. <body>
    2. <script src='https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js'></script>
    3. <div id='myApp'>
    4. <button @click="()=>{obj.age++}">{{obj.age}}</button>
    5. </div>
    6. <script>
    7. var vm = new Vue({
    8. el: '#myApp', // 根标签
    9. data: { obj: {age:20} }, // 动态数据
    10. methods: { }, // 自定义函数
    11. filters: {}, // 过滤器
    12. computed: {}, // 计算属性
    13. watch: {}, // 监视器
    14. // vue中除了以上几个常用字段之外,还提供了以下8个生命周期函数
    15. beforeCreate() {
    16. // beforeCreate调用时, 栈内存已经确定了一个内存地址,用于存放这vue对象, 但此时,vue对象虽然有内存地址,但还未创建完成, 里边的数据还未定义, 所以,this有值, this.obj没值
    17. console.log(1, "vue对象还没有创建", this, this.obj)
    18. },
    19. created() {
    20. // 一般在这里发起ajax请求, 得到数据, 赋值到data中
    21. console.log(2, "vue对象已经创建", this, this.obj)
    22. fetch("./goodList.json").then(res=>{
    23. return res.json()
    24. }).then(res=>{
    25. console.log(res)
    26. })
    27. },
    28. beforeMount() {
    29. console.log(3, "vue中的数据还没有渲染到视图上")
    30. },
    31. mounted() {
    32. console.log(4, "vue中的数据已经渲染到视图上")
    33. },
    34. beforeUpdate() {
    35. console.log(5, 'data数据更新之前')
    36. },
    37. updated() {
    38. console.log(6, 'data数据更新之后')
    39. },
    40. beforeDestroy() {
    41. // 如果一个页面中有window的事件监听, 或计时器, 一定要在销毁时停掉
    42. console.log(7, "vue对象将要被销毁")
    43. },
    44. destroyed() {
    45. console.log(8, "vue对象已经被销毁")
    46. }
    47. // 总结: vue的生命周期钩子
    48. // beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, beforeDeatroy, destroyed
    49. })
    50. // 2秒后, 销毁vue对象
    51. setTimeout(() => {
    52. vm.$destroy()
    53. }, 2000);
    54. setTimeout(() => {
    55. // vue对象销毁后, 依然可以调用, 但更新的生命周期函数不存在了,无法调用
    56. console.log(vm, vm.obj.age)
    57. }, 3000);
    58. </script>
    59. </body>