基于 Vue directive 实现声明式埋点方案
注:本方案依赖 vue 、 lazysizes 曝光事件:lazybeforeunveil 传统埋点 vs 声明式埋点 正文开始前,对比展示一下效果,方便读者判断是否有兴趣 传统…
理解 invokedynamic
inDy(invokedynamic)是 java 7 引入的一条新的虚拟机指令,这是自 1.0 以来第一次引入新的虚拟机指令。到了 java 8 这条指令才第一次在 java 应用,…
webpack-dev-server、webpack-dev-middleware 和 webpack-hot-middleware 对比
概念 Live Reload :即实时重载。模块更改则自动刷新整个应用。 HMR (Hot Module Replacement):即 模块热替换 。webpack 的功能之一,它允许通过 H…
Babel 常用插件、预设详解
常用插件 @babel/plugin-transform-runtime 此插件可以复用 Babel 注入的辅助代码以减少代码体积;另一个作用可以避免全局注入 polyfill,从而避免污…
非负矩阵分解 NMF
non-negative matrix factorization,简写为 NMF,翻译为非负矩阵分解,属于矩阵分解的一种算法。在特征分解,SVD 等传统的矩阵分解技术中,分解后的…
rebase 与 merge 的区别?
git rebase 和 git merge 一样都是用于从一个分支获取并合并到当前分支。 假设一个场景,就是我们开发的 feature/todo 分支要合并到 master 主分支,…
你的 git 工作流是怎样的?
GitFlow 是由 Vincent Driessen 提出的一个 Git 操作流程规范,包含以下几个关键分支: 名称 说明 master 主分支 develop 主开发分支,包含确定即将发…
详解 AST 抽象语法树及其应用
一 AST 是什么? 1 AST:Abstract Syntax Tree - 抽象语法树 当我们查看目前主流的项目中的 devDependencies,会发现各种各样的模块工具。归纳一下有…
JavaScript Object.keys() 排序问题的深入探索
利用 Object.keys 取得对象所有属性的 key ,然后进行 map 操作是 JavaScript 开发者常用的方法。但你是否思考过 key list 是依据什么顺序排列的呢? …