Learn | JavaScript: Behavioral Layer
Standards Based Development
One day framework dragons descended on the land, enslaving inhabitants and ravaging models. The model songs, once all keyed in F major, became never-ending vamps over B flat augmented arpeggios.
http://odetocode.com/blogs/scott/archive/2012/02/27/plain-old-javascript.aspx, pojo - Plain Old JavaScript, @OdeToCode
References and Resources
Open Source JavaScript Books, Literature, ebooks, etc.
- JavaScript Book - JavaScript and jQuery - Interactive Frontend Development
- Free Programming Books on Github
- r/learnprogramming/wiki/books
- JavaScript Allongé - A strong cup of functions, objects, combinators, and decorators
- JSbooks - The best free JavaScript resources
- Eloquent JavaScript is a book that doesn’t only teach you JavaScript, but also the basics of programming. It is a great read for those who don’t have much experience with writing code.
- Essential JavaScript Design Patterns
- JavaScript-Enlightenment is a book that covers advanced concepts like closures, prototypes, complex values, inheritance and more. It is intended to be a short and digestible summary of the language.
- Dom Enlightenment is from the same author, and gives you a deep understanding of the relationship between JavaScript and the DOM. The examples will show you the powerful functionality jQuery uses behind the scenes to make your life easier.
- Single Page Web Apps in Depth is a book that teaches you how to make your application feel almost native. You will learn about implementing collections, models and views in JS, synchronizing them with your backend, and writing maintainable code.
- Learning JavaScript Design Patterns is a book that explores applying well-known design patterns in the software development world to JavaScript applications.
- Patterns for Large-Scale JavaScript Applications is a more complex book that focuses specifically on organizing large code bases. Suitable only for experienced JS developers.
- Programming Windows 8 Apps with HTML, CSS, and JavaScript (First Preview)
- JavaScript Bible (PDF)
- JavaScript Applications - O'Reilly Programming
- JavaScript - syncfusion
- Managing Space and Time with JavaScript - Book 1: The Basics
- AngularJS in 60 Minutes (PDF)
- jQuery - syncfusion
- Knockout.js - syncfusion
- jQuery Fundamentals is a must-read book for every jQuery beginner. It explains in depth all the major jQuery features, and has easy to understand examples that you can run directly in your browser.
- jQuery Succinctly is a book that has been written to express the concepts essential to intermediate and advanced jQuery development. This is the perfect next step after the jQuery Fundamentals book above.
- Interactive Data Visualization for the Web (D3)
- Mastering Node.js
- Mixu's Node Book
- The Node Beginner Book
- Up and Running with Node
- Sam's Teach Yourself Node.js in 24 Hours Sample Chapter and Code
json-ishy Free ebooks
community.js
- node-meatspace - node.js community resource for encouraging and promoting in-person events
- JSConf
- @JSMafia Twitter list
- beer.js
Glossary
- pojo (Plain Old JavaScript Object)
pojo was coined by @odetocode, when he said "pojo - Plain Old JavaScript" in reference to using JavaScript as-is, out-the-box, aka Vanillajs via @OdeToCode
You Don't Know js - Scope and Closures demo code
Speaking JavaScript
ocr.js
Daily.js Featured Series
- js101 New to JavaScript? Get started here.
- Let's Make a Framework Learn how client-side frameworks are built, and then build your own.
- Let's Make a Web App Build a Node web app.
- History of JavaScript Find out who created JavaScript, and why.
JavaScript: All the Things....aka Atwood's Law
- Moon.js - Apollo Guidance Computer Simulator
- https://crypto.cat - Easy to use encrypted instant messaging built on modern web technologies
Openjdk
is the place to collaborate on an open-source implementation of the Java Platform, Standard Edition, and related projects.
Jjsmafia opml - JavaScript Feeds, Atom Feeds, Podcasts, etc.
- http://feeds.feedburner.com/OdeToCode
- http://taritsyn.wordpress.com/feed/
- dzone javascript tagged links feed
- JavaScript Content on InfoQ
- InfoQ JavaScript Content feed
- https://blog.mozilla.org/javascript/feed/
Frameworks and Libraries
Comparisons, Contrasts, Pros/Cons, etc.
tv.js
Learn JavaScript>/a>
- Learn JavaScript - Mozilla Developer Network (MDN)
- JavaScript Guide - Succint Overview of JavaScript (MDN)
- Getting Started with JavaScript - MDN
- A Re-Introduction to JavaScript - MDN
- Introduction to Object-Oriented JavaScript - MDN
- JavaScript Best Practices - dev.opera
- JavaScript - Web Platform
- First Look at JavaScript - dev.opera
- JavaScript Uses - dev.opera
- JavaScript Best Practices - dev.opera
- JavaScript for Cats
- JavaScript | Microsoft Developer Network (msdn)
- JavaScript Fundamentals | msdn
- Advanced JavaScript | msdn
- Introduction to Regular Expressions (JavaScript) | msdn
- JavaScript Language Reference | msdn
- JavaScript Reference - dottoro
- Project Euler Practice Problems
- irc
#learnjavascriptwebchat - Unobtrusive JavaScript
- Unobtrusive JavaScript - dev.opera
- JavaScript Functions - dev.opera
- Programming: The Real Basics
- JavaScript Garden - a site with helpful information about the more esoteric parts of JavaScript
- Beginning JavaScript
- JSDataviz Intro
dom
JavaScript and Java - References and Resources
JavaScript is to Java, as Ham is to Hamburger
Jeremy Keith
- Invoking Applet Methods From JavaScript Code
- Data Summary Applet Example - Invoking JavaScript From Java Applet
- Invoking JavaScript Code From an Applet
JavaScript Promises
Audio
Podcasts
- Shoptalk Show
- JavaScript Show
- JavaScriptJabber
- Herding Code
- This Developer’s life
- FaceOff Show
- DeepFriedBytes
Style Guides
Professional JavaScript
- idomatic.js
- sizzle.js Google Group
- JS Platform
- wtf.js
- Ain't No Party Like a Third-Party JS Party - @rmurphey sd jQcom
- You Don't Know JS
- You Don't Know JS Kickstarter
- JS Platform Repository
- WebRTC node.js Stack - JS Platform
- edison.js - parent-child router for single-page applications
- Full Stack Through Microservices
- Writing Testable JavaScript
- Badass.js
- Always Bet on JS
- Let's Code: Test-Driven JavaScript
- Idiomatic.js - Principles of Consistent, Idiomatic JavaScript
- JSPatterns - exploring common JavaScript patterns and anti-patterns
- JavaScript Patterns (shichuan
- js Design Patterns
- js Patterns
- Introduction to Developing Fireworks Extensions: They're Just JavaScript
- Functional JavaScript
- Lesser Known JavaScript Debugging Techniques
- Learning JavaScript Design Patterns
- Patterns For Large-Scale JavaScript Development
- Writing Modular JavaScript With AMD, CJS & Harmony
Adobe.js
Adobe Scripting
Photoshop Scripting
- Photoshop Scripting Forum
- Deco Scripted Patterns in Photoshop
- Adobe Photoshop Scripting
- Photoshop Scripts
- Scripting Photoshop with JavaScript Build Tools ?????
- gulp.js
- grunt
- yeoman
- aura.js - A scalable, event-driven JavaScript architecture for developing component-based applications
- aura.js
- aura.js canonical examples
- JS - The Right Way
- JS Code Retreat 2
- The Four Layers of JavaScript OOP
- Resources for Leveluping Up Your JavaScript-Fu
- rye.js - Rye is a lightweight javascript library for DOM manipulation and events with support for all modern browsers, including IE9+. It has support for touch events/gestures, an event emitter, isolated DOM events and more
- Indestructible Twitter Streams with node.js
- JavaScript Exercises via MappingKat
- Curriculum for JumpStartLab
- Tutorials on JumpStartLab
- DS 2014 JavaScript Sessions
- Transitioning to JavaScript
- JSGeo
- How Do Various JavaScript Mapping Libraries Compare?
- JavaScript for Cats Empire.js Talk
- drip of javascript google group
- A Drip of JavaScript - One Quick JavaScript Tip, Delivered to Your Inbox Weekly
- Zepto.js: the aerogel-weight jQuery-compatible JavaScript library - aka mobile library
- Code Forces
- ec6 Draft
- BitConfig: Search, Select, Configure, and Share Select jQuery Plugins with BitConfig Community
- JavaScript Tags on esri's Blog
- JavaScript Tags on Data Science &45; StackExchange
- viewer.js - documents. on your site. now.
- pdf.js
- impact.js
- tracking.js - change the way you interact with your browser
- https://github.com/jrburke/talk-vanjs-201311-modules
- 2013 Cascadia.js Github
- AngularJS vs Knockout.js
- A Comparision of Angular, Backbone, CanJS, and Ember
- Gulp vs. Grunt - Presentation Build Wars
- Backbone and Angular - Demystifying the Myths
- How to Learn Angular
- thinkster.io A better way to learn AngularJS.
- AngularJS Repository
- Optimizing AngularJS: source now on Github
- AngularJS Performance with Large Lists
- The Battle of Modern JavaScript Frameworks Part IV: Angular
- AngularJS: Simple Example Post Data to a Page in php
- backbone.js
- Backbone.js Plugins
- Developing Backbone.js Applications
- A Complete guide for learning Backbone.js
- Backbonejs Tutorials
- A pragmatic guide to Backbone.js apps
- Developing Backbone.js Applications
- d3.js transition
- d3.js
- Over 1000 D3.js Examples and Demos
- Over 2000 D3.js Examples and Demos
- Animated US States with D3.js
- earth winds map via D3.js
- D3.js Gallery Data Examples List V2 (via christopheviau.com/d3list)
- Creating and Exporting svg Graphics with json and D3.js
- D3 Tips and Tricks
- Dashing D3.js
- Interactive Data Visualization with D3
- JavaScript Documentation Search
- dom Search
- jQuery Documentation Search
- Introducing json - json.org
- json - JavaScript Object Notation
- json Example - json.org
- json Data Set Sample - Spry
- json Schema
- Schematic Ipsum - Generate Fake json Data in Accordance with json Schema
- json Editor Online
- json Formatter and Validator
- json Data | Never hard-code your data again - Stream Data in Realtime to Any Website, Anywhere
- Learn Geojson
- smallworld.js is a utility for generating map overviews via Geojson and html
canvas - smallworld.js home on GitHub
- Geojson Layer from GitHub - nps
- Geojson Specs
- GitHub Geojson Documents
- NPMap Geojson Docs
- Microsoft IIS
- Persevere
- Jaxer
- node.js
- Wakanda
- RingoJS
- SilkJS
- Nodetuts
- node.js Command Line Tools for Front-End Development
- Beginner's Guide to node.js (Server-side JavaScript)
- QuickStart - a Commonjs module resolver, loader, and compiler for node.js and Browsers
- node.js command-line tools for front-end development | ADC
- node.js Beginners Guide (codeship.io)
- node.js Quiz
- nodeschool
- NodeRT: Accessing WinRT from Node.js
- Art of node
- Learn You the node
- Even Better In-Browser Mockups with node.js
- node.js at Work: A Walkthrough
- Beginner's Guide to node.js (Server-Side JavaScript)
- node.jsbook.io code examples
- node.js for beginners - callbacks
- LevelDB - node.js style
- Going Realtime with node.js, Express, and Socket.io
- Getting Started with Node.js
- How to node
- node.js
- nodeschool.io
- node.js Forums
- nodeschool.io
- Webdriverjs is an open source testing utility for node.js - lets you control a browser or a mobile application with just a few lines of code. Creating automated tests is as easy as:
- node.js html5 Parser
- JSwiki - A Github-based wiki that indexes libraries and resources.
- JavaScript webplatform docs
- dom webplatform docs
- Crockford's JavaScript
- JavaScript Essentials
- jQuery Fundamentals (Intro Covers JavaScript Basics)
- The JavaScript Tutorial
- code combat - Learn to Code JavaScript by Playing a Game
- Meteor.js - A better way to build apps
- Meteor.js Docs
- Meteor Hacks
- Meteor Weekly
- Creating a Multi-page Site With Meteor
- r/meteor
- Best Learning Resources for Meteor.js
- daily.js
- Ractive.js - Next-Generation dom Manipulation \
- vue.js MVVM Made Simple
- TodoMVC - Helping You Select an MV* framework
- JavaScript .mp3 Player (WebKit) (Experimental)
- ocrad.js - OCR in JavaScript (WebKit) (Experimental)
- JavaScript .webm Something (WebKit) (Experimental)
- http://jscoderetreat.com/#
- http://jster.net/
- datetime="", Dates, Times, etc.
- DateTimeBox jQuery Plugin
- Simple jQuery datetimepicker
- jQuery-Plugins.net
- Responsive Tumblr Feeds on Your Website with jQuery
- Accessible jQuery UI Components
- jQuery Full Calendar Integration with
- jQuery Sensible Datetime
- Managing Dates and Times Using Moment.js
- Best of jQuery
- unheap jQuery Plug-ins
- jQuery Rain
- date.js
- JavaScript Resources on hew.io
- JavaScript Tags in Posts on MSDN
- @JSStack - Trending JavaScript Questionso n StackOverflow
- @TrendingJS - Trendy-ish JavaScript
- ecmascript - the language of the web
- YUI Blog
- YDN
- YUI - Open Source JavaScript and CSS library for buildilng richly interactive web applications
- W3C WebED Community Group Wiki
- Code Avengers
- HackReactor
- codecore
- 30 Days to Learn jQuery - tutsplus
- Let's Learn Ember - tutsplus
- jQuery UI 101: The Essentials - tutsplus
- LearnStreet - Free online JavaScript tutorials and practice exercises.
- Code School - Learn by Doing, Multiple JS courses
- Frontend Masters - Workshop videos on JavaScript and front-end web development
- School of Webcraft - P2PU
- JavaScript - Code Academy
- Google Developers University Consortium
- JavaScript /r subreddits
- r/learnjavascript
- r/javascript
- r/jquery
- r/node
- r/nodejs
- r/coffeescript
- r/html5
- r/webdev
- r/learnprogramming
- r/programming
- r/DailyProgrammer
- r/AngularJS
- r/node+r/nodejs Posts on http://www.reddit.com/r/node+nodejs
- JavaScript - stackoverflow
- JavaScript Room - stackoverflow
- Pineapple JavaScript - A large database of current JavaScript tutorials and resources
- Life of JavaScript - Curated collection of resources about JavaScript, including books, presentations, videos, feeds, sites, libraries, frameworks, and tools, gathered at one location
- echo.js - a social news site similar to Hacker News, dedicated to JavaScript and related topics
oop
Dump
There Can Only Be One
AJAX (AHAH, SAJAX, PJAX, WTFever Flavor You Wanna Call it)
AngularJS
backbone.js
D3.js
ember.js
jQuery
jQuery Tutorials by Jenkov
json - JavaScript Object Notation
Geojson
Topojson
json-ld - JavaScript Object Notation for Linked Data
Nosql json
schema.org json
Server-Side JavaScript (ssjs
ssjs Servers
ssjs Libraries and Frameworks Powering Front-End
js Bots - Robotics/Hardware
node.js
npm - node packaged modules
nodebots
CouchDB
Meteor.js
DUMP FOR NOW....THIS IS not CORRECT
Trending JavaScrips
References, Resources, Community, Classes, etc.
ember.js
jQuery
jQuery Tutorials by Jenkov
json - JavaScript Object Notation
Geojson
Topojson
json-ld - JavaScript Object Notation for Linked Data
Nosql json
schema.org json
Server-Side JavaScript (ssjs
ssjs Servers
ssjs Libraries and Frameworks Powering Front-End
js Bots - Robotics/Hardware
node.js
npm - node packaged modules
nodebots
CouchDB
Meteor.js
DUMP FOR NOW....THIS IS not CORRECT
Trending JavaScrips
References, Resources, Community, Classes, etc.
Nosql json
schema.org json
Server-Side JavaScript (ssjs
ssjs Servers
ssjs Libraries and Frameworks Powering Front-End
js Bots - Robotics/Hardware
node.js
npm - node packaged modules
nodebots
CouchDB
Meteor.js
DUMP FOR NOW....THIS IS not CORRECT
Trending JavaScrips
References, Resources, Community, Classes, etc.
Tools and Not "JavaScript" But Related
- Web Tracing Framework - Powerful Performance Investigator Toolset for Rich JavaScript Applications
- jsPerf - JavaScript Performance Playground
- GitHub
- GIT SCM
- JS Fiddle - Used to test and modify websites with Javascript online
- JSHint
- Sublime Text IDE
- Discover DevTools - codeschool
- Firefox developer tools - The excellent built-in tools in Firefox.
- Firebug - JavaScript debugging and profiling
- Venkman - JavaScript debugger
- JavaScript Shells - test snippets of code
- JSHint - a tool that helps to detect errors and potential problems in your JavaScript code
- JSLint - syntax checker, warns against bad practices
- JSDoc - generate documentation from code
- JavaScript Redirect - advanced JavaScript redirect tool
- Aptana Studio - Open source IDE with Ajax and JavaScript support (based on eclipse)
- Netbeans - Open source IDE which includes sophisticated JavaScript support
- Eclipse - Open source IDE which includes JavaScript Development Toolkit
- Cloud9 IDE - Open source IDE that runs in the browser with JavaScript and Node.js support
- Pretty Diff - a diff tool for comparing minified code to regular code
- Firefox Extension Developer's Extension - Offers JS Environment and Shell
- Other JavaScript Tools - MDN
WinJS
hello.js
hello.js is a client-side Javascript SDK for authenticating with OAuth2 (and OAuth1 with a oauth proxy) web services and querying their REST API's. HelloJS standardizes paths and responses to common API's like Google Data Services, Facebook Graph and Windows Live Connect. Its modular so that list is growing. No more spaghetti code!
lljs (Low-Level JavaScript
lljs is a typed dialect of JavaScript that offers a C-like type system with manual memory management. It compiles to JavaScript and lets you write memory-efficient and GC pause-free code less painfully, in short, LLJS is the bastard child of JavaScript and C. LLJS is early research prototype work, so don't expect anything rock solid just yet. The research goal here is to explore low-level statically typed features in a high-level dynamically typed language. Think of it as inline assembly in C, or the unsafe keyword in C#. It's not pretty, but it gets the job done.
Engines
JavaScript engines are virtual machines that interpret and execute JavaScript (aka ECMAScript).
JavaScript engines are most commonly used in web browsers, being that JavaScript is the language of the web; likewise the most common host environment for JavaScript is a web browser. Web browsers typically use the public api to create "host objects" responsible for reflecting the dom into JavaScript.
Web servers are another common JavaScript Engine application; JavaScript web servers expose host objects representing an http request and response objects, which a JavaScript program then manipulates to dynamically generate web documents. Microsoft's .ASP technology for IIS allows sever-side code to be written in VBScript or JScript (Microsoft's implementation of JavaScript). Jaxer is a web server running entirely on JavaScript, one benefit of which is permitting the same code to be shared on the server and the client.
Active JavaScript Engine Projects
- Rhino, managed by the Mozilla Foundation, open source, developed entirely in Java
- Spidermonkey, the first-ever JavaScript engine, which powered Netscape Navigator and today powers Firefox
- V8 - open source, developed by Google in Denmark, part of Google Chrome
- JavaScriptCore - open source, marketed as Nitro and developed by Apple for Safari
- KJS - KDE's ECMAScript/JavaScript engine originally developed by Harri Porten for the KDE project's Konqueror web browser
- Chakra - for Internet Explorer 9
- dyn.js - open source, written by Douglas Campos and others
- Nashorn - open source as part of OpenJDK, written by Oracle Java Languages and Tool Group
- Juce - C++ application framework, contains a custom embedded JavaScript interpreter
- asm.js - for Firefox
Inactive JavaScript Engine Projects
- Tamarin by Adobe Labs
- Carakan by Opera Software, used by Opera web browser version 10.50 until switching to V8 with Opera 14 (released in 2013).
- Futhark by Opera Software, used by Opera web browser versions 9.50 to 10.10 until replaced by Carakan in Opera 10.50 (released March 2010).
- Narcissus open source written by Brendan Eich, who also wrote SpiderMonkey>
Implementations
See also: List of ECMAScript engines and Comparison of layout engines (ECMAScript) on wikipedia.
JavaScript is a dialect of ECMAScript, which is supported in many applications, especially web browsers. Dialects sometimes include extensions to the language, or to the standard library and related application programming interfaces (API) such as the World Wide Web Consortium (W3C) specified Document Object Model (DOM). This means that an application written in one dialect may be incompatible with another, unless the applications are written to use only a common subset of supported features and APIs ("core").
A dialect and an implementation are distinct: a dialect of a language is a significant variant of that language, while an implementation of a language (or dialect) executes a program written in that language (or dialect).
| Application | Dialect and Latest Version | ECMAScript Edition |
|---|---|---|
| Google Chrome, the V8 engine | JavaScript | ECMA-262, edition 5 |
| Mozilla Firefox, the Gecko layout engine, SpiderMonkey, and Rhino | JavaScript 1.8.5 | ECMA-262, edition 5 |
| Safari, the Nitro engine | avaScript | ECMA-262, edition 5.1 |
| Opera | ECMAScript with some JavaScript 1.5 and JScript extensions | ECMA-262, edition 5.1 |
| KHTML layout engine, KDE's Konqueror | JavaScript 1.5 | ECMA-262, edition 3 |
| Adobe Acrobat | JavaScript 1.5 | ECMA-262, edition 3 |
| OpenLaszlo | JavaScript 1.4 | ECMA-262, edition 3 |
| Max/MSP | JavaScript 1.5 | ECMA-262, edition 3 |
| ANT Galio 3 | JavaScript 1.5 with RMAI extensions | ECMA-262, edition 3 |
SpiderMonkey
First JavaScript Engine, created by Eich at Netscape in C++.
Rhino
Rhino engine is a JavaScript implementation in Java; some applications of the technology:
- Nitro - Apple Safari 4
- V8 - Google Chrome
- TraceMonkey - Mozilla Firefox 3.5
Project Nashorn
Project Nashorn's goal is to implement a lightweight high-performance JavaScript runtime in Java with a native JVM. This Project intends to enable Java developers embedding of JavaScript in Java applications via JSR-223 and to develop free standing JavaScript applications using the jrunscript command-line tool.
Project Nashornis designed to take full advantage of newer technologies for native JVMs that have been made since the original development of JVM-based JavaScript which was started in 1997 by Netscape and maintained by Mozilla. This Project will be an entirely new code base, focused on these newer technologies. In particular the project will utilize the MethodHandles and InvokeDynamic apis described in JSR-292.
Community
- Mailing list
- Bloggers
- Wiki
This Project is sponsored by the Hotspot Group.
Note: Rhino is the predecessor of NASHORN, which began as a project at NetScape in 1997, and was released in 1998. RHINO is currently the JavaScript engine shipping with Firefox.
NASHORN permits developing the magic of:
- Running JavaScript as native desktop code
- Shell Scripting with JavaScript
- Calling Java classes and Java methods in JavaScript
SpiderMonkey
JavaScript | All about Mozilla's JavaScript EngineChrome V8
V8 is Google's open source high-performance JavaScript engine, written in C++ and used in Google Chrome, the open source browser from Google. It implements ECMAScript as specified in ECMA-262, 3rd edition, and runs on Windows XP and Vista, Mac OS X 10.5+, and Linux systems that use IA-32, ARM or MIPS processors. V8 can run standalone, or can be embedded into any C++ application.
V8 JavaScript Engine
<V8 is Google's open source JavaScript engine.
V8 is written in C++ and is used in Google Chrome, the open source browser from Google.
V8 implements ECMAScript as specified in ECMA-262, 5th edition, and runs on Windows (XP or newer), Mac OS X (10.5 or newer), and Linux systems that use IA-32, x64, or ARM processors.
V8 can run standalone, or can be embedded into any C++ application.
You can find more information here:- The V8 documentation page which includes instructions on downloading and building V8.
- Performance documentation covering the performance goals of V8, and instructions on how to run the Octane benchmark suite (evolution of the V8 benchmark suite).
- User mailing list: http://groups.google.com/group/v8-users
- The V8 contributor wiki page.