- 博客(42)
- 问答 (1)
- 收藏
- 关注
原创 以用户为中心的前端性能
前端性能对用户体验很重要。如果页面加载太慢,用户就会失去耐心而离开。页面加载出来后,用户会下意识地去操作页面,如果页面没有及时给出反馈,用户就会感知到页面延迟。
2023-12-04 07:22:26
196
原创 订单业务和系统设计(一)
订单其实很常见,在电商购物、外卖点餐、手机话费充值等生活场景中,都能见到它的影子。那么,一笔订单的交易过程是什么样子的呢?文章尝试从订单业务架构和产品功能流程,描述对订单的理解。
2023-11-04 22:51:20
404
原创 构建类型安全的前端应用
对于Web应用来说,类型安全问题无处不在。例如,代码本身引入的类型错误;用户输入的数据类型不对;或者接口传参的类型错误等等。这些都会**影响系统的稳定性**。所以,我们要**构建类型安全的应用**。
2023-09-10 16:17:35
324
原创 网站都离不开的Form表单
Form表单`允许用户输入数据并向Web服务器发送数据`,是一个重要的交互控件。例如,常见的用户注册页面,用户输入个人信息后,点击按钮提交注册。
2023-09-02 16:11:20
221
原创 对账,清算,结算
一个常见的支付场景: 小明在淘宝上买了一个水杯,价格100元,使用支付宝支付成功后,淘宝商家提示购买成功,准备发货。 在这个过程中,资金交易是怎么进行的呢?
2023-07-09 09:09:34
604
原创 网络通信的安全性(HTTPS)
互联网环境错综复杂,网络通信的安全性更是不容小嘘。首先,使用非对称加密完成秘钥交换,再用对称加密传输,防止数据被窃听; 其次,用数字签名来验证数据完整性和身份验证,防止数据被篡改; 最后,通过数字证书核实网站身份,防止身份冒充。综上所述,这三个核心技术保障了HTTPS通信的安全性。
2023-04-06 23:42:49
899
原创 登录认证和鉴权
登录认证的应用场景很广泛,例如用户登录微信之后才能发起聊天,看朋友圈;登录支付宝之后才能进行支付等等。这些场景涉及用户权限,所以系统要知道当前用户是谁,以及用户有没有操作权限,那么具体怎么实现呢?
2023-03-23 21:39:44
1691
原创 浏览器缓存是如何提升网站访问速度的
为了提高网站的访问速度,降低服务器的负载,就有了浏览器缓存。浏览器缓存的核心是过期时间和协商缓存:服务器在返回资源时指定过期时间,浏览器收到响应后把数据存起来。下一次请求时如果资源未过期,则返回本地缓存数据;当缓存数据过期了,浏览器要跟服务器验证资源是否已更新,如果资源更新了再去请求新的数据,否则返回304。浏览器缓存有很多的实际应用场景,例如:静态资源缓存优化、HTML协商缓存优化、敏感数据禁止缓存、代理服务器缓存控制。
2023-02-12 10:57:41
800
原创 JavaScript怎么处理并发?
作为浏览器脚本,JavaScript要处理各种任务,例如处理用户输入,请求网络数据,展示后台数据等等。那么,单线程的JavaScript是如何处理并发的呢?
2023-01-13 13:00:00
2171
原创 如何选择一个合适的Web存储方案
Web客户端存储是一个现代Web应用必不可少的功能,常见的有Cookie、WebStorage和IndexedDB等,如何选择一个合适的Web存储方案呢?
2022-12-26 12:30:00
840
原创 浏览器跨域访问控制(CORS)
出于安全考虑,浏览器限制页面脚木发起跨域请求,所以XMLHttpRequest和fetch API是遵循**同源策略的。
2022-12-23 21:34:51
1396
原创 JavaScript的限流防抖
限流和防抖都是用来处理频繁事件的。频繁地触发事件,容易产生性能问题,这时就需要限流,即限制函数执行频率。另外,还可能导致重复执行和不必要的处理,这种需要防抖,即限制函数只执行一次。
2022-12-13 22:35:01
711
原创 前端多环境部署
前端程序一般会部署在开发、生产等不同环境中,各个环境的配置信息可能不同。可以通过静态编译和动态加载的方式来实现自动加载环境配置。最终实现程序和配置解耦,并且支持动态修改配置。
2022-12-06 23:17:36
1027
原创 如何让页面跳转更丝滑
路由的本质是将URL映射到指定页面,它是Web应用的基本功能。为了提升页面跳转的交互体验,出现了SPA,它实现了在不刷新页面的情况进行页面更新和页面跳转。主要有基于URL #hash和基于history api两种实现方案。
2022-12-04 23:05:48
869
原创 JavaScript是如何实现模块化的?
为了提高代码的可复用性,开发者设计了模块化规范,包括CommonJS,AMD和ES6 Module等。其中,前两者分别是面向服务器端和浏览器端的,而ES6 Module是JavaScript语言标准。
2022-11-15 22:11:00
1331
原创 现代化前端构建之hashing
浏览器请求资源时,使用本地缓存可以减少不必要的请求,从而提升页面加载速度,减少服务器压力。通常使用文件名+文件内容hash值来命名文件,这样通过文件名就可以判断资源是否更新,从而保证缓存资源能够及时更新。
2022-10-08 22:10:21
403
原创 npm和yarn是如何管理代码依赖的?
在我们的代码里面,经常会用到各种第三方软件包,当引用的包越来越多时,管理好代码中的依赖是很有必要的。主流的包管理工具有npm和yarn,它们又是如何实现依赖管理的呢?
2022-09-23 07:41:11
547
原创 JavaScript的this为什么这么设计
this作为JavaScript语言的核心语法,我们在开发中是经常用到的。例如在对象方法中,通过this访问对象属性;在构造函数中,用this初始化实例对象。那么JavaScript为什么会有this呢?
2022-09-04 16:06:10
366
原创 js闭包:函数和其词法环境的绑定
1.词法作用域:根据源代码中声明变量的位置,来确定变量在何处可用;并且内部函数可以访问其外部作用域的变量。2.闭包:JavaScript函数和它的词法环境是绑定在一起的。
2022-07-25 14:00:00
210
原创 JavaScript内存管理和内存泄漏
像C语言这样的底层语言,一般是`由应用程序手动分配内存和释放内存的`。而JavaScript是`由引擎自动完成内存管理`的。虽然JavaScript会自动释放内存,但如果编码不当,也会造成`内存泄漏`问题。文章分析了JavaScript的`内存管理机制`,同时,总结了几种典型的内存泄漏的场景,最后,介绍了排查内存泄漏的相关实践。希望能够帮助我们在编码中尽量避免内存泄漏的问题,即使有问题了也可以快速定位。
2022-05-21 17:06:28
965
原创 低代码平台搭建 - 组件几何变换
在低代码平台,用户可以选中画布中的组件,然后通过鼠标`直接`改变组件的大小、位置和旋转角度。即用可视化的方式实现组件的`几何变换`。文章通过手写一个组件几何变换功能来加深理解其背后的原理。
2022-05-07 21:43:09
494
原创 虚拟dom原理:用js对象来描述页面
作为计算机工程师,框架是实际开发中都会用到的。理解框架原理,对更好地使用它和定位问题是很有帮助的事情。本文实现了一个简单的vdom渲染过程,来帮助理解vdom原理。
2022-03-28 00:00:00
1059
原创 vue响应式原理:观察者模式
作为计算机工程师,框架是提高开发效率的重要工具。理解框架的核心原理,有助于更好地使用它和定位问题。同时,一个优秀的框架,其设计方案和实现原理也是值得我们学习和借鉴的。本文将通过实现一个简单的响应式系统,来理解vue.js的响应式原理。
2022-03-13 15:24:38
2452
原创 如何用同步的方式来实现异步编程?
文章介绍了异步回调、Promise、Generator和async/await四种异步编程方案,通过分析它们的演进过程,我们可以看到Promise解决了异步回调的`Callback Hell`问题;Generator的出现让`用同步的方式来实现异步编程`成为了可能,async/await则是结合了Promise和Generator优势的`语法糖`。在开发中,我们应该根据实际情况,选择最合适的方案。
2022-02-14 23:22:29
1003
原创 在浏览器地址栏输入URL,按下enter键后发生了什么?
文章梳理了浏览器【页面导航】 和 【页面渲染】的过程,理解该过程的实现原理,有助于性能优化和更快地定位问题。
2021-11-14 21:58:37
3571
原创 如何构建DOM树-语法分析
文章通过简单的概念和代码示例,介绍了DOM树的构建过程。了解DOM树的结构,可以让我们更好地使用DOM API来操作HTML内容。
2021-10-18 22:58:14
351
原创 如何判断JavaScript变量类型
优先使用Object.prototype.toString.call(),可用于准确判断内置对象子类型和基本类型变量。typeof可用于区分对象类型和基本类型。instanceof可用于判断自定义构造函数的实例对象。
2021-09-15 18:55:55
235
原创 理论操作系统篇 -- 【进程上下文切换】
1.进程上下文切换过程:@1.由中断、异常、系统调用等触发中断,将cpu切换为内核模式,将eip,esp,eflages压入内核堆栈;@2.保存硬件未来得及保存的现场信息;@3.调用中断服务程序;@4.检查need_resched标志位,若有效则进行以下步骤@5;@5.调用schedule()函数完成进程调度,schedule()会执行以下步骤@6,@7;@6.调用pick...
2018-12-31 00:18:01
3826
空空如也
计算机网络 -- 如何进行压测
2021-04-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人