随笔分类 -  前端框架

jq & vue & react 等等等
摘要:nginx 转发的问题导致 vue ssr 出错 [Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside , or missing . Bailing hydration and performing full client-side render. 阅读全文
posted @ 2021-03-10 11:30 Ever-Lose 阅读(2900) 评论(1) 推荐(0)
摘要:前言 我们都知道 React 组件绑定事件的本质是代理到 document 上,然而面试被问到,为什么要这么设计,有什么好处吗? 我知道肯定不会是因为虚拟 DOM 的原因,因为 Vue 的事件就能挂载到真实的 DOM 节点。所以继续往下探究吧 React 模拟 DOM 事件冒泡的原理 设有一段代码如 阅读全文
posted @ 2020-06-05 00:00 Ever-Lose 阅读(1593) 评论(0) 推荐(0)
摘要:答案:主要是为了提升同级的比较效率的。 借用我在博客上另外一篇 Vue 2 渲染过程的图 其中核心比对逻辑就是新老节点头对头,头对尾,尾对头,尾对尾,都判定非 sameVnode,则拿着 key 去比对,若其中有被判定为 sameVnode,则复用节点。反之需要删除后再添加新节点。 function 阅读全文
posted @ 2020-06-03 15:06 Ever-Lose 阅读(463) 评论(0) 推荐(0)
摘要:vue 3 使用了 proxy api,有些手痒,就弄一个简单的结构玩玩吧。Proxy API 见 MDN Proxy 效果图 思路 依赖收集:Mvvm 初始化时劫持数据,并设置观察者 dep。模仿 vue 结构是在 get 时往观察者 dep 推入被观察者 watcher,然后 set 时让观察者 阅读全文
posted @ 2020-06-03 00:24 Ever-Lose 阅读(497) 评论(0) 推荐(0)
摘要:面试提问:说说 vue 父子组件加载顺序 这我知道答案 父 beforeCreate 父 created 父 beforeMount 子 beforeCreate 子 created 子 beforeMount 子 mounted 父 mounted 子组件若有 props 的话更新顺序是四步,若无 阅读全文
posted @ 2020-05-26 10:54 Ever-Lose 阅读(7779) 评论(0) 推荐(1)
摘要:$ npm start Vue packages version mismatch: - vue@2.4.2 - vue-template-compiler@2.5.1 vue 版本和 vue-template-compiler 的版本必须一致,否则就会报以上的错,解决方案其实很简单 # 如果你的v 阅读全文
posted @ 2020-05-26 10:12 Ever-Lose 阅读(423) 评论(0) 推荐(0)
摘要:在 "尤雨溪 聊聊 Vue.js 3.0 Beta 官方直播完整版 2020 04 21" 里我发现了一个有意思的工具,输入模板展示它编译优化的结果,网址在这里:https://vue next template explorer.netlify.app/ 留意图片中,注意动态的 的注释。识别 _o 阅读全文
posted @ 2020-05-08 22:14 Ever-Lose 阅读(960) 评论(0) 推荐(0)
摘要:"github 链接在这里" jqfree this is an imitation jquery, it has fewer fuctions, but only 400+ lines of code. jqfree can not be used in project, we just take 阅读全文
posted @ 2020-04-13 23:09 Ever-Lose 阅读(264) 评论(0) 推荐(0)
摘要:Vue 和 React 的核心差异 用 Evan you 的话说:双向绑定是对表单来说的,表单的双向绑定,说到底不过是 value 的单向绑定 + onChange 事件侦听的一个语法糖。 这个并不是 React 和 Vue 在理念上真正的差别体现。同时,单向数据流不是 Vue 或者 React 的 阅读全文
posted @ 2020-04-13 20:11 Ever-Lose 阅读(907) 评论(0) 推荐(0)
摘要:简述 监听hashchange方法 进行地址匹配,得到对应当前地址的 route。 将其设置到对应的 vm._route 上。侵入vue监听_route变量而触发更新流程 最后是router view组件调用render函数渲染匹配到的route 测试代码 怎么注入进的 vue 一个 install 阅读全文
posted @ 2020-04-12 13:25 Ever-Lose 阅读(2144) 评论(0) 推荐(0)
摘要:环境和测试代码 vue 2.6.11, vuex 3.1.3 总结 侵入每个 vue 组件注册了 $store 属性,而所有 $store 属性都指向一个 store 实例,这样就能做到所有 vue 组件访问的都是同一份全局变量。 vue 组件里用户定义取 store 上的变量用于渲染或者其他逻辑, 阅读全文
posted @ 2020-03-31 13:32 Ever-Lose 阅读(2431) 评论(0) 推荐(0)
摘要:前置说明 vue 版本 2.6.2,测试用的代码 简要概括 在拦截器(Object.defineProperty)里,在它的闭包中会有一个观察者(Dep)对象,这个对象用来存放被观察者(watcher)的实例。 并且拦截器注册 get 方法,该方法用来进行「依赖收集」。其实「依赖收集」的过程就是把 阅读全文
posted @ 2020-03-28 11:34 Ever-Lose 阅读(1948) 评论(0) 推荐(0)
摘要:概述 compile 编译可以分成 parse、optimize 与 generate 三个阶段,最终需要得到 render function。这部分内容不算 Vue.js 的响应式核心,只是用来编译的,笔者认为在精力有限的情况下不需要追究其全部的实现细节,能够把握如何解析的大致流程即可 举例 入口 阅读全文
posted @ 2020-03-25 11:24 Ever-Lose 阅读(741) 评论(0) 推荐(0)
摘要:周所周知,Vue在2.0版本中去除了$broadcast方法以及$dispatch方法,最近在学习饿了么的 "Element" 时重新实现了这两种方法,并以minix的方式引入。 看一下 "源代码" 其实这里的broadcast与dispatch实现了一个定向的多层级父子组件间的事件广播及事件派发功 阅读全文
posted @ 2020-03-25 11:22 Ever-Lose 阅读(351) 评论(0) 推荐(0)
摘要:场景 vue 版本 2.3.0 早上起来新建个项目写单测的时候发现报出一个错误 runtime only ? 这是什么情况,我只是在单测代码里构建了一个 vm 对象啊,写入了 import Vue from 'vue'; let vm = new Vue({ template: ` {{ text 阅读全文
posted @ 2020-03-25 11:21 Ever-Lose 阅读(492) 评论(0) 推荐(0)
摘要:提问 Vue 2.x 里劫持对象仍用 Object.defineProperty() 方法,受此方法的限制,Vue 无法检测到直接数组更改(mobx 旧版本也有过这毛病,他对数组0到999项的内容都现实地 Object.defineProperty 监听了),和对象属性的添加或删除。 举个例子,运行 阅读全文
posted @ 2020-03-25 11:20 Ever-Lose 阅读(571) 评论(0) 推荐(0)
摘要:背景 很多人对 process.nextTick() 有个误解,认为它也是前端常用的微任务,但其实不是。 这个方法只是在 Node 中存在,并且是个 Node 进入事件轮询的下一阶段时就会触发的一个神奇的方法。 那么问题来了,Vue 中也实现过一个 this.$nextTick(),这是怎么做的呢? 阅读全文
posted @ 2020-03-25 10:47 Ever-Lose 阅读(203) 评论(0) 推荐(0)
摘要:面试时被问到,那就趁机梳理一下 vue 的演进吧 vue2 比 vue1 的改进 详见 "从Vue 1.x 迁移" 生命周期 比如说 beforeCompile 移除, 使用 created 替代,compiled 移除,使用 mounted 替换等 语法 新数组语法 (value, index) 阅读全文
posted @ 2020-03-25 10:21 Ever-Lose 阅读(9497) 评论(0) 推荐(0)
摘要:原理 computed 本质是一个惰性求值的订阅者。data 属性的 Observer 挂在 属性下,而 computed 属性挂在 下。而发布者 Dep 里存放了两个订阅者,而和computed相关的订阅者,其实只做了一件事情,标记 dirty 为 true,等待 get 时再真正计算。 comp 阅读全文
posted @ 2020-03-21 20:41 Ever-Lose 阅读(2929) 评论(0) 推荐(0)
摘要:测试例子 主要函数定义 716:Dep 发布者定义 767:Vnode 虚拟节点定义 922:Observer 劫持数据的函数定义 4419:Watcher 订阅者定义 5073:function Vue() 定义 数据劫持过程 Vue.prototype._init 中,在 后和 之前调用 ini 阅读全文
posted @ 2020-03-21 20:32 Ever-Lose 阅读(1031) 评论(0) 推荐(0)