Fantasy

Programming & Thinking

React

大约一周前,React 发布了第一个 16 版本的 beta 包,也就是说广大前端码农同学已经可以开始在自己的工程中使用新一个大版本的 React 了。截至现在,已经发布了三个 beta 版本,修复了一些已知的问题。 那么这个版本的 React 究竟给我们带来了什么呢?不妨跟着我来先睹为快。 现在可以立即马上通过 npm i react@next react-dom@next 来给你的项目安装 beta 版本的 React。 关于 React v16 值得注意的是,React v16 是一个对于 React 核心代码重写的版本,在此前透露的代号为...

Reading

注:这是我发布在豆瓣上的书评,稍加整理后发布在此处。 古人学问无遗力,少壮工夫老始成。 纸上得来终觉浅,绝知此事要躬行。 – 《冬夜读书示子聿》 以这首诗作为本次书评的开篇,是因为这正是我在阅读整本书的时候脑海中不断地浮现的想法。 如果你没有阅读过此书,可以稍稍浏览下整本书的目录: 心智的力量 开启自己的心智 通过管理自己与时间做朋友 开拓我们的心智 小心所谓「成功学」 更多思考 此时此刻开始改变 书本的第五章叫做「小心所谓的成功学」– 而这一章也是我觉得整本书堪称败笔的地方。 为什么这么说呢? 李笑来老师花了很长的篇幅、旁征博引,数落了大量「成功学」书籍的不是之处。 熟不知这本书本身也是一个作为「成功者」的李笑来所编写的「成功学」书籍 – 只能说「对比」作为一种常见的文字技巧,在这里实践地很透彻。 当然了,瑕不掩瑜,这本书除了这一章充满了令人吐槽之感以外,其他章节看起来都是那么的令人信服、热血迸发 – 恨不得立即争分夺秒、唯恐自己的时间悄悄溜走了。 这似乎又从另一个角度印证了这是一本「成功的」「成功学」书籍 – 不是这样也不会成为畅销书了。 书中有很多的「方法论」,例如: 我们需要学会控制自己的大脑,而不是被大脑所控制 这一点乍一听很玄乎,但是李笑来老师用一整节的文字来举例说明我们在平常的生活中有多么的愚蠢地被自己的大脑所控制,而这些例子中多多少少总有那么一个适用于身为读者的你。...

Node.js

Express 的路由是内置在框架内的,在实例化之后可以直接调用声明路由,例如: const app = require('express')(); app.get('/', (req, res) => { // ... }); 项目中经常会对目录结构进行 MVC 的分层,所以很多情况下会这样组织代码: 定义一个 controller exports.renderHomepage = (req, res) => { res.render('home'); }; 定义一个 router const...

JavaScript

Decorators 亦即「装饰器」,最早接触到这个概念是在学生时代学习 Python 的时候。 查阅 ECMA262 的资料可以发现,ECMAScript 提案中的 decorator 分为好几种类型: Class and Property decorators Method Parameter decorators Function Expression decorators 其中第一种已经处于 stage-2,而下面两种仍处于 stage-0 – 也就是说我们可能在不远的将来就能使用到原生的 “Class and Property decorators”。当然,不同类型的装饰器的装饰对象不同,应用场景也不同 –...

Front-end

随着浏览器的不断更新换代,我们可以在浏览器中使用的存储方式也日趋丰富。 从 cookies 到 HTML5 规范带来的本地存储,以及与传统数据库很相像、功能也更为强大的 IndexedDB 和 WebSQL – 在浏览器端,我们已经有能力去使用一些与客户端软件一样的数据持久化方案。 cookies cookies 应该是我们认识时间最久的浏览器端的存储方式了。然而 cookies 最初出现的目的并不是为了给开发者一个存储数据的地方,而是与 HTTP 的状态管理 1 有关系。简而言之,就是 cookies 会在每一次 HTTP 请求的时候被发送到服务端,而不仅仅是作为一种存储的方式停留在我们的浏览器中。 因此,如果你的 cookies 内容过长,很有可能影响到服务器的性能。 使用 cookies 在浏览器中,我们可以通过...

Node.js

Docker 是当下最流行的容器技术,最近稍稍研究了下如何使用 Docker 来创建一个 Node.js 项目的镜像。 此文抛砖引玉,大家可以来讨论一下关于 Docker 的一些知识与应用 :doge: 创建一个简单的 Node.js 应用 const express = require('express') const app = express() const PORT = 4000 app.get('/', (req, res) => {...

Front-end

最近由於一些原因,要使用 Canvas 來繪製一些內容,也算是正好學習以下這門技術,順便在此分享一二。 下文中的示例代碼均不包含以下初始化的代碼 ﹣﹣ 獲取節點、創建 Canvas 的上下文: var app = document.getElementById('app'); var ctx = app.getContext('2d'); 繪製線條 線條其實是通過當前繪製的線路,然後填充使用指定的 strokeStyle 進行填充: // 指定畫布中的起點 ctx.moveTo(0, 0); ctx.lineTo(40, 40); ctx.strokeStyle = '#ccc'; ctx.stroke();...

Fresh

前几天围观了 Ruff 1.0 在微信群里线上发布会,感觉是个很有意思的东西。 Ruff 给出的口号是「现代 JavaScript 开发硬件」,作为一名每天使用 JavaScript 编码的程序员自然对其很感兴趣了。 值得注意的是 Ruff 是一个 JavaScript runtime,而非一块开发板的名称。 开箱 Ruff 的包装 开发板 附赠的套件 开始使用 学习使用 Ruff 可以完全参照官方的文档:Ruff - 起步走 配置环境 Ruff 1.0 的环境搭建是以下载...

Writing

最近正在准备在 Gitbook 上编写自己的第二本开源书籍,主要是关于 React 的,于是突然想到去 GitBook 上看看之前写的《Node.js 实战》的阅读数据,以下是近一年的访问数据: 这个数据在我自己看来是十分满意的,在没有任何宣传的前提下,一年时间内UV 达到了4251,而一个月之内的 PV 也在2000左右。之后也会逐渐更新这本书中的内容,并适量添加一些新的内容、章节,跟上技术进步的节奏。 GitBook GitBook 这个平台是十分值得推荐的,简单列举一些我感受到的优点: 使用 Markdown 编辑,根据一定的规则可以生成书籍目录以及多语言版本 可以关联任何 Git 仓库,通过 webhook 在 Push 的时候自动生成新一版本的书籍 提供了体验比较不错的在线和桌面版本的编辑器 不需要额外诸如 GA 的统计工具 免费版本的计划可以供作者编写一本私有书籍,这对大部分作者而言都已经完全足够,毕竟选择这个平台更多的是选择编辑开源的书籍。...

Life

总算是来到了这一年的末尾,上一次写年终总结还是在2012年 - A boring summary of 2012。 简略的总结一下逝去的2015。 工作 从实质上来讲,工作并没有发生任何变化;但是细细想来,却已经天翻地覆。 15年初时,我从待了将近两年的无线中心到了现在的渠道事业部。虽然「拥抱变化」是我司永恒的主题,但是过多的变化反而显著的降低了各种人效,还有当年无线团队一姐所说的「团队归属感」。 但这一变动带来的技术变更却是我最欣喜的。 简单来讲,就是从一个纯粹的前端工程师升级为了 Node.js+前端开发,甚至到快年末的时候着手用 ReactNative 编写我们部门的 iOS App。 下面稍微列举一下今年所做的工作: 年初的时候在三周内(没记错的话)使用 Express + MySQL 以及各种前端技术完成我司微店的第一期功能。 值得一提的是,当时只有我和现在部门的研发经理(人称 XP)参与的开发 — 事实上还包括了需求文档、原型图(我用 Sketch 画的)和开发文档的编写。...