自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

是努力不是卷_fjk

是努力不是卷_fjk

  • 博客(33)
  • 收藏
  • 关注

原创 (源码篇02)webpack5中的事件调度系统和NormalModuleFactary核心逻辑

丢进定时器里(注意是父级的,异步函数会在同步函数执行完毕以后调用,另外异步函数也是有优先级之分的哈,不一定是最先丢进去的,最先执行)。很显然是可以走进这个条件判断的,继续debug。实则不然,他完全可以写的很优雅,但是为了能尽可能的把hook给暴露出去,增强webpack的定制化能力,不得不这么做。的hook了,那就继续断(慢慢的就会明白 webpack5 插件强大的背后,是难读的设计和调试)。的 hook,此hook也没有插件进行监听,直接执行自身的callback 函数,进入 此 hook的内部。

2023-03-25 22:45:49 574

原创 (源码篇)浅析webpack5中Compiler中重要的hook调用过程

Compiler中的的 hook,就是在疯狂的给通过各种插件 挂各种的 监听事件,弹药准备完毕,等待一触即发。内心想法:我可真是太难了。。。总的来说, Compiler 触发的 hook 本质上是给我们辛勤的打工人对象 的 不同的数据处理阶段 绑定不同的插件。Compiler里的的主要作用就是通过监听了的事件。Compiler的compilehook 传递compiler 和 params参数 给方法,创建的实例对象Compiler中的。

2023-03-12 20:12:31 311

原创 【干货】耗时7个小时,用近50张图来学习enhance-resolve中的数据流动和插件调度机制

0. 食用本文的文档说明:本篇文章 耗时 7个小时左右才完工,篇幅涉及到大量的源码及其分析的过程图解和数据,阅读前,请保证自己有充分的时间,尽情的去享受吸收知识进入脑子的过程。因为篇幅有限,希望你掌握以下前置知识:已经学习过 enhanced-resolve 工作流程和插拔式插件机制,点这里复习:webpack 核心库 enhanced-resolve 工作流程和插拔式插件机制了解 tabaple 是一个订阅发布的设计模式(知道啥是订阅发布即可)大致了解 node 中的模块查找机制

2023-02-26 17:55:22 128

原创 (Babel 原理?)手把手教你不到200行代码实现属于自己的超mini版编程语言

题目是有点标题党的嫌疑,但是看完这篇文章如果没有收获,评论区写 不低于 500 字 原因。(邪笑)带着疑问去学习:各种各样的编程语言层出不穷,进而会产生许多带有不同后缀的 文件(.js,.jsx,.ts,.py,.go,.php,.java),这些文件的内容对程序员来说是逻辑的表达,但是对计算机来说,也就是带着不同后缀的二进制文件,那他们是如何变成机器读得懂的语言呢?如果我想要 实现一个属于自己后缀的 语言应该怎么实现呢?编程语言是将字符串转换为各种机器代码输出的规则集。简而言之,编程语言只是

2023-02-19 23:16:40 105

原创 太强了,仅3000字解析webpack核心库enhanced-resolve流程和插拔式插件机制

0. 食用本文的文档说明:因为篇幅有限,希望你掌握以下前置条件:希望你最好了解 订阅发布模型希望你知道tapable 的 以下 3 个钩子函数AsyncSeriesBailHook, AsyncSeriesHook, SyncHook通过本文你将学到如下内容(或者带着如下疑问去学习)如何调试一个 nodejs 开源库了解 webpack 解析库 enhance-resolve 的大致工作流程初步了解 webpack/enhance-resolve 中 tapable 的使用,以及插件机制实现的原

2023-02-19 23:16:18 196

原创 10 分钟 学会 手写一个 简单的 Babel 插件 操作AST 语法树

学习的背景 (为啥 要写 一个 Babel 插件呢?)es6 是如何转换为 es5 的?什么是 AST 语法树呢,怎样对一个AST树 的节点 进行增删改查呢?为啥 之前 jsx需要 手动导入 react ,现在不需要了?国际化内容 需要写 t 函数的 地方太多 ,懒得写了。(业务方面)任何你可以想到的骚操作。1. babel 常用包的介绍 (写插件必备知识)代码 转 语法树的 官网:https://astexplorer.net/1. Babylon 是Babel 的解析器,代码转为AST 语法树

2023-02-19 22:56:37 576

原创 ToB前端的干货:一套前端代码满足多个客户的定制化需求

如何一套前端代码满足多个客户的定制化需求当小伙伴们看到标题的时候,是不是脑袋中已经冒出了 N 个解决方案了呢?在实际的业务场景中,随着公司的 ToB 业务做的风生水起,标准化的方案开始难以满足日益增长的客户需求了,慢慢的 部分客户 因为业务场景不同 都开始搞起了定制化需求。业务场景——不服务于业务的代码都是耍流氓(场景较随意,相信大家都懂ToB的难处)假设有 三 位客户,为了便于区分,就叫甲,乙,丙吧,突然有一天客户经理收到 甲客户 的诉求说 产品的主线上的这块业务逻辑 和 他们公司的实际情况 有些

2023-02-05 14:46:03 921

原创 使用node js 和天猫精灵 开发百科知识

准备工作1 阿里云-云开发平台 https://workbench.aliyun.com/ 阿里云账号一个2 天猫精灵开放平台首页 https://aligenie.com/ 淘宝账号一个使用nodejs 和天猫精灵交互接上面的文章 创建一个可交互的带上下文的 百科小能手后端服务的选择选择 nodejs 语言等网关部署完成以后 即可开始开发进入ide 以后 可以看到代码接口很简洁查找代码 tplReply 并修改为下面的一行代码 【官方的模板 这两个函数没有注释】上线发布后

2021-11-06 00:09:36 246

原创 使用node js 和天猫精灵 开发交互

这里写自定义目录标题使用node js 和天猫精灵 开发交互准备工作最好的教程使用node js 和天猫精灵 开发交互你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。准备工作1 阿里云-云开发平台 https://workbench.aliyun.com/ 阿里云账号一个2 天猫精灵开放平台首页 https://aligenie.com/ 淘宝账号一个最好的教程http

2021-11-05 20:18:12 319

原创 Network location provider at ‘https://www.googleapis.com/‘ : No response received.

上篇文章中得出谷歌浏览器使用H5 地理位置API会调用接口失败,但是Edge会成功。想不出原因,看了很多文章发现都是要浏览器调用远程服务的,于是有了这篇文章,通过Fiddler 抓包 H5 API调用的服务 【Fiddler 是学python 爬虫时候学的🤭】谷歌【安装插件需要科学一点】,Edge的直接应用商店安装就行。可以发现,也是通过WIFI 进行定位的,然后获取的经纬度。协议的网站,打开控制台。输入如下代码,开始抓包。配置插件,新建情景模式,名字随意,配置成如下。,出现下图界面就是成功了。

2021-01-14 23:46:32 9781 3

原创 01.JAVA servlet 简单介绍

JAVA servlet 简单介绍Servlet: server applet概念:运行在服务端的小程序理解:快速入门执行原理servlet 的生命周期方法1.init 被创建方法PS: 单例方法 存在线程安全问题2.提供服务:执行service方法,执行多次3. 被销毁:执行destroy方法,只执行一次 【交代遗言】servlet 3.0 【支持注解配置】1.配置servlet 和IDEA tomcatServlet: server applet概念:运行在服务端的小程序理解:实际上浏览器访

2020-11-01 20:43:03 253 2

原创 00.JAVA WIN10 环境搭建 和MAVEN 的环境搭建

JAVA WIN10 环境搭建 和MAVEN 的环境搭建1.JAVA环境的搭建 【JDK8】1.1START2.MAVEN 环境的搭建3.MAVEN仓库的配置4.MAVEN 集成IDEA1.JAVA环境的搭建 【JDK8】win10 JDK81.1START下载地址自行百度,win10 的安装直接双击安装就行jdk8安装目录: D:\JAVA\java8,JRE: D:\JAVA\jre环境变量的配置 :直接win10 搜索栏 左下角搜索环境变量 ,配置 JAVA_HOME :D:\JAVA

2020-11-01 16:02:43 164

原创 树莓派常见问题

yarn 错误There appears to be trouble with your network connection. Retrying...原因:yarn超时解决途径:1、安装好后更换淘宝镜像yarn config set registry https://registry.npm.taobao.orgnodejs安装依赖包使用阿里镜像npm install --registry=https://registry.npm.taobao.org树莓派安装配..

2020-07-21 23:28:10 335

原创 腾讯云web云开发笔记

腾讯云web云开发—小程序云开发类似白搞一个腾讯云免费服务器创建环境vscode安装插件event云函数的使用数据库的使用【SQL的封装】自定义域名白搞一个腾讯云免费服务器创建环境https://console.cloud.tencent.com/tcb/env/indexvscode安装插件插件官网打开扩展——搜索 Tencent CloudBase Toolkit——左边出现腾讯云页签——点击登录授权——创建helloworld 简单云函数event参数请求头什么的全在event 对象

2020-06-29 17:11:19 605

转载 pycharm 快捷键

1、编辑(Editing)Ctrl + Space 基本的代码完成(类、方法、属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctrl + P 参数信息(在方法中调用参数)Ctrl + Q 快速查看文档Shift + F1 外部文档Ctrl + 鼠标 简介Ctrl + F1 显示错误描述或警告信息Alt + Inser...

2019-03-11 12:29:51 142

原创 3.0 面向对象编程oop

你以为的面向对象:就是你一遍看着你对象,一遍敲代码。真的面向对象:定义一个模型或者说一类人。假设是机器人女友。首先:第一步:你可以先定义一个模型。基础的机器人,类人型的都有四肢五脏六腑。然后填入功能:第一代女友:只会洗衣服做饭。是不是太无聊了。升级下继承上一代的功能:第二代:除了洗衣做饭还能扯淡打游戏。然后呢你朋友感觉你机器人女友不错哦。你不可能把你辛辛苦苦的升级版女朋友给...

2019-01-10 18:11:47 189

原创 2.9 OS模块操作文件 ——比较下前面的linux的基本操作

既然要用OS模块首先引入OSimport os1,文件重命名os.rename("需要修改的文件名和后缀","新文件名")2,删除文件os.remove("被删除的文件名")3,创建文件夹os.mkdir("文件夹名")4,获取当前的目录os.getcwd()5,改变当前目录os.chdir("../")6,列出目录os.listdir("./.

2019-01-10 17:24:50 143

原创 2.8 python文件的操作

一个著名的问题:如何把一头大象装到冰箱里?第一步打开冰箱,第二步放入大象,第三步关闭冰箱。这个过程其实也是文件操作的总过程。第一步:打开一个文件。第二步:存取数据。第三步:关闭数据。细说打开文件:这个被打开的文件对象呢,可以是已经存在的,也可以是不存在的,不存在的话你打开就是新建文件了。格式:open("带后缀的文件名","访问的模式")f =open("1.t...

2019-01-10 17:17:26 204

原创 linux 远程环境下使用pycharm 用tornado框架 玩出现的问题

1,本来不报错的代码,报错了。不是代码的问题,而是端口被占用。说明以前测试的代码的python没有自动关闭。解决办法:查找所有的python进程。命令行:ps -aux | grep python  然后kill 所有列出来的进程pid 。最好使用-9 模式,我第一次没有干掉,还是报错。使用命令: kill -9 [pid数字]  就行了。2,在python2.7中会转换成Un...

2018-12-31 18:15:10 312

原创 2.7 特殊的函数——递归调用,和匿名函数

上一章的答案:一张图片搞定。1,递归函数:自身调用自身的函数。【高中数学喜欢玩这个】例如求n的阶乘。已知:1的阶乘是1,其他数的阶乘都是在1的基础开始的。2,匿名函数:懒得取名字的函数。格式:lambda 参数一个或者多个:表达式 例子计算a+b的结果 : sum =lambda a,b : a+b 调用方法:sum(10,20) 。#计算10+20Lambda...

2018-12-29 22:48:16 251

原创 2.6 功能的封装——函数,末尾有彩蛋

函数:数学中的x,y函数???python中就是功能的封装。方便使用这个工具,就像python的包一样,你会用这个包,你不用了解他的运行结构,除非你要二开。其实包就是一系列函数的整合。一句话:函数就是你封装的功能,在每次用这个函数的时候叫他名字就行了。#定义函数def 函数名(形参): 功能代码块#使用函数函数名(传入实参)#介绍两个概念:在定义函数中的参数叫做形式参...

2018-12-28 22:27:26 209

原创 2.5公共方法和地址引用

"+":用于拼接操作,合并操作!字符串中是拼接,列表,元祖中是合并!"*":复制元素。字符串列表元祖都一样!例如:"hi"*4就是把hi复制4次,"hihihihi"in 和 not in:判断子元素有没有在父元素中!在的话就是True否则false!cmp:比较值,len:判断长度,max:求最大值,min:求最小值,del:删除值! 地址引用:[重要]python中的值...

2018-12-26 12:54:41 120

原创 2.4字符串,列表,元祖,字典遍历——非常重要的操作

遍历操作:基本用的都是 for ... in ....操作注意,重要的都在末尾!1字符串的遍历:>>> a_str = "hello itcast">>> for char in a_str:... print(char,end=' ')...h e l l o i t c a s t2:列表遍历>>&gt...

2018-12-26 11:17:11 314

原创 笔记2.3:字典或者说json

1.字典:是键值对,一个键一个值,用大括号包过起来的数据!2.有键就能获取到值!用键来访问值!若访问不存在的键,则会报错!如果想要获取到不确定的值用get获得方法!get方法很重要!age = info.get('age')>>> age #'age'键不存在,所以age为None>>> type(age)<type 'NoneType...

2018-12-26 10:50:44 109

原创 笔记2.2:列表和元组

列表1,列表:用中括号包括起来的,内部可以放任何数据,且可以用索引来取值的数据。注意:索引从0开始。列表也能切片操作:而且还代表方向。2,列表循环取出所有值:#coding=utf-8#用for循环取值namesList = ['xiaoWang','xiaoZhang','xiaoHua']for name in namesList: print(name)...

2018-12-23 18:32:42 212

原创 笔记2.1,字符串

1,字符串定义:用单引号或者双引号包起来的就是字符串。2,下标索引:索引用从左向右是从0开始,从右向左是从 -1 开始。3,切片操作:[ 起始:结束:步长] 。不会切到结束,会取值到结束前一位。例:name = 'abcde'print(name[0-4]) #输出是:abcd 对应的下标是 0,1,2,3 字符串中的方法:重要mystr是被查找的文本。str.fi...

2018-12-23 18:01:17 121

原创 笔记1:python基础

python:缩进对齐决定着代码的逻辑执行顺序,没有规定必须是4个空格缩进。大多数人是这样的。1,需要中文注释开头加:#coding =utf-8#官方推荐的是下面的:# -*- coding:utf-8 -*-#这是单行注释 """三个双引号是多行注释"""2,变量 python不需要定义变量类型,由数据决定,但是在使用过程中要注意变量的类型。可以用...

2018-12-21 18:02:03 143

原创 笔记5,vim ——编辑器之神

vi命令命令模式:    yy:复制 光标所在的这一行    4yy:复制 光标所在行开始向下的4行    p: 粘贴    dd:剪切 光标所在的这一行    2dd:剪切 光标所在行 向下 2行    D:从当前的光标开始剪切,一直到行末    d0:从当前的光标开始剪切,一直到行首    x:删除当前的光标,每次只会删除一个    X:删除当前光标前面的那个,每次...

2018-12-21 16:39:05 142

原创 笔记4,linux系统管理命令

1,查看当前日历:cal 2,显示或者设置时间:date 设置时间格式(需要管理员权限):date [MMDDhhmm[[CC]YY][.ss]] +formatCC为年前两位yy为年的后两位,前两位的mm为月,后两位的mm为分钟,dd为天,hh为小时,ss为秒。如: date 010203042016.55。显示时间格式(date '+%y,%m,%d,%H,%M,%S')。...

2018-12-21 16:36:05 175

原创 笔记3.linux中的用户和权限管理

 用户的管理1,查看当前用户:whoami。2,通过cat /etc/passwd 查看系统用户信息。3,查看所有登录系统的用户信息 :who         常用选项:选项 含义 -m或am I 只显示运行who命令的用户名、登录终端和登录时间 -q或--count 只显示用户的登录账号和登录用户的数量 -u或--heading 显示列...

2018-12-21 11:45:06 157

原创 笔记2,重点 linux 命令

查看文件lsls :列出文件。可选项 : -a  显示所有文件,包括隐藏文件 。-l :列表方式显示信息。-h :通常配合 -l 命令使用。ls这几个可选项可以搭配使用。最常用的就是 ll  命令 。另外还可以和正则表达式 一起用 : 例:查找html结尾的文件:ls *html  【具体的正则命令稍后介绍或者自行百度】查看文件的内容:cat [与导入功能合用 作为合并文件]cat...

2018-12-19 19:06:53 4850 4

原创 笔记1,linux基础介绍。

1.目录【部分重要的】“/” :根目录。例:/home  先进根目录在进home 。“/bin,/usr/bin”: 可执行二进制文件的目录。 “/home”: 用户家目录,也可以是 “~” 。2,路径绝对路径:基于根目录来说的,从根目录出发来找文件,文件夹等。例:    进入目录/usr/bin:cd /usr/bin相对定位:基于当前文件来说的,首先要知道:当前...

2018-12-18 22:41:24 117

转载 jquery判断复选框选中状态以及区分attr和prop

这篇文章主要介绍了jquery判断复选框选中状态以及区分attr和prop,感兴趣的小伙伴们可以参考一下最近项目中需要用jquery判断input里checkbox是否被选中,发现用attr()获取不到复选框改变后的状态,最后查资料发现jQuery 1.6以后新增加了prop()方法,借用官方的一段描述就是:The difference between attributes and pro...

2018-12-14 11:00:29 427

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除