JS

  • 为什么

    关于回调、异步与生成器,网上的文章已经很多了,而且很久以前我也写过类似的一篇 #49 。
    为什么现在还要写这个呢?
    原因:最近我在看《你不知道的JavaScript中卷》,发现书中一些少有且独特的观点,是我以往所不知道的,也是已有文章很少提到的,所以便有了此文。
    (注:本文观点绝大多数来自于《你不知道的JavaScript中卷》第二部分的第1、2、4章,经二次演绎而成。强烈推荐阅读《你不知道的JavaScript》系列书,绝对的不容错过。)

    阅读前请确保熟悉以下概念:

    1. JS事件循环
    2. generator
    3. promise
    4. TJ写的co库
    5. ES7 stage2的async

    回调不仅仅是代



  • 刚刚开始接触babel的时候,是在用webpack打包的时候使用的,比如这样子。
    2015-12-18 3 44 42

    后来因为要编译Object.assgin(这里还踩过一次坑,见 #3 ),把所有babel参数提出来放在.babelrc文件中,比如像这样就可以了。

    .babelrl 文件
    {
      "presets":["react","es2015","stage-0"],
      "plugins": ["transform-object-assign"]
    }
    

  • 起因

    最近在看一些node项目的时候发现里面用到了ES6的generator函数,yield和tj的co库,花了一些时间搞明白它们之间的关系,下面用一些例子说明。

    溯源

    对于异步的操作,最常规的写法是回调函数,但是深度回调会出现可怕的金字塔。那么,如何用更好的书写方式来避免金字塔,又或者说,怎么样把异步的代码写得看起来好像同步那样子呢?
    其中一种解决方案是promise模式,.then一直then下去。ok,从ES6开始,有两个新的特性,叫generator和yield,借助它们,我们能够更优雅地解决这个问题。

    generator和yield简介

    请看下面的代码

    function* Hello

  • 问题

    使用babel有一段时间了,但是一直没有仔细研究。上回在前端使用async解决回调的时候出现问题,后来引入了babel-polyfill才解决,其实那时候不太懂为什么一定要这么搞。今天趁着有时间再次通读了一边babel官网的文档,觉得很多问题比原先想得明白了。

    babel5 VS babel6

    babel是一个转换器,或者准确的说,babel5是一个转换器,babel6是一个容纳其他转换插件的容器。因为从babel6开始babel本身就不完成任何转换功能,所有功能都插件化了,意味着你除了安装babel6以外,还需要安装其他插件才能干活。

    语法与api

    我以前一直以为装了babel之后所有

  • 为什么

    最近参考requirejs的API,自己动手实现了一个简单的异步模块加载器fake-requirejs。

    为什么要做这样一个东西呢?
    原因是:我一直觉得自己对模块化这方面的理解不够深入,即便用了很长时间的webpack,看了很多模块化相关的资料,比如模块化的发展历史,比如amd,commonjs和cmd规范之争等等。然而,我依然觉得自己的理解流于表面,所以决定自己动手实现一个。

    目标的选择:本来一开始的目标是webpack的,但是后来考虑到webpack是建立在模块化基础上的一个构建工具,且webpack的实现也相当的复杂,而我希望能够刻意区分开模块化和构建这两个概念。因为这有助于我集