![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码
文章平均质量分 74
游走走
这个作者很懒,什么都没留下…
展开
-
硬核!手撕源码第一弹:UpdateNotifier
目录项目简介源码分析动手实现总结1、项目简介update-notifier是yeoman团队出品的,之所以选择这个项目,主要是大佬推荐,其次是,项目体积只有15.3kB,功能也不复杂,在github上目前有1.6k star,比较适合当作入门源码。update-notifier用于检查包的当前版本是否是最新版本,如果不是,则提示更新。这个项目的使用场景一般是脚手架应用,可以在npm主页上看到有哪些项目用到了update-notifier:我去考证了一下,实际上npm只在早期版本原创 2021-10-02 11:11:24 · 861 阅读 · 0 评论 -
源码学习之Mustache(双大括号)正则解析
目录1. 正则语法2. defaultTagRE解析3. exec()检索匹配var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g;这句就是Vue源码中,用于匹配双大括号的正则语句。1. 正则语法先来复习一下这句正则表达式里出现的一些语法:\{表示匹配左花括号\}表示匹配右花括号()标记一个子表达式的开始和结束位置?:表示匹配内容,但是不捕获内容.号匹配除换行符 \n 之外的任何单字符|表示或,即两者之间满足一个即可匹配\r匹配回.原创 2021-05-08 16:53:50 · 1123 阅读 · 0 评论 -
源码学习之noop
/** * Perform no operation. * Stubbing args to make Flow happy without leaving useless transpiled code * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/). */function noop(a, b, c) { }这是一段vue2里的源码。noop,是No Operatio原创 2021-03-30 15:08:19 · 1068 阅读 · 0 评论 -
源码学习之void 0
今天看源码的时候看到 void 0 这样的写法,平时在业务代码里基本没有这样的写法,于是学习了一下。在控制台运行了一下void 0,得到返回值是undefined。在MDN上搜了一下void,了解到:void是个运算符void用于获取原始数据类型undefinedvoid可以将function关键字识别为函数表达式(立即执行函数)void可以用于箭头函数以避免泄漏以vue的源码为例: var createEmptyVNode = function (text) { if (te原创 2021-03-30 09:39:18 · 354 阅读 · 0 评论 -
源码学习之noConflict冲突处理机制
最近接手了一个古早项目,用的backbone,于是正好学习一下早期MVC框架的源码。这篇主要写冲突处理机制,源码其实就一个函数,代码也很短。原理也很好理解,总结起来就是:每执行一次noConflict()函数,框架就往前回退一个版本。这个 回退版本的意思是,当你引用多个backbone.js时,比如按顺序引入了v1、v2、v3,按照正常情况,你现在拿到的是v3,当你执行一次noConflict()之后,你就会回退到v2,再执行一次noConflict(),你就回退到v1,再再执行一次noConflict原创 2021-03-18 16:10:33 · 268 阅读 · 0 评论 -
前端模块化
《源码学习之前端模块化》一、什么是模块化模块化并不是前端独有的思想。模块化是一种自顶向下的过程,通过把一个大的系统,逐步划分为一个个小的模块,这些模块内部封装了一些特定的功能,通过约定的接口对外暴露。各个模块之间互不干扰,易于插拔。模块化可以解耦代码,更好地进行复用,每个模块之间互不影响,不用担心变量污染、命名冲突等问题,同时也有利于并行开发,提升效率。js最初是没有模块化的。随着前端应用越来越复杂,比如,当一个html页面要请求多个js文件时,如何保证这些js文件之间的变量互不干扰?为了解决诸如变原创 2021-03-17 10:09:45 · 253 阅读 · 0 评论