前言

因 前文 抽象语法树 AST 与 编译器 Compiler 整理了部分 抽象语法树 AST 与 编译器 Compiler 相关的内容,进一步地,会有一些问题产生:

  1. JavaScript 在浏览器是怎么执行的(或者说浏览器是怎么解析的)?
  2. JavaScript 为什么叫做解释型语言?
  3. 解析器、解释器、编译器 分别是什么?
  4. WebAssembly?

因而,找了以下一些文章:

阅读全文 »

babel 官方在 2018-08-27 发布了文章,babel 7 正式发布,距离 babel 6 相隔3年。

包含内容(官网cp):

  1. upgrade tool
  2. JavaScript 配置文件 babel.config.js
  3. 选择性的配置 overrides
  4. TC39 提案 支持 @babel/proposals
  5. jsx、typescript、flow 的支持
  6. Babel 辅助函数的变化
  7. 自动 Polyfill (试验) useBuiltins

详细内容可见:Babel 7 发布

此篇文章主要介绍 babel 7 相关 presetsplugins@babel 下其他所有的 packages、babel 其他工具、以及 babel 插件相关,即 babel 全套(包含部分流程上的源码链接)

至于 AST 抽象语法树相关可见另一文 抽象语法树-AST-与-编译器-Compiler 内容。

阅读全文 »

the-super-tiny-compiler / 超级微小的编译器

此部分 the-super-tiny-compiler / 超级微小的编译器 内容,均摘取自 the-super-tiny-compiler-CN,先看完 the-super-tiny-compiler-CN 才有看后续的意义。

概要

大部分编译器的工作可以被分解为三个主要阶段:解析(Parsing),转化(Transformation)以及 代码生成(Code Generation)

  1. 解析 将源代码转换为一个更抽象的形式。
  2. 转换 接受解析产生的抽象形式并且操纵这些抽象形式做任何编译器想让它们做的事。
  3. 代码生成 基于转换后的代码表现形式(code representation)生成目标代码。
阅读全文 »

大概介绍

  1. 浏览器端的前端打包工具
  2. 主要用于在浏览器中使用 npm 包,最终会转换为 commonJS (require) 类似方式,在浏览器使用
  3. 方便模块细分,每个模块自成,通过 require 引用其他模块
  4. 基于流 Stream
  5. 旧时代产物,尽管也能勉强处理 css(CSS bundlers),html(brfs),但是不太友好,且年久失修

阅读此篇,大概可以较好使用 browserify,以及将其用在合适的地方

此外,文中带 删除线 的内容,因相对的内容过时,阅读意义不大,可简单跳过

阅读全文 »

Ganache

主要功能为在本地启动一个以太坊私有网络,并在一开始,创建10个account,供开发者使用。

下载开箱即用 ganache

Truffle

官网介绍:以太坊智能合约开发、测试的一把瑞士军刀。

阅读全文 »