JavaScript 进度管理

2020-01-14
阅读 7 分钟
2.2k
我们写程序的时候会经常遇到显示进度的需求,如加载进度、上传进度等。最常见的实现方式是通过记录 已完成数量(loadedCount) 和 总数量(totalCount),然后算一下就能得到进度了。这种方式简单粗暴,容易实现,但不好扩展,必须有个地方维护所有 loadedCount 和 totalCount。本文将会基于上述实现方式,实现一种更容易扩...

【译】远程调试 iOS Safari

2019-01-10
阅读 3 分钟
5.7k
如今在移动设备上测试网站变得越来越重要了,我们会经常发现在移动设备的浏览器上面网站会表现 的和桌面浏览器不一样,因此在开发网站时用真机测试变得非常重要。大多数在桌面电脑的开发服务器都只是在 localhost 中打开一个端口,然后通过 URL http://localhost1234 来访问内容。这种方式在电脑端非常管用,但你不可以...

「译」追赶时髦的技术

2017-05-30
阅读 3 分钟
3.1k
在 Web 开发领域,我们会经常看到有人讨论当前最好的框架或编程语言。Scribd 的联合创始人 Jared Friedman 在 2015 年的时候专门写了一篇文章推荐创业公司使用 Node.js 代替 Rails。

浅谈单页应用中前端分页的实现方案

2016-09-12
阅读 5 分钟
5.9k
分页是开发中最常见的需求之一。对于分页,我们讨论的最多的是后端的数据库分页,这关乎到我们应用程序的性能,也是分页这个需求的核心。而前端要做的,是把后端返回的数据呈现在页面上,工作被认为是简单琐碎的。在单页应用中,我们有很多中分页方案,最常见的是无限滚动、上一页 & 下一页和页码。本文将谈谈这三种...

自定义 Redux 中的 combineReducers

2016-08-20
阅读 4 分钟
5k
Redux 中的 combineReducers 能让我们很方便地把多个 reducers 组合起来,成为一个新的 reducer。 然而,随着我们的应用变得越来越复杂,combineReducers 有可能不能满足我们的需求。正如 Redux 官方文档所说:

用 GitLab CI 进行持续集成

2016-07-30
阅读 6 分钟
38.2k
从 GitLab 8.0 开始,GitLab CI 就已经集成在 GitLab 中,我们只要在项目中添加一个 .gitlab-ci.yml 文件,然后添加一个 Runner,即可进行持续集成。 而且随着 GitLab 的升级,GitLab CI 变得越来越强大,本文将介绍如何使用 GitLab CI 进行持续集成。

如何用 JavaScript 下载文件

2016-07-03
阅读 4 分钟
68.9k
我们知道,下载文件是一个非常常见的需求,但由于浏览器的安全策略的限制,我们通常只能通过一个额外的页面,访问某个文件的 url 来实现下载功能,但是这种用户体验非常不好。幸好,HTML 5 里面为 <a> 标签添加了一个 download 的属性,我们可以轻易的利用它来实现下载功能,再也不需要用以前的笨办法了。

「译」Node.js Streams 基础

2016-07-01
阅读 4 分钟
2.8k
Node.js 天生异步和事件驱动,非常适合处理 I/O 相关的任务。如果你在处理应用中 I/O 相关的操作,你可以利用 Node.js 中的流(stream)。因此,我们先具体看看流,理解一下它们是怎么简化 I/O 操作的吧。

「译」 MapReduce in MongoDB

2016-06-12
阅读 9 分钟
3.8k
在这篇文章里面,我们会演示如何在 MongoDB 中使用 MapReduce 操作。我们会用 dummy-json 这个包来生成一些虚假的数据,然后用 Mongojs

如何实现无限滚动

2016-04-20
阅读 5 分钟
9.9k
然而,上面的例子中还有很多问题,其中最大的问题就是 获取数据的函数(以后叫 fetch 函数)没有触发条件, 我们还需要不断优化,才能在生产环境下使用。

Hubot 的简单用法

2016-04-03
阅读 4 分钟
7k
你有没想过其实你可以在常用的聊天软件上说 @xxx, 部署新版本的网站,然后机器人就自动登录服务器,然后执行部署脚本,部署成功后告诉你 新版本的网站已经部署成功。

Lodash 中 assign,extend 和 merge 的区别

2016-04-02
阅读 3 分钟
4.6k
Assigns own enumerable string keyed properties of source objects to the destination object. Source objects are applied from left to right. Subsequent sources overwrite property assignments of previous sources.

type vs data vs newtype in haskell

2016-03-20
阅读 3 分钟
5k
我们用 aria2-server 来代替 aria2c --conf-path ~/aria2.conf,它们本质上是一样的,只是一个不同的名字,方便我们输入而已。

what is applicative in haskell ?

2016-03-09
阅读 5 分钟
2.9k
还记得 Functor 的限制吗?fmap f x 中的 f 只接受一个参数。fmap f x 中的 f 不能带有上下文 (换句话说只能是 (+42) 不能是 Just (+42))。所谓的加强版的 Functor 就没有这些限制。

What is functor in Haskell ?

2016-02-11
阅读 4 分钟
3.4k
简介 什么是 Functor ? 现在你可以认为 Functor 是一种数据类型。 Functor 有什么用 ? 我们可以对 Functor 使用 fmap。 fmap 是什么东西 ? fmap 是一个函数。 fmap 是函数的话,那它的类型签名是什么 ? fmap :: (a -> b) -> f a -> f b。 我应该怎么看这个类型签名 ? 它接受一个函数和一个 Functor 类型作为参...

(译) Haskell 中随机数的使用

2016-02-06
阅读 4 分钟
5.5k
随机数(我指的是伪随机数)是通过显式或隐式的状态来生成的。这意味着在 Haskell 中,随机数的使用(通过 System.Random 库)是伴随着状态的传递的。

在 Node.js 中利用 js-xlsx 处理 Excel 文件

2016-01-31
阅读 7 分钟
34.5k
本文介绍用 Node.js 中的 js-xlsx 库来处理 Excel 文件。 js-xlsx 库是目前 Github 上 star 数量最多的处理 Excel 的库,功能强大,但上手难度稍大。文档有些乱,不适合快速上手。本文对 js-xlsx 库进行一定的总结,并提供几个实用的例子供读者测试,学习,交流。

Spacemacs 使用总结

2016-01-22
阅读 2 分钟
12.7k
SPC f f 打开文件(夹),相当于 $ open xxx 或 $ cd /path/to/projectSPC p f 搜索文件名,相当于 ST / Atom 中的 Ctrl + pSPC s a p 搜索内容,相当于 $ ag xxx 或 ST / Atom 中的 Ctrl + Shift + f

Localtunnel(Node.js 版) 使用教程

2016-01-17
阅读 2 分钟
12k
通过上面的命令,我们不需要做其他设置就可以通过 https://uhhzexcifv.localtunnel.me 来访问我们本地服务器了。

The Little JavaScript Closures

2015-12-04
阅读 4 分钟
2.4k
写在前面 本文尝试模仿 The Little Schema 的风格,介绍 JavaScript 的闭包。本文同时也是我学习 JavaScript 闭包的一次总结。欢迎一起讨论。 简介 什么是闭包? 闭包是一个函数 闭包都是函数吗? 是 函数都是闭包吗? 不 我怎么判断一个函数是不是闭包? 你现在还不能回答,因为你还不知道以下概念:全局变量(Global V...

React-DnD 的使用

2015-11-17
阅读 4 分钟
29.2k
React DnD 是一组 React 高阶组件,可以用来帮你构建复杂的拖拽接口,同时解耦你的组件。React DnD 非常适合像 Trello 和 Storify 这样的应用,在不同地方通过拖拽转移数据,而组件会改变它们的外观和应用的状态来响应拖拽事件。

Node.js 中 Stream API 的使用

2015-10-22
阅读 3 分钟
5.4k
在 Node.js 中,读取文件的方式有两种,一种是用 fs.readFile,另外一种是利用 fs.createReadStream 来读取。

JavaScript 中 Object.defineProperty 的使用

2015-08-18
阅读 2 分钟
9k
The Object.defineProperty() method defines a new property directly on an object, or modifies an existing property on an object, and returns the object.

利用 Gulp 处理前端工作流程

2015-08-15
阅读 4 分钟
11.6k
gulp.src(glob[, options]) 根据 glob 匹配文件,返回 stream,可以通过 .pipe() 方法传递给后续的插件。