加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

中高级前端大厂面试秘籍,为你保驾护航金三银四,直通大厂

发布时间:2019-02-21 00:38:33 所属栏目:建站 来源:佚名
导读:副标题#e# 引言 当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~。缩减HC、裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀。但博主始终相信,寒冬之中,人才更是尤为珍贵。只要有过硬

上面是vue的声明周期的简单梳理,接下来我们直接以代码的形式来完成vue的初始化

  1. new Vue({}) 
  2.  
  3. // 初始化Vue实例 
  4. function _init() { 
  5.      // 挂载属性 
  6.     initLifeCycle(vm)  
  7.     // 初始化事件系统,钩子函数等 
  8.     initEvent(vm)  
  9.     // 编译slot、vnode 
  10.     initRender(vm)  
  11.     // 触发钩子 
  12.     callHook(vm, 'beforeCreate') 
  13.     // 添加inject功能 
  14.     initInjection(vm) 
  15.     // 完成数据响应性 props/data/watch/computed/methods 
  16.     initState(vm) 
  17.     // 添加 provide 功能 
  18.     initProvide(vm) 
  19.     // 触发钩子 
  20.     callHook(vm, 'created') 
  21.          
  22.      // 挂载节点 
  23.     if (vm.$options.el) { 
  24.         vm.$mount(vm.$options.el) 
  25.     } 
  26. } 
  27.  
  28. // 挂载节点实现 
  29. function mountComponent(vm) { 
  30.      // 获取 render function 
  31.     if (!this.options.render) { 
  32.         // template to render 
  33.         // Vue.compile = compileToFunctions 
  34.         let { render } = compileToFunctions()  
  35.         this.options.render = render 
  36.     } 
  37.     // 触发钩子 
  38.     callHook('beforeMounte') 
  39.     // 初始化观察者 
  40.     // render 渲染 vdom,  
  41.     vdom = vm.render() 
  42.     // update: 根据 diff 出的 patchs 挂载成真实的 dom  
  43.     vm._update(vdom) 
  44.     // 触发钩子   
  45.     callHook(vm, 'mounted') 
  46. } 
  47.  
  48. // 更新节点实现 
  49. funtion queueWatcher(watcher) { 
  50.     nextTick(flushScheduleQueue) 
  51. } 
  52.  
  53. // 清空队列 
  54. function flushScheduleQueue() { 
  55.      // 遍历队列中所有修改 
  56.     for(){ 
  57.         // beforeUpdate 
  58.         watcher.before() 
  59.           
  60.         // 依赖局部更新节点 
  61.         watcher.update()  
  62.         callHook('updated') 
  63.     } 
  64. } 
  65.  
  66. // 销毁实例实现 
  67. Vue.prototype.$destory = function() { 
  68.      // 触发钩子 
  69.     callHook(vm, 'beforeDestory') 
  70.     // 自身及子节点 
  71.     remove()  
  72.     // 删除依赖 
  73.     watcher.teardown()  
  74.     // 删除监听 
  75.     vm.$off()  
  76.     // 触发钩子 
  77.     callHook(vm, 'destoryed') 
  78. } 

3. 数据响应(数据劫持)

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!