首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏coding个人笔记

    vue nextTick源码

    早之前有分享过vue的nextTick的使用,当时说当数据发生变化,更新后执行回调没有实现,那时候也不知道怎么测试的,其实nextTick方法只是做了一步异步。 先明确一下,修改数据、渲染页面,在vue里面都是同步的,包括生命周期,也是同步执行,而nextTick是用异步的回调,所以才能获取最新的dom或者实例属性。 上源码,然后使用一下。 上面是vue nextTick的源码,讲真,看别人源码还要去看一些api,然后分析为什么这样写,看着代码看明白了,一关上,就一点写不出来。 (完)

    52220发布于 2020-09-14
  • 来自专栏LuckySec网络安全

    Vue 源码泄露

    大部分Vue应用会使用webpack进行打包,如果没有正确配置,就会导致Vue源码泄露,可能泄露的各种信息如API、加密算法、管理员邮箱、内部功能等等。 0x02 漏洞检测 Vue项目源码在泄漏的情况下,可以在浏览器控制台中的Sources—> Page—> webpack://中查看源代码 使用webpack打包Vue应用会在网站js同目录下生成 js.map 直接查看网站的js文件,可以在末尾处有js.map文件名 直接在当前访问的js后面拼接.map即可访问下载 通过以上两种方式可以判断目标网站存在Vue源码泄露问题 0x03 漏洞利用 在某些情况下, 不能直接在浏览器控制台中的Sources—> Page—> webpack://中查看到Vue源码,但是网站上存在js.map文件,我们可以通过一些工具将js.map中的内容进行还原Vue源码 1. reverse-sourcemap webpack中 接着就可以对Vue源码进行分析审计了 2.

    6.3K60编辑于 2022-11-02
  • 来自专栏技术社区

    源码解析——VUE

    Vue源码解析 vue使用Object.defineProperty+观察者模式对数据和模板进行绑定,对于数据来说需要进行更新时,即会触发对应的getter和setter函数,在setter函数中,即可根据对应收集到的依赖 对于一次收集和一次更新来说,大致流程如下: 实例化vue之后,对内部所有的data进行劫持 处理对模板的编译/或者静态编译好的render函数,在处理绑定的变量时,创建watcher 同时获取当前模块对应的初始值 ,在读取触发数据局的getter函数,进行绑定 绑定成功后,后续触发setter,根据记录的watcher,即可更新所有的模块内容 当然对于模块的编译来说,有运行时编译、静态编译多种形式,同时对于vue 来说,vue@2使用了VNode来对模块内容进行了描述,所以在模块编译的流程中,使用VNode能更好的提升编译和更新的性能。 编译模块 Compiler 数据处理 Observer 依赖收集 Watcher/Dep 节点VNode/patch更新 对于通用性的理解来说,vue@2和vue@1并没有太多区别,更多的核心在于VNode

    26830编辑于 2022-06-16
  • Vue 源码分析

    那个你心心念念的 Vue "源码分析"。 Vue 3 源码解析Vue 2 源码解析 值得一阅的 Vue 源码解读Vue 源码学习用一张思维导图总结了 Vue | Vue-Router | Vuex 源码与架构要点Vue.js 核心源码解析从零手写 Vue 3 源码跟尤雨溪一起解读 Vue 3 源码Vue 源码逐字分析温馨警告:你对数据的访问和更新,可能已被 Vue 劫持!

    18210编辑于 2024-08-19
  • 来自专栏技术工具的探究

    Vue源码再读

    Vue3.0Beta版本已经上线,听了Evan在bilibili上的最新的介绍,特性不多(高频用法Proxy、Reflect),但想和Vue2.x版本做个对比,决定再读一下2.x源码,本文主要用代码截图和自己的理解图介绍 ---- 主要从以下关键点入手 vue源码地址:https://github.com/vuejs/vue.git 1 调试环境 1.1 添加sourcemap # package.json->scripts /examples/commits/index.html 文件vue.min.js改为vue.js index.html直接用浏览器打开,我的是放在D/workspace file:///D:/workspace /vue/examples/commits/index.html image.png 2 初始化过程 2.1 从调用栈看执行过程 好了,你可以按F11逐步跟进查看源码,下图是我的调用栈跟进信息 根据下图 还是很小巧的,之后再来阅读一下vue3.0代码看看区别

    1.8K300发布于 2020-04-29
  • 来自专栏藏经阁

    Vue 源码解析】Vue实例挂载过程

    源码解析 首先找到vue的构造函数 源码位置:node_modules/vue/src/core/instance/index.js(ps:找不到可以在node_modules目录下搜索,因为懒惰后边就不写 (Vue); // 定义 _render 返回虚拟dom 首先可以看initMixin方法,发现该方法在Vue原型上定义了_init方法 源码位置:src\core\instance\init.js $mount方法 initState方法是完成props/data/method/watch/methods的初始化 源码位置:src\core\instance\state.js export function $mount方法 源码位置:/src/platforms/web/entry-runtime-with-compiler.js Vue.prototype. 初始化时声明的render,update方法 render的作用主要是生成vnode 源码位置:src\core\instance\render.js // 定义vue 原型上的render方法 Vue.prototype

    1K30编辑于 2023-03-19
  • 来自专栏Vue源码 & 前端进阶体系

    Vue原理】Vue源码阅读总结大会

    专注 Vue 源码分享,为了方便大家理解,分为了白话版和 源码版,白话版可以轻松理解工作原理和设计思想,源码版可以更清楚内部操作和 Vue的美,喜欢我就关注我的公众号,好吧兄弟,不会让你失望的 阅读源码是需要很多的勇气的 ,特别是对这种 Vue 源码的框架,十分抽象,使用了好多设计模式,封装得十分精密。 阅读源码准备了什么 1、掌握 Vue 所有API 我把 Vue 的所有 API 都详细研究使用过了一遍,而且尽量在项目中都有使用,让自己有深一点的体会 而且我对着官方文档,一个个做了详细的笔记,而且联想过了使用场景 我可以保证,你从不懂到掌握,只要不到十分钟,简直就是 现实版的 十分钟精通到入门 好吧,下面开始说,Vue 的简单总结。 Vue 源码的简短的总结 1、封装了很多常用的函数! 而我也打算自己出一个Vue 源码系列,算是把自己的阅读心得再二次总结如果你也有兴趣跟我一起阅读源码,就加入我吧,关注我的公众号哦,文章排版会好看很多

    95210发布于 2019-08-04
  • 来自专栏女程序员的日常_Lin

    vue源码解读(二)

    new Vue发生了什么 来看源码,在/vue/src/core/index.js中 function Vue (options) { if (process.env.NODE_ENV ! (this instanceof Vue) ) { warn('Vue is a constructor and should be called with the `new` keyword // 缓存了原型上的$mount const mount = Vue.prototype.$mount // 重新定义该方法 Vue.prototype. 无论是用单文件.vue方法开发组件,还是写了el或者template属性,都会转换成render方法。这个过程是个Vue的在线编译的过程,它是调用compileToFunctions方法实现的。 $vnode 表示Vue实例的父虚拟Node,所以则表示当前是根Vue的实例 if (vm.$vnode == null) { vm.

    86721发布于 2019-07-19
  • 来自专栏图雀社区

    Vue源码探秘(一)

    引言 Vue作为当前前端开发中比较重要的框架,在企业级开发中应用十分广泛。目前也是我的主要技术栈之一。在接下来的系列文章中,我将带大家一起探秘Vue.js底层源码。 本篇文章是Vue源码探秘的第一篇。在这一篇中,我主要是带大家做一些准备工作,介绍一下flow、源码目录和源码构建流程。 Vue.js 的源码利用了 flow 来做静态类型检查,所以了解 flow 有助于我们阅读源码。 ? vue.js源码目录设计 Vue.js的源码都在src目录下: ? vue.js 源码构建 了解Rollup Vue.js 源码使用 Rollup 构建。Rollup 和 Webpack 都是打包工具,但两者的应用场景不同。

    1.7K41发布于 2020-04-07
  • 来自专栏前端达人

    Vue 3 源码导读

    话不多说,我们趁热对 Vue 3 源码进行一些简要的分析。 如果你还没有阅读过 Composition API RFC,可能无法完全看懂下面的内容。 如果你还没有学习 TypeScript,请尽快学习,否则可能看不懂源码。 另外有件事情说出来可能会让你非常惊讶,Vue 3 的源代码完全没有使用 class 关键字! @vue/runtime-core 模块 大部分 Vue 开发者应该不会用到这个模块,因为它是专门用于自定义 renderer 的。 /runtime-dom' 阅读建议 我兴奋地立刻把 Vue 3 源代码扫了一遍,发现其 TypeScript 代码结构清晰,非常好读,于是我写了一篇《Vue 3 源码导读》,点击下方的「阅读原文」即可查看全文 我没有直接把文章内容复制过来,是因为微信后台的编辑器实在太垃圾啦 :) 强烈推荐大家用假期这段时间把 Vue 3 的源码通看一遍,因为目前的代码结构清晰,而且代码量相对较少。

    1.7K00发布于 2019-10-10
  • 来自专栏前端说吧

    vue】nextTick源码解析

    1、整体入手 阅读代码和画画是一样的,忌讳一开始就从细节下手(比如一行一行读),我们先将细节代码折叠起来,整体观察nextTick源码的几大块。 折叠后代码如下图 ? 2、逐行解析 看完大的代码块结构后,可以按照js引擎解析代码的顺序来分析源码了。前边的变量和函数声明看完后,就到解析if语句了。 不过这都是该属性的用法了,VUE关于nextTick的源码里关于这个属性没用到callback的这俩参数。 所以,vue这里做了容错,先判断MutationObserver的类型是否为“undefined”,来检查浏览器是否支持该特性。 源码里,nextTick等于一个立即执行函数,函数执行完毕return一个匿名函数如下,也就是说,下边的代码就是我们调用nextTick的时候调用的函数。

    94810发布于 2020-05-04
  • 来自专栏前端工程师面试指南

    vue源码分析-从new Vue开始

    初学vue,你得知道我们是从new Vue开始的:new Vue({ el: '#app', data: obj, ...})那你觉得是不是很有意思,咱们new Vue之后,就可以使用他那么多的功能 ,可见Vue是暴出来的一个一个功能类函数,我们进入源码一探究竟:import Vue from '. (Vue) // Vue.mixin initExtend(Vue) // Vue.extend initAssetRegisters(Vue)}可见暴露出多个方法给全局,而Vue.util是一些工具方法 default Vue我们可以看到initMixin(Vue)执行了,那么我们去读一下init的源码:参考Vue3源码视频讲解:进入学习import config from '.. $options.el) } }}阅读init.js源码之后,我们可以看到其实就是这样一个顺序:option参数renderProxy代理vm的生命周期相关变量初始化vm的事件监听初始化vm的状态

    74940编辑于 2022-10-19
  • 来自专栏女程序员的日常_Lin

    vue源码解读(一)

    sfc 将.vue文件内容解析为一个javascript的对象。 shared vue.js定义了一些方法。可以被浏览器端的vue.js和服务端的vue.js共享的工具方法。 源码构建 在项目根目录下package.json文件中script配置如下: { "script": { "build": "node scripts/build.js", "build _init(options) } initMixin(Vue) stateMixin(Vue) eventsMixin(Vue) lifecycleMixin(Vue) renderMixin(Vue (Vue) initAssetRegisters(Vue) } 在这里给Vue扩展了一些全局方法。 如Vue.nextTick ,Vue.set... 到现在vue的初始化过程基本即完成了。

    1.3K22发布于 2019-07-19
  • 来自专栏前端工程师面试指南

    vue源码分析-组件

    参考Vue3源码视频讲解:进入学习回到异步组件创建的流程,执行异步过程会同步为加载中的异步组件创建一个注释节点Vnode function createComponent (){ ··· /test.vue'))源码依然走着异步组件处理分支,并且大部分的处理过程还是工厂函数的逻辑处理,区别在于执行异步函数后会返回一个promise对象,成功加载则执行resolve,失败加载则执行reject.var 在2.3.0+版本新增了返回对象形式的异步组件格式,对象中可以定义需要加载的组件component,加载中显示的组件loading,加载失败的组件error,以及各种延时超时设置,源码同样进入异步组件分支 ({ el: '#app', data: { msg: 'test' }})最终渲染的结果为:

    test

    6.2.2 源码分析函数式组件会在组件的对象定义中,将functional 简单总结一下函数式组件,从源码中可以看出,函数式组件并不会像普通组件那样有实例化组件的过程,因此包括组件的生命周期,组件的数据管理这些过程都没有,它只会原封不动的接收传递给组件的数据做处理,并渲染需要的内容

    86410编辑于 2022-10-17
  • 来自专栏Vue源码 & 前端进阶体系

    Vue原理】Vue源码阅读总结大会 - 终

    写文章不容易,点个赞呗兄弟 专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本 【2.5.17】 如果你觉得排版难看 ,请点击 下面链接 或者 拉到 下面关注公众号也可以吧 【Vue原理】Vue源码阅读总结大会 - 终 终于啊终于啊,把 Vue 系列的文章发完了了,如释重负的感jio啊,今天就打算总结下,我这段时间来的历程和收获 我看源码测试,都是直接看一整个开发版的 Vue 文件,而我看网上很多人都是选择看 Github 上 Vue 功能分类好的文件夹 我个人不太喜欢这样,虽然每个文件都相比一整个文件简短不少,功能分类好,但是文件太多 源码分享大会的开始,我们也有说过,可以看下 【Vue原理】Vue源码阅读总结大会 - 序 --- 最后 我很害怕自己会写错东西,所以一直很小心翼翼地检查文章,写出一篇文章我不会马上发表,而是等过一段时间再审查一遍 Vue 系列写完之后,后面可能会更新一些 Vue 的番外篇,比如源码中的一些小功能,但是现在估计会断更一段时间,接着后面会发腾讯前端进阶课程的心得 [公众号] [公众号]

    66520发布于 2019-08-20
  • 来自专栏Vue源码 & 前端进阶体系

    Vue原理】NextTick - 源码版 之 服务Vue

    写文章不容易,点个赞呗兄弟 专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本 【2.5.17】 如果你觉得排版难看 ,请点击 下面链接 或者 拉到 下面关注公众号也可以吧 【Vue原理】NextTick - 源码版 之 服务Vue 初次看的兄弟可以先看 【Vue原理】NextTick - 白话版 简单了解下NextTick 好的,今天,就来详细记录 Vue 和 nextTick 的那些事 [公众号] nextTick 在 Vue 中,最重要的就是~~~ 协助 Vue 进行更新操作! 上篇文章 NextTick-源码版之独立自身 提到过,nextTick 帮助 Vue 避免频繁的更新,这里简单提一下, 每次修改数据,都会触发数据的依赖更新 也就是说数据被修改的时候,会调用一遍 直到我看到了 flushSchedulerQueue 的 源码

    77330发布于 2019-08-02
  • 来自专栏乐赞分享

    Vue学习-学习源码手撸简易Vue

    本期内容是带着大家熟悉 Vue 的基本组成逻辑,并手把手的帮助大家完成一个简易版本的 Vue。 内容篇幅较长,请耐心观看。 ? 演示 ? ? 准备工作 创建好文件夹,起名叫做 Mini_Vue。 等等属性 梳理 先行解读 Vue 模块中的参数: $options 此属性代指初始化 Vue 时(new Vue())传入的自定义属性数据。 通过Object.defineProperty将 data 转换成 getter/setter 代码 首先打开 vue.js 文件,我们开始 Vue 类的建立。 实现 Vue 属性的加载 class Vue { constructor(option) { // 1.通过属性保存选项的数据 this. Vue 学习-数据响应式原理 此时我们对 Vue 类进行了简单的处理。但是还有两个功能并没有实现,我们先放着,接着往下走。 ?

    99910发布于 2020-12-14
  • 来自专栏网络日志

    # 【vue3源码】九、ref源码解析

    vue3源码】九、ref源码解析 参考代码版本:vue 3.2.37 官方文档:https://vuejs.org/ ref接受一个内部值,返回一个响应式的、可更改的ref对象,此对象只有一个指向其内部值的 使用 const count = ref(0) console.log(count.value) // 0 count.value++ console.log(count.value) // 1 源码解析 如创建一个防抖ref,即只在最近一次set调用后的一段固定间隔后再调用: import { customRef } from 'vue' export function useDebouncedRef

    43010编辑于 2024-06-26
  • 来自专栏前端小码农

    Vue.use 源码分析

    Vue.use用法 vue提供了 Vue.use 的全局api来注册插件,比如 vuex、vue-router等 用法 Vue.use(plugin) 参数如果是一个对象,必须提供 install 方法 参数如果是一个函数,自身会被当做install方法,方法调用的时候,会将vue作为参数传入 Vue.use(plugin) 调用之后,插件会的 install方法会默认接受第一个参数,这个参数是vue Vue.use源码分析 我们可以从源码入手分析一下,基于vue 2.6.11 版本,源码地址为:src/core/global-api/use.js[1] export function initUse 作为第一个参数传入 Vue-Router中的 install 基于 vue-router3.1.6 版本,源码位置:src/install.js[2] import View from '. && _Vue === Vue) return install.installed = true _Vue = Vue const isDef = v => v !

    74820发布于 2020-07-16
  • 来自专栏Vue源码 & 前端进阶体系

    Vue原理】VNode - 源码

    写文章不容易,点个赞呗兄弟 专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本 【2.5.17】 如果你觉得排版难看 ,请点击 下面链接 或者 拉到 下面关注公众号也可以吧 【Vue原理】VNode - 源码版 今天就来探索 VNode 的源码,VNode 是 Vue2 渲染机制中很重要的一部分,是深入Vue 任何页面的变化,都只使用 VNode 进行操作对比,只需要在最后一步挂载更新DOM,不需要频繁操作DOM,从而提高页面性能 --- VNode怎么生成 在 Vue 源码中,vnode 是通过一个构造函数生成的 我们来完整地走一遍流程,涉及源码很多,但是我已经非常精简了,大概了解个流程 function Vue() { ...初始化组件选项等 mountComponent() } function _render = () {} // 根据vnode,生成DOM 挂载 Vue.prototype.

    3K20发布于 2019-08-02
领券