以下为本书 2016 年 10 月第 1 版的勘误列表,欢迎提交 PR 进行补充,帮助其他读者。
第118页 Flux整个流程图 VIEW文字描述 一旦change事件被处罚 应该是一旦change事件被触发
第一段示例代码:单引号错误,另 console.log
的参数应该是 a
。勘正后为:
if (true) {
let a = 'name';
}
console.log(a);
// ReferenceError: a is not defined
第一段代码示例:结果错误 这里的 this.age 在setTimeout中应该是 undefined。
let age = 2;
let kitty = {
age: 1,
grow: function() {
setTimeout(function() {
console.log(++this.age);
}, 100);
}
};
kitty.grow();
// 3
应修改为 var age =2;
因为:
At the top level of programs and functions, let, unlike var, does not create a property on the global object.
但是这段代码在 babel 编译后可以正常运行,所以笔者出现了这个错误。原因是 Babel 编译后并没有对这个特性没有特殊的处理。
附代码 Babel 编译后的结果:
"use strict";
var age = 2;
var kitty = {
age: 1,
grow: function grow() {
setTimeout(function () {
console.log(++this.age);
}, 100);
}
};
kitty.grow();
代码示例中的变量名 name
错误书写成 viking
,即,
var a = 'My name is ' + viking + '!';
应为
var a = 'My name is ' + name + '!';
在类Dog中 注释 super.写成 super()., 即:
//但是可以采用super(). +方法调用父类方法
应为
//但是可以采用super. +方法调用父类方法
在Gruntfile.js中 loadNpmTasks写成了loadnpmTasks, 即:
//将两个任务插件导入
grunt.loadnpmTasks('grunt-contrib-uglify');
grunt.loadnpmTasks('grunt-contrib-jshint');
应为
//将两个任务插件导入
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
来简单介绍一下这个命令, mocha也可以使用编译器编译 javascript 代码,这里使用 babel 这个编译器,因为现在代码的格式都是ES6的,而由于 Webpack 允许直接在代码中 import 样式文件,例如 import './style.scss' 这种格式的代码,如果直接用 mocha 来运行这类的代码,会直接报错,因为 babel 无法解析这类 CSS 代码,所以需要一个插件来忽略掉这类型的代码。这插件就是 ignore-styles 。简单来说运行 mocha 的时候可以接受这类型的参数:--compilers 指的是指定文件格式的预编译器,而 --require 指的是运行测试之前需要引入的一些辅助插件。
在该段后面应该添加:
特别注意,在windows环境下该命令应该为:"test": "set NODE_ENV=production && mocha --compilers js:babel-core/register --require ignore-styles"
在项目根目录新建一个 *webpack.config.js* 的文件。
应该修改为: 在项目根目录新建app文件夹,同时再新建一个 webpack.config.js 的文件。
代码中 app: path.resolve(APP_PATH, 'index.jsx')
应该修改为: app: path.resolve(APP_PATH, 'app.jsx')
复习一下上一章的知识,把 app 文件夹中的 index.jsx 作为入口,
应该修改为: 复习一下上一章的知识,把 app 文件夹中的 app.jsx 作为入口,
2. redux-promise-middleware
部分,第二段示例代码,首行注释中的文件位置 chapter5/part2/app/reducers/entries/list.js
,应该修改为: chapter6/part2/app/reducers/entries/list.js