vuex

web面试必问的题

≯℡__Kan透↙ 提交于 2021-01-08 14:04:16
1. vue双向数据绑定原理 vue是采用数据劫持结合发布-订阅 的方式,通过 object.defineProperty() 来劫持各个属性的 setter , getter ,在数据发生变动时发布消息给订阅者,触发相应的监听回调来渲染视图 第一步: 需要 observer 的数据对象进行 递归遍历 ,包括子属性对象的属性,都加上 setter , getter ,这样的话,给这个对象的某个值 赋值 ,就会触发 setter ,那么就能监听到数据变化 简单来说就是实现一个数据监听器Observer,它能够对数据对象的所以属性进行监听,如果有变动就可以拿到最新的值并通知订阅者 第二步: compile 解析模块指令,讲模块中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图 简单来说就是实现一个指令解析器Compile,对每个元素节点的指令进行扫描和解析,替换数据,绑定更新函数 第三步: Watcher 订阅者时 Observer 和 Compile 之间的通讯桥梁,主要做的事情是: 1.在自身实例化时往属性订阅器( dep )里面添加自己 2.自身必须有一个 update() 方法 3.待属性变动 dep.notice() 通知时,能调用自身的 update() 方法,并触发 Compile

Vue login function

血红的双手。 提交于 2021-01-07 06:58:44
问题 I'm trying to hook up my backend with JWT authentication to a login component in Vue. This is my Vuex action: userLogin({commit}, payload) { axios.post('/users/token/obtain/', { email: payload.email, password: payload.password, }) .then(response => { localStorage.setItem('access', response.data.access) localStorage.setItem('refresh', response.data.refresh) let body = JSON.parse(atob(response.data.access.split('.')[1])) commit('userLogin', { userToken: response.data.access, userEmail: body

Vue login function

南楼画角 提交于 2021-01-07 06:58:32
问题 I'm trying to hook up my backend with JWT authentication to a login component in Vue. This is my Vuex action: userLogin({commit}, payload) { axios.post('/users/token/obtain/', { email: payload.email, password: payload.password, }) .then(response => { localStorage.setItem('access', response.data.access) localStorage.setItem('refresh', response.data.refresh) let body = JSON.parse(atob(response.data.access.split('.')[1])) commit('userLogin', { userToken: response.data.access, userEmail: body

Filter is not working inside the action for filtering array of objects in Vuex

淺唱寂寞╮ 提交于 2021-01-07 06:31:29
问题 I have an array of objects which is getter. I am using getter inside action and trying to filter it but whatever I do filtering doesn't work and it returns all mapped item ids. filterItems({ getters, commit }) { let filteredItems = getters.getAllItems .filter(item => item.type !== 'hat' || item.type !== 'glases') .map(item => item.id) console.log(filterItems) commit('setFilteredItems', filteredItems) }, What is wrong? 回答1: I think the problem is coming from here: item.type !== 'hat' || item

关于假期的一些想法,以及安排

Deadly 提交于 2021-01-06 02:27:35
从今年 2 月份开始,就是开始忙公司的项目,还记得 2 月份的时候,公司早早就开班工作了,每天居家工作,早上早早起来就是学习一个半小时,然后就开始工作,那段时间真的很压抑啊,每天那里也不能去,只能待在家里,只能晚上出去透透气。 在 2020 年 10 月 1 日,那天也是中秋节,也是国庆节,这是懂事以来第一次碰到的,合起来就是中国快乐的意思,这个意义特别重大,虽然今年由于疫情的影响,发生了很多事情,但是一切都是最好的安排,一切都是宝贵的经历吧。 如今糟糕的时间逐渐消退了,国内也渐渐恢复景气了,只要我们坚持出门戴口罩,听专家的话,我们终究能够战胜这场疫情。现在也不能有侥幸心理,因为最近这阵子疫情总是反反复复的。 每次回家都会到溪边跑步的,这个已经成为一种习惯了,每次到溪边跑步,都会油然而生一种自豪,一种对未来的憧憬,就会觉得心里舒服了很多,然后一直告诉自己,在内心一直默念,你行的,你行的,你真的行的。 在心里学中,有一个概念叫做心里暗示,或许这就是一种心里暗示吧,足够使你在遭受挫折的时候,重新给自己勇气,重新振作起来。还有一个特别好的坚持就是,坚持跑步。我相信大家都对下面这位日本作家非常熟悉: 他的很多作品我们都十分熟悉,比如长篇小说《挪威的森林》、《海边的卡夫卡》、《舞舞舞》等,但本次为大家介绍的,并不是村上的小说,而是他的一本“另类著作”——《当我谈跑步时我谈些什么》

vue composition api how does it solve naming conflicts?

有些话、适合烂在心里 提交于 2021-01-05 09:12:25
问题 It's said that composition api solves naming conflicts which were brought by mixins. This is what I found on the internet about composition API. export default { setup () { const { someVar1, someMethod1 } = useCompFunction1(); const { someVar2, someMethod2 } = useCompFunction2(); return { someVar1, someMethod1, someVar2, someMethod2 } } } I guess, useCompFunction1() and useCompFunction2 are like mixins. In the example, all is good. but if useCompFunction1() and useCompFunction2() use the

vue composition api how does it solve naming conflicts?

我们两清 提交于 2021-01-05 09:12:16
问题 It's said that composition api solves naming conflicts which were brought by mixins. This is what I found on the internet about composition API. export default { setup () { const { someVar1, someMethod1 } = useCompFunction1(); const { someVar2, someMethod2 } = useCompFunction2(); return { someVar1, someMethod1, someVar2, someMethod2 } } } I guess, useCompFunction1() and useCompFunction2 are like mixins. In the example, all is good. but if useCompFunction1() and useCompFunction2() use the

Vue.js源码全方位深入解析--学习笔记

此生再无相见时 提交于 2021-01-04 04:17:37
模板中的插入变量是如何渲染到DOM上的? initMixin(Vue)->_init-> $options -> $mount() 当执行该挂载方法时DOM变化 为什么可以通过this访问到data里面的数据? initstate(vm)->initData()->proxy(vm, _data ,key)代理函数 所以我们也可以同过this._data.dataName获取到数据 $mount的实现 $mount->处理e(编译,转化成render函数)->mountComponent()->updateComponent()->渲染Wather vm._render的实现 _render->从vm.options拿到render->render.call(vm._renderProxy,vm.$createElement)->initProxy->hasHandler判断元素如果不在target上,则会报错warnNonPresent-> 返回vnode 虚拟Dom VNodeData定义在flow/vnode.js (创建虚拟DomTree) create-element–> 参数重载-> _createElement-> 对data校验(如果是响应式的 return create EmptyVnode() (vnode.js))->

某课网

心已入冬 提交于 2021-01-04 04:05:27
百度网盘下载 第1章 准备工作 介绍了 Flow、Vue.js 的源码目录设计、Vue.js 的源码构建方式,以及从入口开始分析了 Vue.js 的初始化过程。 1-1 课程简介 1-2 准备工作 1-3 认识 Flow-文档 1-4 认识 Flow 1-5 Vue.js 源码目录设计-文档 1-6 Vue.js 源码目录设计 1-7 Vue.js 源码构建-文档 1-8 Vue.js 源码构建 1-9 从入口开始-文档 1-10 从入口开始 第2章 数据驱动 详细讲解了模板数据到 DOM 渲染的过程,从 new Vue 开始,分析了 mount、render、update、patch 等流程。 2-1 数据驱动-文档 2-2 数据驱动 2-3 new Vue 发生了什么-文档 2-4 new Vue 发生了什么 2-5 Vue 实例挂载的实现-文档 2-6 Vue 实例挂载的实现 2-7 render-文档 2-8 render 2-9 Virtual DOM-文档 2-10 Virtual DOM 2-11 createElement-文档 2-12 createElement 2-13 update-文档 2-14 update 第3章 组件化 分析了组件化的实现原理,并且分析了组件周边的原理实现,包括合并配置、生命周期、组件注册、异步组件。 3-1 组件化-文档 3-2

Vue学习官网和Vue的书籍 目录结构

谁说我不能喝 提交于 2021-01-03 07:47:11
Vue基础知识学习网站【中文】 https://cn.vuejs.org/v2/guide/ Vue路由知识学习网站【中文】 https://router.vuejs.org/zh/guide/ Vuex更为复杂的Vue知识学习网站【中文】 https://vuex.vuejs.org/zh/ Vue脚手架搭建和使用学习网站【中文】 https://cli.vuejs.org/zh/guide/ Vue自学可以参考的博客,博客中有demo https://www.cnblogs.com/keepfool/p/5657065.html https://www.xiuyuan.info/?p=115 https://www.cnblogs.com/keepfool/p/5619070.html https://www.cnblogs.com/wisewrong/p/6277262.html 第1章 Vue.js简介 1.1 Vue.js是什么 1 1.2 为什么要用Vue.js 2 1.3 Vue.js的Hello world 2 第2章 基础特性 2.1 实例及选项 5 2.1.1 模板 6 2.1.2 数据 7 2.1.3 方法 9 2.1.4 生命周期 10 2.2 数据绑定 12 2.2.1 数据绑定语法 13 2.2.2 计算属性 17 2.2.3 表单控件 18 2.2.4