文蔺的头像

文蔺

  • 译文
    37
  • 积分
    3000
  • 粉丝
    2

wemlion.com

最新译文

Bluebird 高性能揭秘

Bluebird 是一个广泛使用的 Promise 库,最早在 2013 年得到人们的关注。相比其他同等水平的 Promise 库,Bluebird 快了一百来倍。Bluebird 自始至终遵循着 JavaScript 优化的一些基本原则,所以才有这么好的性能。本文将...

React 中的 AJAX 请求:获取数据的方法与时机

译者注:本文超级超级基础。差不多可以忽略。很久之前认领的,闲着没事顺手翻译了,求轻喷 😆。当时认领,仅仅是因为 axios 这玩意儿。 React 新手一开始可能会问到这样一个问题,“在 React 中如何发送 AJAX 请求呢?” 本文正要回答该问题。 首先:...

手把手教你写一个 Javascript 框架:数据绑定

本文是“编写 JavaScript 框架”系列的第四章。本章我将解释脏检查和基于getter/setter 访问器的数据绑定技术,并指出它们各自的优缺点。 本系列主要是如何开发一个开源的客户端框架,框架名为 NX。我将在本系列中分享框架编写过程中如何克服遇到的主要困难...

CSS 方法论的选择

多年来,CSS 方法论层出不穷。不幸的是,并不存在适用所有场景的最佳选择。本文介绍了一些适用于不同情况的 CSS 方法论。 好,跟我一起开始踩坑之旅吧。 我只需要创建一个单页面或简单的站点。内容以文本为主,可能会有一两个表单。没有人和我协作,就我自己(还有我家的喵...

手把手教你写一个 Javascript 框架:项目结构

过去几个月中,RisingStack 的 JavaScript 工程师 Bertalan Miklos 编写了新一代客户端框架 NX。Bertalan 将通过编写 JavaScript 框架系列文章与我们分享他在编写框架过程中的收获: 本章将展示 NX 的项目结构,并...

手把手教你写一个 Javascript 框架:沙箱求值

本文是“编写 JavaScript 框架”系列的第三章。在本章中,我将介绍浏览器中对代码求值的几种不同方式及其存在的问题,也会介绍一种依赖 JavaScript 新特性的方法。 本系列主要是如何开发一个开源的客户端框架,框架名为 NX。我将在本系列中分享框架编写过程中...

手把手教你写一个 Javascript 框架:时间调度

本文是“编写 JavaScript 框架”系列的第二章。在本章中,我将介绍 JavaScript 中异步执行代码的几种不同方式。你会读到关于事件循环相关的内容,以及像 setTimeout 和 Promise 等时间调度(timing)技术之间的差异。 本系列主要是如...

手把手教你写一个 Javascript 框架:使用 ES6 Proxy 实现数据绑定

使用 ES6 Proxy 实现数据绑定 本文是“编写 JavaScript 框架”系列的第五章。在本章中,我将介绍如何使用 ES6 Proxy 实现简单、强大的数据绑定。 本系列主要是如何开发一个开源的客户端框架,框架名为 NX。我将在本系列中分享框架编写过程中如何克...

理解 Node.js 事件循环

本文介绍了 Node.js 事件循环是如何工作,如何使用 Node.js 构建高速应用。文章还会涉及最常见的一些问题及其解决方案。 (我们正在编写一系列文章,聚焦于那些大规模使用 Node.js 的公司、有一定 Node 基础的开发者们的需求。) Node.js at...

HTML Form Validation

我是 HTML 表单验证(HTML form validation) 的超级粉丝,因为它取代了我使用了近 20 年的 JavaScript 代码。不幸的是,Safari 并不支持这个特性(谈到 Web 时,先别跟我提 Apple 和他们的优先级)。 不过,我确实很...

yarn 和 npm 命令行小抄

好,想必你对新的 JavaScript 包管理工具 yarn 已经有所耳闻,并已通过 npm i -g yarn 进行了安装,现在想知道怎么样使用吗?如果你了解 npm,你已经会很大一部分啦! 下面是我从 npm 切换到 yarn 的一些笔记。 请收藏本文,本文会随...

函数式 TypeScript

谈到函数式编程时,我们常提到机制、方法,而不是核心原则。函数式编程不是关于 Monad、Monoid 和 Zipper 这些概念的,虽然它们确实很有用。从根本上来说,函数式编程就是关于如使用通用的可复用函数进行组合编程。本文是我在重构 TypeScript 代码时使...

让人倾倒的 11 个 npm trick

有效率地使用 npm 可能会很困难。内置特性堆积如山,尝试学习它们是很艰巨的任务。 就我个人而言,单学习并使用其中一些小 trick 解救了我,从前移除那些未使用的模块时,我只能先删除整个 node_modules 文件夹,接着再用 npm install 重新安装...

HTTP 推送

译者注:本文已获作者 @Yoav Weiss 授权。原文地址:https://blog.yoav.ws/being_pushy/。 上周我在斯达哥尔摩住了几天,出席了 HTTP 研讨会,参与了不少吸引人的讨论。其中一次是关于 HTTP 推送及其优缺点、早期实验结果...

渐进增强的键盘导航

译者注: 本文已获作者 @codepo8 授权, 原文地址: https://www.christianheilmann.com/2016/08/15/better-keyboard-navigation-with-progressive-enhancement/...

Fetch 请求的本地缓存

本文展示了如何使用实现 fetch 请求的本地缓存,遇到重复请求时,将会从 sessionStorage 中读取数据。这样做的好处是,无需为每个需要缓存的资源编写自定义代码。 如果你想在 JavaScript 盛会中露露脸,秀秀如何玩转 Promise、最前沿的 AP...

渐进式 Web App 的离线存储

2016 很可能成为网络弹性(network resilience)元年。 网络连接很可能不靠谱(flakey),或者根本就连不上,这也是为什么在 渐进式 Web App(译者注:Progressive Web App,以下简称 PWA) 中,支持离线和性能可靠都很...

WebAssembly 初尝

头一次听说 WebAssembly 的时候就觉得很酷,然后就超兴奋地开始尝试。但从一开始尝试的过程就不顺利,越来越让人灰心。本文的目的就是解决问题,让你免受困扰。 读者须知 本文写作于 2016 年 6 月 24 日。WebAssembly 是一项很新的、不稳定的技...

自动化、跨浏览器的 JavaScript 单元测试

大家都知道在不同浏览器上测试代码有多重要。多数时候我会觉得,开发者社区中的朋友们这一点做得非常棒 —— 至少是在初次发布项目的时候。 测试做得不好的是在每次修改代码的时候。 我个人也为此内疚。“自动化、跨浏览器的 JavaScript 单元测试”,这在我的 todo...

JavaScript 与函数式编程

译者注:推荐一篇译文,《函数式编程术语解析》。 本文是我在 2016 年 7 月 29 号听 Kyle Simpson 精彩的课程《Functional-Light JavaScript》时所做的笔记(外加个人的深入研究)(幻灯片在这)。 长久以来,面向对象在 J...

eBay: Style and Speed

今年 eBay 的顶级举措之一是为我们的用户提供一个更好的浏览体验。在最近的一次采访中,Devin Wenig 对关于此事的重要性已经有了很棒的评论。我们的想法是利用结构化的数据和机器学习,让各种价值观不同的用户购物,这些用户中可能一些人偏好存钱,而另外一些人可能会关...

Service Worker 生命周期

如果使用过 Service Worker,之前你可能遇到过这样的问题,原来的 Service Worker 还在起作用,即使文件本身已经更新过。其中的原因在于 Service Worker 生命周期中的一些微妙之处;它可能会被安装,而且是有效的,但实际上却没有被 do...

从发展历史理解 ES6 Module

在很长一段时间内, ES6 带来了 JavaScript 最大的变化,包括管理大型、复杂代码库的一些新特性。这些特性,主要是 import 和 export 关键词,共同被称为 modules。 如果你现在还是 JavaScript 新手,特别是从其他已有内建模块(各...

关于转译器 JavaScript 程序员需要知道的事

想要在与 ECMAScript 保持一致的同时也不抛弃那些没有最新 JavaScript 特性的浏览器吗?或者在成为标砖之前试验那些即将到来的特性,以告诉 ECMAScript 哪些对你有用,哪些没什么用?再或者就是想利用那些大型项目中提高 JavaScript 效率...

移动开发中的仿真器与模拟器

译者注: 本文主要涉及到两个概念: Emulator 和 Simulator。通常我们在工作中可能统统习惯称为“模拟器”,但实际上二者有所不同。为了分清概念,本文将 Emulator 译作 “仿真器”, Simulator 译作 “模拟器”。听起来可能略拗口,如产生生...

HTTP/2 Server Push 实践:单 Link 报头包含多资源场景

译者注 译者在做自己的一个小工具(抓取博客的 Chrome 扩展)的时候,使用 jQuery 辅助作为 DOM 解析器,为了避免加载图片、脚本、样式表等无用的资源,在将字符串传给 $ 的时候,先对字符串中的相关标签进行了处理。 但遇到某个网站的时候,一直疑惑不解,明明...

Hybrid or Native: 合适的才是最好的

译者注:本文讲到的 hybrid & native 可能和我们通常理解的略有差异。文中 native 部分主要讲到的是 NativeScript,这一点可能在一些开发者看来是有争议的。关于 NativeScript,想起来@前端外刊评论 有一篇文章《使用 N...

WebP 支持:超乎你想象

WebP 是 Google 发明的更小的替代 JPEG 和 PNG 的格式。最近有很多关于WebP支持的疑惑,细说来就是可以用它做什么,不能做什么,比如说浏览器支持,CMS 支持等等。今天我想清除你所有可能的疑虑。WebP 的支持程度实际上比你想的可能要好得多。 W...

盘点即将影响世界的九大创新

2016 年已经过去了一半,现实很清晰,我们正生活在创新的新纪元里。在硅谷之外,企业和世界各地的创业孵化器正在解决大问题,如水资源稀缺、癌症等。“下一件大事”的概念已略嫌冗余,因为突破已是家常便饭。我们来聊聊可能很快就会影响世界的九大创新: 1. 人工智能 (AI)...

给 Service Worker 开后门

在渐进式 Web App 开发峰会(Progressive Web App dev Summit)上展示的时候,我花了差不多 20 分钟讲了这样一点: Alex,你昨天演讲展示了华盛顿邮报(Washington Post)的 AMP (——译者注:Accelerat...

测试驱动开发:使用 Node.js 和 MongoDB 构建 Todo API

学习如何使用测试驱动开发的方式,用 Node.js、MongoDB、Mocha 和 Sinon.js 开发 Todo API。 简介 测试是软件开发过程中的一个完整部分,它帮助我们提升软件品质。有很多种测试方法,如手动测试,集成测试,功能测试,负载测试,单元测试等等...

防火墙背后的笔记:Web 设计在中国

译者注:本文写作于 2014 年 10 月。 本文是《世界各地的 Web 设计(Web Design Across the World)》系列的一部分。 随着更多的西方企业将目光投向中国市场,我被问过许多关于为中国客户设计网站的复杂性的问题,还有在中国做电商的技术...

无限滚动加载最佳实践

无限滚动(Infinite scrolling),有时候被称为无尽滚动(endless scrolling),这种技术允许用户在大量内容上滚动,眼中看不到结束的地方。这种技术很简单,就是页面往下滚动的时候保持刷新。 这项技术使用户在没有打断和额外交互的情况下滚动列表...

小两百行 JavaScript 打造lambda 演算解释器

两百行内 JavaScript 打造lambda 演算解释器 最近,我发了一条推特,我喜欢上 lambda 演算了,它简单、强大。 我当然听说过 lambda 演算,但直到我读了这本书 《类型和编程语言》(Types and Programming Language...

Node.js 中的队列

这是深入探索 Node.js 中使用工作队列(work queues)管理异步工作流的系列文章的第一篇,来自the Node Patterns series。 开始享受吧! 很常见的是,在应用程序流中,应用有着可以异步处理的工作负载。一个常见的例子是发送邮件。比方...

客户端存储

客户端存储 介绍 本文是关于客户端存储(client-side storage)的。这是一个通用术语,包含几个独立但相关的 API: Web Storage、Web SQL Database、Indexed Database 和 File Access。每种技术都提供...

No WebSockets Over HTTP/2

译者注: 《深入浅出 Node.js》第七章讲述 WebSocket 服务的构建中,对本文中反复提到的 Upgrade 有比较详细的说明。 NO WEBSOCKETS OVER HTTP/2. 我这样说的意思是,在 HTTP/2 协议里,无法像在 HTTP/1....