置顶文章

时间:2024.6.13 # 背景 大概在 2022 年底时,数分(下文称 DA)侧基于旧的埋点现状,更新提出了一个新的埋点规范(V2)。 # 旧规范 DA 在旧规范中,针对每个需要埋点的 UI 组件,使用一个唯一的事件名称来进行标识,然后在同层塞入需要关注的参数,比较简陋,举个例子: sendLog({ eventName: 'livesdk_xxx_xxx', attr: { ... }})# 新规范 新规范的事件名统⼀使⽤的命名规范:抖⾳游戏埋点前缀_组件类型_组件⾏为 DA...

# 版权赛事详情页的体验优化 优化时间:2024.3.20 # 背景 目前在职主要负责的内容是抖音等宿主的端内 H5/Lynx(字节内部的高效跨平台框架)页面的编写 其中我负责的一个页面:赛事详情页,是抖音游戏(游戏赛事直播间、赛事搜索)赛事的重要信息呈现页面。 不同的版权赛事厂商会提供接口返回我们指定的数据结构,实现赛事信息的呈现。 以 PEL 春季赛为例,在 2.29-3.3 的四天比赛中,日均看播 UV 超 1xx 万,而页面的峰值 PV 也达 1xx 万 但是页面的首屏性能颇为不佳(尤其是在 Android 机型下) #...

方便迁移,使用 jscodeshift 编写 codemod 时间线:工作半年(2022.10-2023.1) # 背景 2022 年底时,抖音直播前端(H5 层面)的 C 端组件库设计规范是遵循旧的直播设计规范开发,但后来设计统一对齐成了抖音设计规范(DUX,Delight Design),因此原有的直播组件库已不太适用于业务场景。 而 Delight Design 当时存在安卓、iOS、lynx 组件库,由于人力问题一直未启动 H5 组件库建设,双方一拍即合,共建实现 C 端 H5 组件库。 于是我们就开始共建 DUX H5 组件库 耗时不到三个月,大家齐心协力产出 21...

精选分类

文章列表

# 用 node 帮女朋友生成报告单 # 背景 女朋友是医学生, 平时需要在医院里实习。最近老师给了她一个任务:从一个调查问卷里导出结果表(一个 excel 文件),并且把每个人的结果填写到特定的一个模版报告单。 但是这个结果有几百个人(意味着要复制黏贴上千次),重复无意义且繁琐的工作,严重影响了与男朋友聊天的时间。 身为男朋友的我怎能袖手旁观,重复工作就应该交给机器! 花费了大概一个下午的时间,完成了一个 node 小脚本,我女朋友只需要编辑好模版插值的位置,导入结果 excel,每个人的结果文件就会在数秒内自动生成,已完成交付。 # 需求点 表格的识别 word...

# 开头 开头,我们问自己几个问题: Vue 实例初始化阶段都经历了些什么? beforeCreate 钩子调用之前都干了些什么? Vue 实例的事件系统是如何初始化的? inject 的原理? 访问 Vue 实例的 props 和 data,我们实际上访问的是什么? 带着问题去看文章。 每个 Vue 实例在创建的时候都要经过一系列初始化,从创建到销毁,Vue 的生命周期可以分为四个阶段:初始化、模板编译、挂载、卸载阶段。 接下来,我们从 Vue 的构造函数深入了解 Vue 的生命周期,看看 Vue 是怎么建立并初始化的。不知道的可以再看看前面的博客,我们前面说到,Vue...

感觉一章节让我对 Vue 内部的原理更加深入的了解了,如果说前面的响应式系统、虚拟 DOM 的实现是 Vue 的精髓之一的话,这部分实例代码的实现让我对 Vue 组件实例的理解更为深刻,深入 Vue 的代码骨架之中。 # 概述 Vue 实例中有许多方法,本博客记录这些实例方法的实现原理 在 Vue 源码中的 src/core/instance/index.js 中,有这么一段代码: import { initMixin } from './init'import { stateMixin } from...

# 概述 Vue 自从 2.0 版本开始引入了虚拟 DOM 技术,而虚拟 DOM 技术也是 React 的核心技术之一,引入了虚拟 DOM 之后,Vue 的初始渲染速度提升了 2~4 倍。 虚拟 DOM 之所以称为虚拟 DOM,是因为他不是真实的 DOM,而是用 JavaScript 数据结构表示成的虚拟节点树,然后使用虚拟节点树进行渲染。 就是,先生成一个虚拟节点树,然后用它和上一次生成的虚拟节点树进行对比,只渲染不同的部分。 简单来说,就是生成 -> 对比 -> 渲染。 # 为什么引入虚拟 DOM? 在前面一篇讲 Vue 的变化侦测的博客里,也提到过。React...

参考资料 ——《深入浅出 Vue.js》刘博文著 前四章,讲述变化侦测的笔记。 # 概述 Vue 的变化侦测属于 “推”,当状态变化时,Vue 可以知道是哪些状态变化了。当状态变化了,它会向所有依赖这个状态的视图(或者说组件 / DOM 节点)发出更新通知 在 Vue1.x 之中,Vue 对每个状态都进行依赖追踪,更新粒度相当的细,但是也带来了比较大的内存开销。 在 Vue2.x 之中,引入了虚拟 DOM 并且把更新粒度调整到了组件级别(比状态级别要粗),但是也大大降低了依赖数量及依赖追踪所消耗的内存。 尽管 Vue 调整到了组件级别,也仍然要比 React 更细:React...

2021.9.29 洗澡的的时候发呆,突然想起来,今年还发生了挺多事情的。 先是年初的时候,大病一场,住院住了十多天,每天躺在病床上输液,当时跨年那一晚,我还在住院(因为身体太难受,当晚我还吐了),女朋友来照顾我(不得不说,有个伴侣就是好啊~)。好像是 1 月 5 号出院的吧,又面临着期末考试,当时最近的一场考试是 1 月 10...

# 第五十二篇 尿路结石 # 一、概述 # (一) 尿路结石的形成机制: 肾钙化斑、过饱和结晶、结石基质、晶体抑制物质、异质促进成核学说是结石形成的基本学说 # (二) 结石的病因: \1. 代谢异常: ① 形成尿结石的物质排出增加; ② 尿 pH 改变; ③ 尿中抑制晶体形成和聚集的物质减少 \2. 局部病因: 尿路梗阻、感染和尿路存在异物均是诱发结石形成的局部因素 \3. 药物相关因素: 一类为尿液的浓度高而溶解度比较低的药物;另一类为能够诱发结石形成的药物 # (三) 尿结石成分及性质 \1. 草酸钙:硬,粗糙,不规则,棕褐色;X 线阳性 \2. 磷酸钙:脆,粗糙,不规则,灰白色;X...

这里主要讲的是 Chrome 的 JavaScript 引擎 V8 的垃圾回收机制。 # 内存限制 V8 之中,对内存的使用有限制(64 位下约 1.4G、32 位下约 0.7G)——《深入浅出 Nodejs》。 因为 V8 的内存管理机制是为浏览器而设计,而且为了避免长时间的垃圾回收阻塞 JavaScript 线程,所以就有这么一套限制。 当然,也可以在启动时传递 --max-old-space-size 或 --max-new-space-size 来调整这个限制大小。但是只能在初始化 / 启动时指定,无法运行过程中扩充 # V8 的垃圾回收机制 V8...

# 第五十一篇 尿路梗阻 # 一、概述 ・尿液在肾内形成后,经过肾盏、肾盂、输尿管、膀胱和尿道排出体外。 ・尿液的正常排出,有赖于尿路管腔通畅和排尿功能正常。 ・泌尿系统本身及其周围的许多疾病都可引起尿路梗阻,造成尿液排出障碍,引起梗阻近侧端尿路扩张积水。 ・泌尿系统许多疾病与泌尿系梗阻互为因果 # (一) 病因 \1. 尿路结石 \2. 泌尿生殖系统肿瘤 \3. 前列腺增生症 \4. 先天发育异常 \5. 邻近器官病变的压迫和侵犯 \6. 创伤或炎症引起的瘢痕狭窄 \7. 中枢或周围神经受到损伤 \8. 结核 \9. 医源性输尿管梗阻 # (二) 病理生理 # \1. 病...

这段时间在学习 Node,看书、看文档资料的时候概念感觉太乱了,于是打算写一篇文章来整理自己学到的知识,就有了这篇文章) # Node 简介 Node.js 是一个开源、跨平台的 JavaScript 运行时环境。2009 年的时候,Ryan Dahl 想开发一个高性能的 web 服务器,经过一番深思熟虑,他最终选择了 JavaScript 作为 Node 的实现语言。时至今日,Node 已经成为最火热的技术之一。 # Node 的特点 事件驱动 和浏览器端 JavaScript 类似, 异步 I/O 单线程 准确来说是 JavaScript 的执行是单线程的,其实 Node...