如果你对JavaScript的理解仅限于DOM操纵,页面动画等等,本列表将为你展现JavaScript更多的功能。本列表是一些优秀的网络资源的汇总,部分资料需要翻墙访问。
- Eloquent JavaScript Online Book
- Speaking JavaScript: An In-Depth Guide for Programmers
- JavaScript高级程序设计,第三版
- JavaScript秘密花园
- 阮一峰: JavaScript 标准参考教程
- 关于一些前端JS框架的源码研究
Basic Knowledge
- 美团:抽象语法树在JavaScript中的应用
- 轻松搞定JavaScript预解析机制
- JavaScript编译运行原理
- SlideShare: JavaScript: Abstract Syntax Tree
- SlideShare: Esprima, what is that
Tools
- SpiderMonkey: Reflect.parse - Mozilla's Parser API
- Esprima: most popular ECMAScript parser in JS
- Acorn - faster alternative ECMAScript parser in JS
- UglifyJS - has own parser with custom AST format
Esprima解析得到的抽象语法树AST遵循SpiderMonkey的API。
Helpers
- Esprima Online Parser
- ESLint - The pluggable linting utility for JavaScript and JSX
- aster - AST-based code builder
Tutorial
- Esprima tutorial
- Fun with Esprima and Static Analysis
- Parsing and modifying JavaScript code with Esprima and Scodegen
- Browser-side: bluebird, a full featured promise library
- Nodejs-side: co - he ultimate generator based flow-control goodness for nodejs (supports thunks, promises, etc)
Reading
- 从零开始实现一个JavaScript模块化加载器
- Eloquent JavaScript, chapter 10, Modules
- 详解JavaScript模块化开发
- 图文:SeaJS与RequireJS最大的区别
- 模块化开发,SeaJS简单总结
- Why AMD?
- 百度EFE:玩转AMD
- 异步模块定义AMD API中文版
- CommonJS规范 中文版
- RequireJS in Node
Tutorial
- Understanding RequireJS for Effective JavaScript Module Loading
- Writing Modular JavaScript With AMD, CommonJS & ES Harmony
- Object.create()
- Object.defineProperty
- getter
- setter
- 严格模式
- JSON
- Array.prototype.map()
- Array.prototype.filter()
- Learn ES2015, a detailed overview of ECMASCRIPT 6 features
- 阮一峰: ECMAScript 6入门
- Exploring ES6: Upgrade to the next version of JavaScript
- InfoQ专栏:深入浅出ES6
- Github: es6-shim, ECMAScript 6 (Harmony) compatibility shims for legacy JavaScript engines
- Babel is a JavaScript compiler.
- Github: Traceur, a JavaScript.next-to-JavaScript-of-today compiler
- Traceur REPL
- Babel REPL
- Github: grunt-traceur
- Github: gulp-traceur
- Github: broccoli-traceur
- Github: es6ify
- StackoverFlow: Differences between Babel and Traceur
- Youtube: ES6 Generator Tutorial
- The Basics Of ES6 Generators
- 学习ES6生成器
- Workshop: Learn Generators
- Book: Node.js In Action
- Node.js概述
- Eleoquent JavaScript, chapter 20, Node.js
- 七天学会Node.js
- Node.js Manual & Documentation
- Node.js Process对象
- Node编码规范
- ES6 on node.js
- 美团酒店Node全栈开发实践
Module fs
Module path
- Koajs - 下一代Node.js Web框架
- Koa中文文档
- PPT: Co and Koa Talk
- Getting Started With Koajs
- Koajs开发最佳实践
- Koajs中间件开发最佳实践和应用架构建议
- Why you should and shouln't use Koa
- Kick-Off-Koa - An intro to koa via a set of self-guided workshops
- Workshop - A workshop to learn the the basics of koa, Express's spiritual successor
- Koajs quick start guide
- WebStrom
- Visual Studio Code
- Visual Studio Community
Tutorial
If you use Github, just use Github for Windows; If you use Gitlab in a internal network, you can use TortoiseGit as a GUI tool for git.
- Youtube: TortoiseGit Tutorial