- 博客(24)
- 收藏
- 关注
原创 Monorepo
Monorepo 最早的出处是软件开发策略的一个分支,”mono” 表示单一 “repo” 是”repository”的缩写,意为多个项目共用一个代码库来管理依赖关系,同一套配置文件,统一构建部署流程等等。Monorepo是集中式管理的前端代码管理方式,将所有的项目在集中一个代码仓库进行管理,严格的统一个收归,有利于统一的升级和管理方式,作为新型的管理方式,monorepo有效降低了运行以及协作的成本,但一个代码仓库的管理模式带来了项目体积上的上升,获取时间延长,同时安全性也有所下降。
2023-03-20 09:49:33 913
原创 DNS域名系统
域名使用字符串来代替 IP 地址,方便用户记忆,本质上一个名字空间系统;DNS 就像是我们现实世界里的电话本、查号台,统管着互联网世界里的所有网站,是一个“超级大管家”;DNS 是一个树状的分布式查询系统,但为了提高查询效率,外围有多级的缓存;使用 DNS 可以实现基于域名的负载均衡,既可以在内网,也可以在外网。
2023-02-28 15:36:15 190
原创 V8异步编程
我们先来看什么是回调地狱。假设你们老板给了你一个小需求,要求你从网络获取某个用户的用户名,获取用户名称的步骤是先通过一个 id_url 来获取用户 ID,然后再使用获取到的用户 ID 作为另外一个 name_url 的参数,以获取用户名。那么你会怎么实现这个小小的需求呢?其中最容易想到的方案是使用 XMLHttpRequest,并按照前后顺序异步请求这两个 URL。
2023-02-28 15:20:00 258
原创 消息队列:V8是怎么实现回调函数的?
那究竟什么是回调函数呢?其实回调函数也是个函数,就像白马也是🐴一样,它具有函数的所有特征,它可以有参数和返回值。如果单独给出一个函数,你是看不出来它是不是回调函数的。回调函数区别于普通函数,在于它的调用方式。只有当某个函数被作为参数,传递给另外一个函数,或者传递给宿主环境,然后该函数在函数内部或者再宿主环境中被调用,我们才称为回调函数具体的讲,回调函数有两种不同的形式,同步回调和异步回调。
2023-02-28 14:05:43 266
原创 关于V8延迟解析和闭包实现
今天我们主要介绍了 V8 的惰性解析,所谓惰性解析是指解析器在解析的过程中,如果遇到函数声明,那么会跳过函数内部的代码,并不会为其生成 AST 和字节码,而仅仅生成顶层代码的 AST 和字节码。利用惰性解析可以加速 JavaScript 代码的启动速度,如果要将所有的代码一次性解析编译完成,那么会大大增加用户的等待时间。
2023-02-28 14:02:14 299
转载 HTTP的实体数据
前面我们以及了解到一个http报文是由header+body组成的,但那时我们主要研究的是header,没有涉及到body,数据类型编码在TCP/IP协议栈里,传输数据基本上都是header+body的格式,但TCP,UDP因为是传输层协议,它们不会关心body数据是什么,只要把数据发送到对方就算完事了而http协议则不同,它是应用层协议,数据达到之后工作只能说是完成了一半,还必须要告诉上层应用这是什么数据才行,否则上层应用就会不知所措你可以设想一下,假如http没有告知数据类型的功能,服务器把一大
2021-12-29 14:57:06 280
原创 什么是cookie
我们知道http是无状态的,这即是优点也是缺点,优点是服务器没有状态差异,可以很容易的组成集群,而缺点是无法支持需要记录状态的事务操作好在http是可扩展的,后来发明的cookie技术,给http增加了记忆能力什么是cookie不知道你有没有看过克里斯托弗·诺兰导演的一部经典电影《记忆碎片》(Memento),里面的主角患有短期失忆症,记不住最近发生的事情。比如,电影里有个场景,某人刚跟主角说完话,大闹了一通,过了几分钟再回来,主角却是一脸茫然,完全不记得这个人是谁,刚才又做了什么,只能任人摆布。
2021-12-28 10:15:22 156
转载 统一资源标识符完整讲述
HTTP中最常用的方式就是GET方法,它用来从服务器上某个资源获取数据,另一个就是POST方法向某个资源提交数据那么应该用什么来标记服务器上的资源呢?,怎么区分这个资源和那个资源呢?说到这里你信里一定有答案了用的就是URI,也就是统一资源标识符,因为它经常出现在浏览器的地址栏里,所以俗称为网络地址,简称网址严格来说,URI不完全等同于网址,它包含有URL和URN两个部分,在HTTP世界里用的网址实际上是URL----统一资源定位符,但因为URL实在太普及了,所以常常把两者简单的视为相等不仅我们生活中
2021-12-16 16:23:42 2300 2
原创 编程语言的一些性质
图灵完备性命令式——图灵机gotoif 和 while声明式——lambda递归图灵完备性应该是大家经常会听说的一个概念,所有的编程语言它必备的一个条件就是图灵完备性,图灵完备性最早的提出是由我们计算机界的老祖宗图灵,他在这个研究数学上的可计算性的时候提出的这样的一个概念,图灵完备性有几个不同的表达方式,比如说跟图灵机完全等效的,这就是图灵完备的,当然这个定义特别的不直观,它虽然很严格,但是它并不直观,如果给大家一个直观的表述就是:“所有的可计算的问题都可用来描述的,这样的语言
2021-12-16 09:44:29 1444
原创 HTML从字符流到抽象语法树
词法分析,语法分析,状态机,米利状态机,JS实现状态机// lexer.js 词法分析const EOF = void 0;// html词法分析器, 接受一个语法解析器function HTMLLexicalParser(syntaxer) { // 状态 let state = data; // 存储 let token = null; let attribute = null; // 接收输入 this.receiveInput = function (char
2021-12-16 09:40:53 1113
原创 JavaScript中的Completion Record
JavaScript 用语句来完成流程控制if (x === 1) return 10;这是一条简单的 if 语句,它的完成状态可能是不一样的,return 有可能会执行也有可能不会执行取决于 x 变量具体的值,所以 JavaScript 引擎在解析if语句的时候就需要知道它完成之后的结果到底是怎样的。于是在 JavaScript 语言中就需要一种数据结构来存储语句的完成结果,这就是我们所谓的 Completion Record 类型了,它不在其中基本类型中,我们在 JavaScript 中无论如何
2021-12-16 09:39:12 293
原创 表单和FormData对象
表单,FormData 对象表单概述表单(<form>)用来收集用户提交的数据,发送到服务器。比如,用户提交用户名和密码,让服务器验证,就要通过表单。表单提供多种控件,让开发者使用,具体的控件种类和用法请参考 HTML 语言的教程。本章主要介绍 JavaScript 与表单的交互。<form action="/handling-page" method="post"> <div> <label for="name">用户名:</labe
2021-12-16 09:36:21 879
原创 HTTP协议基本概念
HTTP 是什么先看一下 HTTP 的名字:“超文本传输协议”,它可以拆成三个部分,分别是:“超文本”“传输”和“协议”。我们从后往前来逐个解析,理解了这三个词,我们也就明白了什么是 HTTP。协议首先http是一个协议,不过协议又不是什么呢现实生活中你在刚毕业时会签一个“三方协议”,找房子时会签一个“租房协议”,公司入职时还可能会签一个“保密协议”,工作中使用的各种软件也都带着各自的“许可协议”。第一点,协议必须要有两个或多个参与者如果只有你一个人,那你自然可以想干什么就干什么,想怎么玩就怎
2021-12-14 15:18:11 422
原创 关于webpack项目的基本打包体积优化
关于webpack项目的基本打包体积优化最近在搞一个项目的二次开发,但是发现页面加载速度异常的慢,所以记录一个webpack项目的基本打包优化
2021-12-14 11:36:42 3915 3
原创 输入输出(IO)与流的概念
IO流是一种抽象概念,它代表了数据的无结构化传递,按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作成为提取操作,而向流中添加数据的操作称为插入操作,用来进行输入输出操作的流就成为IO流。换句话说,IO流就是以流的方式进行输入输出概念输入输出(IO)与流的概念输入输出(IO)是指计算机同任何外部设备之间的数据传递,常见的输入输出设备有文件,键盘,打印机,屏幕,网络等,数据可以按记录(或称数据块)的方式进行传递,也可以流的方式传递所谓记录,是指有着内部结构的数据块,记录
2021-12-14 10:40:28 1220
原创 浅析前端页面渲染机制
浏览器基础结构浏览器基础结构主要包括如下 7 部分:用户界面(User Interface):用户所看到及与之交互的功能组件,如地址栏,返回,前进按钮等;浏览器引擎(Browser engine):负责控制和管理下一级的渲染引擎;渲染引擎(Rendering engine):负责解析用户请求的内容(如 HTML 或 XML,渲染引擎会解析 HTML 或 XML,以及相关 CSS,然后返回解析后的内容);网络(Networking):负责处理网络相关的事务,如 HTTP 请求等;UI 后端(UI
2021-12-14 10:24:39 550
原创 声明式编程和命令式编程有什么区别?
计算机系统是分层的,也就是下层做一些支持的工作暴露接口给上层用。注意:语言的本质是一种接口。计算机的最下层是 CPU 指令,其本质就是用“变量定义+顺序执行+分支判断+循环”所表达的逻辑过程。计算机应用的最上层是实现人类社会的某种功能。所以所有计算机编码的过程,就是用逻辑表达现实的过程。层与层之间定义的借接口,越接近现实的表达就叫越“声明式”(declarative),越接近计算机的执行过程就叫越“命令式”(imperative)。注意这不是绝对的概念,而是相对的概念。当接口越是在表达“要什么”,
2021-12-14 10:21:37 1200
原创 状态机概述
背景介绍有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机, 是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机科学中, 有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。有限状态机(Finite-state machine)是一个非常有用的模型,可以模拟世界上大部分事物。它是一个数学模型。是
2021-11-18 09:29:15 1023
原创 JavaScript面向对象还是基于对象?
与其他语言相比,JavaScript 中的对象总是显得不那么合群。一些新人再学习 JavaScript 面向对象的时候,往往也会有疑惑为什么 JavaScript(直到 ES6)有对象的概念,但是却没有像其他语言那样,有类的概念呢?为什么 JavaScript 对象可以自由添加属性,而其他语言却不能呢?甚至,再一些争论中,有人强调:JavaScript 并非 “面向对象的语言”,而是基于对象的语言,这个说法一度流传甚广,而事实上,我至今遇到持有这一说法的人中,无一能够回答,如何定义面向对象和基于对
2021-11-18 09:27:28 246
原创 一般命令式编程语言
一般的命令式语言的一种设计方式一般来说我们的命令式语言它可能有一些细微的结构上的不一致,但是总体上来讲,它的结构都分成 5 个层级Atom(原子级):原子级是一个语言的最小组成单位,它通常包含一些关键字包含着一些直接量包含着一些变量名这样的一些基本单位,典型的就是我们的变量名,字符串直接量,数字直接量Expression(表达式):原子级的结构通过运算符相连接,然后加上一些辅助的符号,那么它就会构成一个表达式的结构,表达式它通常是一个可以级联的结构,比如说我们的 JavaScript 有四则运算,按
2021-11-18 09:26:09 1213
原创 cssom
前面的课程中,我们已经学些了 DOM 相关的 API,狭义的 DOM API 仅仅包含 DOM 树形结构的相关内容,今天我们来学习一类新的 API:CSSOM我想,你在最初接触浏览器 API 的时候,应该都有跟我类似的想法,“好想要 element.width,element.height” 这样的 API 啊这样的 API 可以直接获取元素的显示相关信息,它们是非常符合人的第一印象的设计,但是偏偏 DOM API 中没有这样的内容。随着深入我才知道,这样的设计是有背后逻辑的,正如 HMLT 和 CS
2021-11-18 09:23:01 604
原创 CSS中的BFC
BFC 定义BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有 Block-level box 参与, 它规定了内部的 Block-level Box 如何布局,并且与这个区域外部毫不相干。在解释什么是 BFC 之前,我们需要先知道 Box、Formatting Context 的概念。Box:css 布局的基本单位Box 是 CSS 布局的对象和基本单位,直观点来说,就是一个页面是由很多个 Box 组成的。元素的类型和 displ
2021-11-16 21:20:03 65
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人