标签: JavaScript

后端小二 | 3天前 | JavaScript

探索在 JS 中,为什么要在函数前面加!

简介 我们基本都知道,函数的声明方式有这两种 function msg(){alert('msg');}//声明式定义函数 var msg = function(){alert('msg');}//函数赋值表达式定义函数 但其实还有第三种声明方式,Function构造函数 var msg = new function(msg) {   alert('msg') } 等同于 function msg(msg) { alert('msg') } 函数的调用方式通常是 方法名() 但是,如果我们尝试为一个“定义函数”末尾加上 () ,解析器是无法理解的。 function msg(){ alert('message'); }();//解析器是无法理解的 定义函数的调用方式应该是 print() ; 那为什么将函数体部分用 () 包裹起来就可以了呢? 原来, 使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。 也就是说,任何能将函数变成一个函数表达式

 24 |  0 |  0 JavaScript

心如止水 | 5天前 | JavaScript

这才是现代 JavaScript 库打包指南!

简介 本指南旨在提供一些大多数库都应该遵循的一目了然的建议。以及一些额外的信息,用来帮助你了解这些建议被提出的原因,或帮助你判断是否不需要遵循某些建议。这个指南仅适用于 「库(libraries)」 ,不适用于应用(app)。 要强调的是,这只是一些 「建议」 ,并不是所有库都必须要遵循的。每个库都是独特的,它们可能有充足的理由不采用本文中的任何建议。 最后,这个指南不针对某一个特定的打包工具 —— 已经有许多指南来说明如何在配置特定的打包工具。相反我们聚焦于每个库和打包工具(或不用打包工具)都适用的事项。 --- 输出 esm 、 cjs 和 umd 格式 esm 是“EcmaScript module”的缩写。 cjs 是“CommonJS module”的缩写。 umd 是“Universal Module Definition”的缩写,它可以在 <script 标签中执行、被 CommonJS 模块加载器加载、被 AMD 模块加载器加载。 esm 被认为是“未来”,但 cjs 仍然在社区...

 15 |  0 |  0 JavaScript

观云 | 1周前 | CSSJavaScript

还在用 JS 做节流吗?CSS 也可以防止按钮重复点击

众所周知,函数节流(throttle)是 JS 中一个非常常见的优化手段,可以有效的避免函数过于频繁的执行。 举个例子:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,比如只允许每 300ms 提交一次,这时候我想大部分同学都会到网上直接拷贝一段 throttle 函数,或者直接引用 lodash 工具库 btn.addEventListener('click', _.throttle(save, 300)) 其实除了 JS 方式, CSS 也可以非常轻易的实现这样一个功能,无需任何框架库,一起看看吧 一、CSS 实现思路分析 CSS 实现和 JS 的思维不同,需要从另一个角度去看待这个问题。 比如这里的需要对点击事件进行限制,也就是禁用点击事件,想想有什么方式可以禁用事件,没错,就是 pointer-events ; 然后是时间的限制,每次点击后需要自动禁用 300ms ,时间过后重新恢复,那么,有什么特性和时间以及状态恢复有关呢?没错,就是 animation ; 除此之外,还需要有触发时机,这里是点击

 35 |  0 |  0 CSSJavaScript

流苏 | 2周前 | JavaScript

如何利用 IOC 改善工程设计

控制反转 (Inversion of Control) 及其背后的 SOLID 设计原则已经非常成熟,并且在传统软件开发领域得到了验证。 本文从 JavaScript 生态出发,结合领域内流行的基础设施和成功的项目样例,对这套这套方法论进行重新审视。 绪论 什么是 IOC 控制反转 一个来自 React 的例子:Context – React^[1]^ Avatar 虽然被诸多底层组件依赖,但是它却不是被底层组件引入并初始化的,这样就实现了底层组件与 Avatar 的解耦。 底层组件不再关注 Avatar 的具体实现 仅关注一个抽象的承诺:上层组件会传入一个可渲染的片段 Avatar 的初始化由多个地点集中到了一起 完成了复杂度的收束,并且没有影响代码的能力。 这个例子仅说明了 IOC 的核心,完整的 IOC 实践与 SOLID 设计原则 紧密相关 维基百科: SOLID...

 71 |  1 |  0 JavaScript