简单谈谈目前 (2017 年 10 月), Node.js 对 ESM (ES6 Module) 的支持情况,并且发表一点自己的看法。
主流的方案
- 在文件开头添加
"use module";
或类似字段 - 新的文件后缀名,如
.mjs
- 通过源代码内容自动区分
- 在
package.json
指明采用ESM
的文件
这里的 DefaultDict
指的是类似于 Python 中的 defaultdict
的一种类。其基本特点就是当某个属性不存在于该对象中时,该对象会自动为这个属性创建一个默认值。这个默认值是由用户在创建 DefaultDict
时指定的。
举个例子,现在需要一个对象,如果某个属性不在这个对象时,在为这个属性赋值为 0.
howdoi – 一款通过命令行帮你从 stackoverflow 中寻找答案的工具,其源代码部分不足 300 行。同时,这份代码被 The Hitchhiker’s Guide to Python! 推荐为适合新手源码阅读的代码。因此,在读完源码后,我分享一下我对这份代码的理解。
这里采用的版本是 tree 中标号为 d84afdee60 的那一版
简单的说, CPython
是 Python 解释器的一个实现。换句话说,Python 解释器是由 C 写的,然后由 GCC 之类的编译器编译而成的可执行文件。除了 CPython,还有 PyPy(用 Python 实现的 Python 解释器),Skulpt(用 JavaScript 实现的 Python 解释器) 等等。如果你不知道你用的是哪一个,那么你一定用的就是 CPython。因为 CPython 是 Python 官方的解释器实现,其它均属于第三方实现。
对于从 Python 源码到解释器执行它们的这个过程,我把它分为两大步 —— 编译(Compiling) 与 解释(Interpreting)。
之前用的主题是基于 landscape, 虽然这确实是一个不错的主题,使用上也没什么不便,但毕竟这是一个他人贡献的主题。我一直想试着自己做一个主题。之前也尝试在 landscape 上改,修改了一些颜色,对 CSS 做了一些简单修改,但布局没变,整体一眼还是能看出这是 landscape,并且因为我当时不熟悉 EJS 模板,对 Sass 及 CSS3 不是特别熟悉,所以有些功能的实现也完全不知道怎么做,比如一些透明效果的动画。
最近一段时间,相对以前来说稍微不忙了点,所以趁这个机会试着做一个主题了。