├── .gitattributes ├── .travis.yml ├── package.json ├── .editorconfig ├── .github ├── pull_request_template.md └── contributing.md ├── .gitignore ├── code-of-conduct.md └── readme.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 'node' 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "awesome-javascript-learning-ressources", 3 | "private": true, 4 | "scripts": { 5 | "test": "awesome-lint" 6 | }, 7 | "author": "Michael Kühnel", 8 | "devDependencies": { 9 | "awesome-lint": "^0.1.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | end_of_line = lf 8 | indent_style = space 9 | indent_size = 4 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | 14 | [*.md] 15 | trim_trailing_whitespace = false 16 | 17 | [*.yml] 18 | indent_size = 2 19 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | **By submitting this pull request, I promise I have read the [contribution guidelines](https://github.com/micromata/awesome-javascript-learning-resources/blob/master/.github/contributing.md) twice and ensured my submission follows it. I realize not doing so wastes the maintainers time that they could have spent making the world better. :octocat:** 2 | -------------------------------------------------------------------------------- /.github/contributing.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please note that this project is released with a [Contributor Code of Conduct](../code-of-conduct.md). By participating in this project you agree to abide by its terms. 4 | 5 | ## Guidelines 6 | 7 | We would like to keep the list small and focused to the best resources. Reason: We don’t want to frustrate people who like to learn JavaScript with a list that: 8 | 9 | - is too long to get through 10 | - offers too many possibilities 11 | 12 | Ensure your pull request adheres to the following guidelines, if you would like to add something that must be on that list: 13 | 14 | - Search previous suggestions before making a new one, as yours may be a duplicate. 15 | - If you just created something, wait at least a couple of weeks before submitting. 16 | - You should of course have read, watched or used the thing you're submitting. 17 | - Make an individual pull request for each suggestion. 18 | - Use the following format: `[name](link) - Description.` 19 | - Keep descriptions short and simple, but descriptive. 20 | - Start the description with a capital and end with a full stop/period. 21 | - Check your spelling and grammar. 22 | - Make sure your text editor is set to remove trailing whitespace. 23 | - Link additions should be added to the bottom of the relevant section. 24 | - New categories or improvements to the existing categorization are welcome. 25 | - Pull requests should have a useful title and include a link to the resource and why it should be included. 26 | 27 | Thank you for your suggestion! 28 | 29 | ### Updating your PR 30 | 31 | A lot of times, making a PR adhere to the standards above can be difficult. If the maintainers notice anything that we'd like changed, we'll ask you to edit your PR before we merge it. There's no need to open a new PR, just edit the existing one. If you're not sure how to do that, [here is a guide](https://github.com/RichardLitt/docs/blob/master/amending-a-commit-guide.md) on the different ways you can update your PR so that we can merge it. 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/windows,macos,linux 3 | 4 | ### Windows ### 5 | # Windows image file caches 6 | Thumbs.db 7 | ehthumbs.db 8 | 9 | # Folder config file 10 | Desktop.ini 11 | 12 | # Recycle Bin used on file shares 13 | $RECYCLE.BIN/ 14 | 15 | # Windows Installer files 16 | *.cab 17 | *.msi 18 | *.msm 19 | *.msp 20 | 21 | # Windows shortcuts 22 | *.lnk 23 | 24 | 25 | ### macOS ### 26 | *.DS_Store 27 | .AppleDouble 28 | .LSOverride 29 | 30 | # Icon must end with two \r 31 | Icon 32 | # Thumbnails 33 | ._* 34 | # Files that might appear in the root of a volume 35 | .DocumentRevisions-V100 36 | .fseventsd 37 | .Spotlight-V100 38 | .TemporaryItems 39 | .Trashes 40 | .VolumeIcon.icns 41 | .com.apple.timemachine.donotpresent 42 | # Directories potentially created on remote AFP share 43 | .AppleDB 44 | .AppleDesktop 45 | Network Trash Folder 46 | Temporary Items 47 | .apdisk 48 | 49 | 50 | ### Linux ### 51 | *~ 52 | 53 | # temporary files which can be created if a process still has a handle open of a deleted file 54 | .fuse_hidden* 55 | 56 | # KDE directory preferences 57 | .directory 58 | 59 | # Linux trash folder which might appear on any partition or disk 60 | .Trash-* 61 | 62 | # .nfs files are created when an open file is removed but is still being accessed 63 | .nfs* 64 | 65 | ### Node ### 66 | # Logs 67 | logs 68 | *.log 69 | npm-debug.log* 70 | 71 | # Runtime data 72 | pids 73 | *.pid 74 | *.seed 75 | *.pid.lock 76 | 77 | # Directory for instrumented libs generated by jscoverage/JSCover 78 | lib-cov 79 | 80 | # Coverage directory used by tools like istanbul 81 | coverage 82 | 83 | # nyc test coverage 84 | .nyc_output 85 | 86 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 87 | .grunt 88 | 89 | # node-waf configuration 90 | .lock-wscript 91 | 92 | # Compiled binary addons (http://nodejs.org/api/addons.html) 93 | build/Release 94 | 95 | # Dependency directories 96 | node_modules 97 | jspm_packages 98 | 99 | # Optional npm cache directory 100 | .npm 101 | 102 | # Optional eslint cache 103 | .eslintcache 104 | 105 | # Optional REPL history 106 | .node_repl_history 107 | 108 | # Output of 'npm pack' 109 | *.tgz 110 | 111 | # Yarn Integrity file 112 | .yarn-integrity 113 | -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at mail@michael-kuehnel.de. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at [http://contributor-covenant.org/version/1/4][version] 72 | 73 | [homepage]: http://contributor-covenant.org 74 | [version]: http://contributor-covenant.org/version/1/4/ 75 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Awesome JavaScript Learning [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) JS Logo 2 | 3 | > An awesome list limited to the best JavaScript learning resources 4 | 5 | This list is mainly about JavaScript – the language. Not about APIs, tooling, frameworks or other aspects of todays JavaScript ecosystem. 6 | 7 | *Please read the [contribution guidelines](.github/contributing.md) before contributing.* 8 | 9 | ## Contents 10 | 11 | - [JavaScript References](#javascript-references) 12 | - [Tutorials](#tutorials) 13 | - [Free eBooks](#free-ebooks) 14 | - [Books](#books) 15 | - [Blogs](#blogs) 16 | - [Videos](#videos) 17 | - [Interactive learning](#interactive-learning) 18 | - [ES6 and above](#es6-and-above) 19 | - [DOM related](#dom-related) 20 | - [Node.js](#nodejs) 21 | 22 | --- 23 | 24 | ## JavaScript References 25 | 26 | - [MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference) - Simply the best language reference. 27 | - [DevDocs](http://devdocs.io/javascript) - Search MDN comfortably. Even offline. 28 | - [Simplified JavaScript Jargon](http://jargon.js.org) – Glossary which explains all the buzzwords from the JavaScript eco system. 29 | - [ECMAScript® Language Specification](http://ecma-international.org/publications/standards/Ecma-262.htm) - The standard JavaScript is based on. Only for very advanced learners. 30 | 31 | ## Tutorials 32 | 33 | - [MDN JavaScript Guide](https://developer.mozilla.org/docs/Web/JavaScript/Guide) - Tutorials covering language basics. 34 | - [JavaScript Closures Demystified](https://www.sitepoint.com/javascript-closures-demystified/) – Covering closures. From basics to use cases. Has useful comments. 35 | - [Promises](http://www.sohamkamani.com/blog/2016/08/28/incremenal-tutorial-to-promises/) - Learning promises step by step. 36 | - [Array operations](https://danmartensen.svbtle.com/javascripts-map-reduce-and-filter) - Covering the usefulness of Array’s map, reduce, and filter methods. 37 | - [Async functions](https://developers.google.com/web/fundamentals/getting-started/primers/async-functions) - Shows how to use async functions to make promises friendly. 38 | - [Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools/) - Everything you need to know about the debugging tools built into Google Chrome. 39 | - [Pure functions](https://medium.com/javascript-scene/master-the-javascript-interview-what-is-a-pure-function-d1c076bec976) - Answers the question »What is a Pure Function?« epicly. 40 | 41 | ## Free eBooks 42 | 43 | - [Eloquent JavaScript](http://eloquentjavascript.net) – Covering the language and runtime specifics. 44 | - [You Don't Know JS (book series)](https://github.com/getify/You-Dont-Know-JS) – Series of books diving deep into language. 45 | - [Speaking JavaScript](http://speakingjs.com) - In-depth guide beginning with the basics. 46 | - [JavaScript Design Patterns](http://addyosmani.com/resources/essentialjsdesignpatterns/book/) - Classical and JavaScript specific design patterns. 47 | 48 | ## Books 49 | 50 | Thin books which you can get through in a few days. 51 | 52 | - [JavaScript: The Good Parts](http://shop.oreilly.com/product/9780596517748.do) – Classic material which still has relevance. 53 | - [The Principles of Object-Oriented JavaScript](https://www.nostarch.com/oojs) – Comprehensible, especially interesting for people with a class based OOP background. 54 | - [JavaScript Enlightenment](http://shop.oreilly.com/product/0636920027713.do) - Will solidify your understanding of the language. 55 | 56 | ## Blogs 57 | - [②ality](http://www.2ality.com) - Language features and APIs well explained by author and trainer Dr. Axel Rauschmayer. 58 | - [Pony Foo](https://ponyfoo.com) - Detailed and high quality posts from Nicolás Bevacqua all related to JavaScript. 59 | 60 | ## Videos 61 | 62 | - [== ? === ??? ...#@^%](https://www.youtube.com/watch?v=qGyqzN0bjhc) - Basic talk about type coercion and strict type comparison. 63 | - [FunFunFunction](https://www.youtube.com/mpjmevideos) - Educational plus entertaining YouTube show covering language features as well as architectural topics amongst others. 64 | - [What the heck is the event loop anyway?](https://www.youtube.com/watch?v=8aGhZQkoFbQ) - Awesome talk about the way JavaScript works. 65 | - [Become a Javascript Console Power-User](https://www.youtube.com/watch?v=4mf_yNLlgic) – Introduction to the browsers JavaScript console. 66 | - [Debugging The Web](https://www.youtube.com/watch?v=HF1luRD4Qmk) - Learn state of the art in debugging using Chrome dev tools. 67 | - [JavaScript 30](https://javascript30.com) - 30 video tutorials to build neat little things with just plain JavaScript. 68 | - [Promises Are So Passé](https://vimeo.com/181328943) - Talk that shows where async goes next, why it matters, and what you need to do to put it into practice today. 69 | - [Learning Functional Programming with JavaScript](https://www.youtube.com/watch?v=e-5obm1G_FY) - Talk containing the best explanation of map/reduce. 70 | 71 | ## Interactive learning 72 | - [Codeacademy](https://www.codecademy.com/learn/javascript) - Fundamentals of JavaScript. 73 | - [Udacity JavaScript Basics](https://www.udacity.com/course/javascript-basics--ud804) - They also offer more advanced courses. 74 | - [Code School](https://www.codeschool.com/learn/javascript) - From Basics to Best Practices. Different courses related to JavaScript. 75 | - [Functional programming](http://reactivex.io/learnrx/) - Learn basic principles of functional programming in an interactive way by using map, filter, concatAll, reduce and zip. 76 | 77 | ## ES6 and above 78 | 79 | - [Exploring ES6](http://exploringjs.com/es6.html) – Good introduction with in-depth chapters. 80 | - [Exploring ES2016 and ES2017](http://exploringjs.com/es2016-es2017.html) - Follow up of »Exploring ES6«. 81 | - [Setting up ES6](http://exploringjs.com/setting-up-es6.html) - Explains how to set up ES6 projects that are transpiled to ES5. 82 | - [ES6 Overview](https://ponyfoo.com/articles/es6) - Bullet point overview including in-depth articles. 83 | - [ES6 Katas](http://es6katas.org) - Learn ES6 by solving unit test online. 84 | 85 | ## DOM related 86 | 87 | - [DOM Enlightenment](http://domenlightenment.com) - A whole book about how to access an manipulate the DOM without a library. 88 | - [You Might Not Need jQuery](http://youmightnotneedjquery.com) - Get plain JavaScript code snippets (and see their jQuery equivalents). 89 | 90 | ## Node.js 91 | 92 | - [The Art of Node](https://github.com/maxogden/art-of-node#readme) - Introductory tutorial covering the basics. 93 | - [NodeSchool](https://nodeschool.io) - Interactive self guided workshops you can also do on your own. 94 | - [Node Patterns](http://nodepatternsbooks.com) - Short books about code and networking patterns related to Node.js. 95 | 96 | ## License 97 | 98 | [![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/) 99 | 100 | To the extent possible under law, [Michael Kühnel](http://micromata.de) has waived all copyright and related or neighboring rights to this work. 101 | --------------------------------------------------------------------------------