JavaScript是一个仅在一周就被发明出来的小玩意,所以,它有着有多的缺陷,即使是这样,它已经存在了20年,全世界几乎每台电脑都至少装有一个JavaScript解释器,况且今天这个当初的小玩意的目标是编写大型的企业应用。如果你对JavaScript的理解仅限于DOM操纵,页面动画,jQuery等等,本列表将为你展现JavaScript的更多的令人震撼的功能。
这份列表是一些优秀的网络资源的汇总,部分资源可能需要翻墙(梯子访问。本列表不追求大而全,而追求寻找那些对JavaScript中的某些知识点有着独到见解的网络资源,希望这些资料的汇集能够为您在寻找类似资料的时候带来一点便利。
- Eloquent JavaScript Online Book
- Speaking JavaScript: An In-Depth Guide for Programmers
- JavaScript高级程序设计,第三版
- JavaScript秘密花园
- JavaScript精粹
- 阮一峰: JavaScript 标准参考教程
Basic Knowledge
- 美团:抽象语法树在JavaScript中的应用
- 轻松搞定JavaScript预解析机制
- JavaScript编译运行原理
- PPT: Building JavaScript Tools
- 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
- Estraverse - taraverse and update the AST
- Escodegen - generates code from an AST
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
- PPT:JavaScript 模块化七日谈
- 从零开始实现一个JavaScript模块化加载器
- Eloquent JavaScript, chapter 10, Modules
- 详解JavaScript模块化开发
- 图文:SeaJS与RequireJS最大的区别
- 模块化开发,SeaJS简单总结
- Why AMD?
- 百度EFE:玩转AMD
- 异步模块定义AMD API中文版
- CommonJS规范 中文版
- RequireJS in Node
- 前端模块及依赖管理的新选择:Browserify
- Browserify Handbook
- 前端工程与模块化框架
- 前端模块化开发那点事
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()
Reading
- Online Book: React and Webpack
- 颠覆式前端UI开发框架:React
- ReactJS傻瓜教程
- React: Create maintainable, high-performance UI components
- Navigating the React Ecosystem
- Flux: An Application Architecture for React
- Smart and Dumb Components
- Container Components
- React 入门教程
- Thinking in React
- An opinionated guide to React.js best practices and conventions
- Best practices for building large React applications
- From AngularJS to React: The Isomorphic Way
- React组件生命周期
InfoQ: React-in-depth
Flux
- Flux傻瓜教程
- What is the Flux Application Architecture?
- 结合React, Flux & WebComponents
- Flux solutions compared by example
- Beyond the to-do app: writing complex applications using Flux & ReactJS
- Flux React Router Example
Libraies
- React: complementatry tools
- React-Bootstrap: css framework
- React-Router: routing in react app
- formsy-react: a form input builder and validator for React JS
Tutorial
- React.js Introduction For People Who Know Just Enough jQuery To Get By
- Building The Facebook News Feed With Relay
- React.js Starter Kit
- Flux Quick Start: manage data and state for react app
- Getting started with Facebook's React.js
- Youtube: Trying webpack with React.js
- React with WebPack - part 1
- 基于ES6,使用React、Webpack、Babel构建模块化JavaScript应用
- PPT: Going Isomorphic with React
- Isomorphic JavaScript: The Future of Web Apps
- 在服务器端渲染React组件
- Serverside Reat Rendering: Isomorhpic JavaScript with ReactJS + Node
- 使用ReactJS + Node实现服务器端响应渲染
- Creating Isomorphic Apps with Node.js, React, and Express
- Learn ES2015, a detailed overview of ECMASCRIPT 6 features
- 阮一峰: ECMAScript 6入门
- Exploring ES6: Upgrade to the next version of JavaScript
- InfoQ专栏:深入浅出ES6(更新中)
- Mozilla: ES6 in Depth
- Gettting started with ECMAScript
- 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
- Iterators gonna iterate
- Youtube: ES6 Generator Tutorial
- The Basics Of ES6 Generators
- 学习ES6生成器
- Workshop: Learn Generators
- ECMAScript 2015: Generators and Iterators
- Book: Node.js In Action
- Node.js概述
- List: Awesome nodejs
- Eleoquent JavaScript, chapter 20, Node.js
- 七天学会Node.js
- Node.js Manual & Documentation
- Node.js Process对象
- Node编码规范
- ES6 on node.js
- 美团酒店Node全栈开发实践
- 阮一峰:require() 源码解读
- Online Book: stream-book, teach you how to write node.js programs with streams
- GraphQL Overview - Getting Started with GraphQL and Node.js
- Reading: Building With Node.js At eBay
- Building a GraphQL Server with Node.js and SQL
Module fs
- fs模块简介
- How do I write files in node.js?
- Create Simple Text File in Node.js Using 'fs' Module
- Making directory along with missing parents in Node.js
Module path
Module events
- How to Build an npm Package
- A Facade for Tooling with NPM Package Scripts
- How to Use npm as a Build Tool
- How npm handles the "scripts" field
- 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
- Github: node-mysql
- Node.js MySql Tutorial
- sitepoint: Using MySql with Node.js & the node-mysql JavaScript Client
- Jade - a Node Template Engine, Language Reference
- Jade Syntax Documentation
- WebStrom
- Visual Studio Code
- Visual Studio Community
Tutorial
Build Tools
Reading
- PPT: Build Wars
- The State of JS Build Tools 2015
- Gulp vs Grunt. Why one? Why the Other?
- Grunt vs Gulp - Beyond the Numbers
- 腾讯:Browserify运行原理分析
- Getting started with webpack
- WebPack怎么用
- github: webpack-howto: a simple cookbook
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