为 Koa 框架封装 webpack-dev-middleware 中间件

2016-04-07
阅读 10 分钟
13.5k
我见到有很多朋友在 SegmentFault 上面问一些不太好回答的问题,“JavaScript/Node 学好了能做什么?”,“前端架构师每天都做些什么?”等等。这些问题并非不能回答,但是第一、问题本身太过泛泛,很难回答的既针对又具体;第二、面对这样的问题一时也想不出从何处着手来回答。我自己觉得如果能配合一个实例来说明一下会比...

前后分离架构的探索之路

2015-09-26
阅读 8 分钟
30.6k
大约五年前,那时候我还是一个小小讲师(苹果 AATC 培训认证),完全不懂编程为何物的菜鸟,一个偶然的机会让我进入了公司的开发部门,任职什么呢?用户体验设计师,原因很操蛋——我以前干过广告设计,做过餐饮服务行业,因而我有两个优势:能聆听和揣摩客户的需求,然后能做一些图。

[Tips on Ember 2] How components works when out of Application?

2015-09-16
阅读 4 分钟
3.2k
你看,如今的框架和库,无论规模大小功能多少,它们在本质上都朝着“组件化”的思路快速演进着。Angular 有 directives,Angular 2应该也还是这个叫法;Ember 从 View 过渡到了 Component,并且接下来的迭代会朝向 WebComponent 的标准来设计生命周期及其 API;React 自身就是一个组件化的范式;还有 Polymer,那就是 Goog...

[Tips on Ember 2] UI 布局与应用状态的关系处理

2015-09-09
阅读 10 分钟
4.3k
自该类型应用诞生以来我最多思考的问题就是这个。现在前端 SPA 框架满天飞,许多不是框架的也被称作框架,究竟有什么代表性的层(layer)能让一个系统称得上是框架?

[Tips on Ember 2] Ember CLI 和 Sass (及其周边) 的协同工作

2015-09-09
阅读 5 分钟
3.7k
Sass 的演变和使用在前端开发领域真是个又臭又长的话题,如果你是自行搭建构建系统你就明白我说的意思了。还好 Ember CLI 的生态系统比较完备,也有一个广大的社区做后盾可以为我们省去很多功夫。

[Tips on Ember 2] Ember CLI with Webstorm

2015-09-09
阅读 4 分钟
3.8k
Tips on Ember 2 对我来说是没什么计划性的写作,我只是把它当做是每天工作的总结日志,一个很重要的目的是为团队做一些技术事务的整理,以帮助一些新人快速成长起来。如果有些内容不能满足各位看官的胃口,提前说声抱歉并且请不要担心,随着项目的逐渐开展,好戏会在后头。

[Tips on Ember 2] 如何尝试 angle-bracket component

2015-09-09
阅读 4 分钟
3.5k
Ruby China 的朋友大概都知道我很喜欢 Ember,然而我用 Ember 的经历其实远比不上 Angular 那么丰富(Ember 业余爱好,Angular 做正儿八经的项目)。最近我换工作了,终于可以在新的项目里主导使用 Ember 来开发 Web App,恰逢 Ember 进入了 2.0 时代,许多东西和当初自己瞎玩的时候相比变化都很大。于是我就想把接下来...

ES6 + Angular 1.x

2015-04-16
阅读 18 分钟
12k
本文原题:__《面向未来的前端模块化开发与包管理》__,最初发表于 div.io。目前原文还在不断更新修改中,有更新再同步到 SF。由于是实验性质的尝试,故相关视频的录制将等到完全成稿之后再进行。因为我相信很多前端工程师都会对这个事情很关注,所以先写成文分享出来顺便听听反馈以进一步完善这个实验。

Koa / Co / Bluebird or Q / Generators / Promises / Thunks 的相互关系

2015-04-15
阅读 5 分钟
7.7k
经常游荡在 SO 的我总能发现许多好问题和好答案。它们的“好”不仅仅在于知识的价值,更可贵之处在于如何表达:如何“提问”/如何“回答”。不久前我在 SF 发了一篇 WebComponents 和 React 的对比 就是一个很典型的范例,今天我又发现看到这样的一篇,不敢独享,略做翻译继续奉献给诸位。(唯一的回答比较长还没翻译完且我也...

函数式编程中局部应用(Partial Application)和局部套用(Currying)的区别

2014-11-08
阅读 6 分钟
9.1k
局部应用(Partial Application,也译作“偏应用”或“部分应用”)和局部套用( Currying, 也译作“柯里化”),是函数式编程范式中很常用的技巧。本文着重于阐述它们的特点和(更重要的是)差异。

Facebook React 和 Web Components(Polymer)对比优势和劣势

2014-11-02
阅读 13 分钟
24.5k
这是一篇来自 StackOverflow 的问答,提问的人认为 React 相比 WebComponents 有一些“先天不足”之处,列举如下:

如何用 Git 合并两个库(合并历史记录,解决冲突/改写路径)

2014-09-18
阅读 3 分钟
11.3k
本来已经不写文字博客了,一般心得都录成了视频(这在我看来是更好的方式),但是今天遇到一个关于 Git 的问题不太好重现也不便于录制视频,加上它本身很具有代表性也很有用,所以还是记录于此。

“为什么我的 _.gitignore_ 规则不生效?”

2014-04-15
阅读 1 分钟
6.7k
这是一个很常见的问题,我碰巧看到某用户上个月在 SF 上的提问,让我感到后怕的是其中被采纳的答案,这是 Git 的使用里一个非常巨大的坑!如果回答问题的人真的在一个团队项目里这么做过,他就知道用这个方法会让所有成员多么痛苦了!

Untrusted 趣味解法

2014-04-14
阅读 4 分钟
9k
这个游戏实际上是很容易作弊的,打开控制台你会看到作者热烈的欢迎着你,源代码也没有任何处理,随便你 Hack。以下则记录的是我自己的趣味玩法。

一个实例看 Ember 的各种模板渲染方式

2014-04-10
阅读 11 分钟
7.5k
大多数 Ember 教程都告诉我们 Ember 有 partial view render outlet component 等等等等,让人眼花缭乱之余,除了赞叹:“哇!好灵活!!好强大!!”意外,剩下的就是:“尼玛……到底什么时候用什么呀?”

如何让 EmberData 的 FixtureAdapter 支持 query?

2014-04-09
阅读 2 分钟
3.2k
Why?DS.FixtureAdapter::queryFixtures 和 findQuery 有什么关系?查看源码可知原来 findQuery 调用的正是 queryFixtures 方法,而 queryFixtures 的内容则是很幽默的:

如何让 EmberData 的 FixtureAdapter 应用 serializer?

2014-04-09
阅读 2 分钟
3k
在开发的过程中,EmberData 运行我们在本地创建 fixtures 来模拟 API backend 返回的数据,这样一来我们可以在没有 API service 的前提下直接搞前端的部分。好处嘛:

Ember.js 资源列表

2014-04-07
阅读 3 分钟
9.1k
最近我应邀为朋友写一个 Web App,前期在考虑技术栈的时候选择了 Rails API+Ember.js。考虑到这个应用的规模,选择 Ember.js 或许有点重,但是做公司的项目一直都在用 Angular,实在有点玩腻了(Angular 很好),而其他的前端框架要么不好玩,要么还不够成熟(我真好想用 Meteor,好想好想……)。纠结反复,最终还是决定...

Vim 的哲学(四)

2014-04-06
阅读 9 分钟
14k
Vim 的哲学第四篇姗姗来迟,狗血的原因我就不多说了,好消息是我将为这个系列带来一些动态演示。原本我打算录视频的,但是文章都写了那么些篇了,现在再录视频似乎晚了些,所以我研究了一下如何录制高质量的 GIF 动画(第三方软件都不好用,最后我还是用 QuickTime 和一段脚本来完成录制,挺酷的~)。接下来先奉上第一弹:

活着就为折腾(一)

2014-03-28
阅读 3 分钟
5k
进来是数组,出去是数组,第一反应肯定要 Enumerator 了。关键是选择哪一个方法比较好呢?Ruby 的数组对象没有 #filter 方法,#each 和 #map 比较常用,但直觉告诉我们肯定还有更合适的。看看文档之后发现 #select 和 #delete_if 似乎都不错。

Vim 的哲学(三)

2014-03-26
阅读 12 分钟
26.6k
在我的硬盘上总是保留着(至少)两份 Vim 的配置文件。其中一份是所谓“完全正式版”,它的文件名是 .vimrc,到本系列结束的时候,我们将了解其中绝大部分的内容,并且它的内容也是会随时更新的(根据使用者的偏好和需要)。而另外一份则是被我称之为“基础练习版”,它的文件名是 .vimrc.basic,其内容就是本文将要一一介绍...

Vim 的哲学(二)

2014-03-26
阅读 4 分钟
13.6k
上回我分享了如何掌握基础移动的心得体会,而对于很重要的模式却只是一带而过,这其实是有原因的。过去我有过几次教新手 Vim 的经历,按照惯常的方式先告诉他们模式切换,然后再讲基础移动。然而我发现一旦他们掌握了模式转换,他们就会迫不及待的开始输入,紧接着就会因为方向控制的别扭而倍感受挫,人就是这样,谁都不...

Vim 的哲学(一)

2014-03-26
阅读 4 分钟
30k
这将是一个 Vim 的教学性质的系列,但是和绝大多数同类教程不同的是,我的重点不在于技巧的传授,而是在于对其观念的理解和阐述。Vim 之所以能卓尔不群靠地就是一种自成一派且精悍有效的“编辑器哲学”(当然 Emacs 也是),就好像网游千千万却唯有 World of Warcraft 一览众山小,那靠地不是技巧与外在,而是与众不同的世...

“流式”前端构建工具——gulp.js 简介

2014-03-14
阅读 4 分钟
24.7k
Grunt 一直是前端领域构建工具(任务运行器或许更准确一些,因为前端构建只是此类工具的一部分用途)的王者,然而它也不是毫无缺陷的,近期风头正劲的 gulp.js 隐隐有取而代之的态势。那么,究竟是什么使得 gulp.js 备受关注呢?

理解 JavaScript(四)

2014-01-28
阅读 6 分钟
9.5k
第四篇拖了很久了,真是有点不好意思。实话实说,拖延很久的原因主要是没想好怎么写,因为这一篇的主题比较有挑战性:原型和基于原型的继承——啊~我终于说出口了,这下没借口拖延了==

理解 JavaScript(三)

2013-12-02
阅读 3 分钟
7.1k
构造器也叫构造函数,它就是一个普通的函数,只不过它的主要目的是用于和 new 操作符配合来创建特定类型的对象。(关于 new 操作符,我的理解 JavaScript(一)里有进一步描述)

理解 JavaScript(二)

2013-11-30
阅读 3 分钟
21.6k
Scoping & Hoisting {代码...} 上面这段代码在运行时会产生什么结果? 尽管对于有经验的程序员来说这只是小菜一碟,不过我还是顺着初学者常见的思路做一番描述: 创建了全局变量 a,定义其值为 1 创建了函数 foo 在 foo 的函数体内,if 语句将不会执行,因为 !a 会将变量 a 转变成布尔的假值,也就是 false 跳过条件...

理解 JavaScript(一)

2013-11-30
阅读 4 分钟
8.5k
JavaScript 中的 new 首先,new 是一个操作符,它可以用来创建两种对象的实例,一种是用户定义的对象类型,另一种则是拥有构造函数的内建对象类型。 创建用户定义的对象需要两个步骤: 通过编写函数来定义对象类型; 使用 new 来创建对象实例。 示例一: {代码...} 这是一个典型的通过编写函数来定义对象类型的范例,我...