JavaScript
todo; again, bookmarks
General
- edutechwiki: JavaScript links - veery handy
- ECMAScript wiki - for the ongoing specification work of Ecma TC39, the technical committee tasked with standardization of the ECMAScript programming language. Most of the wiki is world-readable, meaning that anyone can view the pages. Certain sections are restricted to members of the technical committee.
- A Survey of the JavaScript Programming Language - This document is an introduction to the JavaScript Programming Language for professional programmers. It is a small language, so if you are familiar with other languages, then this won't be too demanding. Douglas Crockford, 2002
Learning
Screencasts
- TheCodePlayer - Learn HTML5, CSS3, Javascript and more. Video style walkthroughs showing cool stuff being created from scratch.
Books
- Eloquent JavaScript - A Modern Introduction to Programming
Articles
- jQuery and JavaScript Coding: Examples and Best Practices - September 16th, 2008
- Comparing Dart, jQuery, CoffeeScript, CoffeeScript+jQuery, and JavaScript - January 5, 2012
- Replacing text in the DOM… solved? - July 3rd, 2012
- Preparing Yourself for Modern JavaScript Development - July 6th, 2012
- http://sandofsky.com/blog/desktop-class-applications-in-javascript.html
- http://javascriptweblog.wordpress.com/2010/06/07/understanding-javascript-prototypes/
- http://www.lullabot.com/articles/learning-javascript-php-comparison
Videos
Paradigms
- stackoverflow: Is Javascript a Functional Programming Language?
- https://developer.mozilla.org/en/JavaScript/Guide/Predefined_Core_Objects
- DOM Scripting Task Force - An autonomous working group of the Web Standards Project. Our mission is to bring scripting up to parity with XHTML and CSS as a useful and necessary tool for building accessible, user-centric, standards-based web sites.
Syntax
- http://stackoverflow.com/questions/440739/what-do-parentheses-surrounding-a-javascript-object-function-class-declaration-m
- http://peter.michaux.ca/articles/javascript-namespacing
Patterns
- Learning JavaScript Design Patterns - A book by Addy Osmani
- JavaScript Programming Patterns
- http://shichuan.github.com/javascript-patterns/
Programming style
Code formatting
- idiomatic.js - Principles of Writing Consistent, Idiomatic JavaScript. This is a living document and new ideas for improving the code around us are always welcome. Contribute: fork, clone, branch, commit, push, pull request.
- http://www.slideshare.net/cheilmann/fronteers-maintainability-presentation [http://ajaxian.com/archives/maintainable-javascript-videos-are-now-available
Specs
Loading
- Asynchronous Module Definition (AMD) format comes from wanting a module format that was better than today's "write a bunch of script tags with implicit dependencies that you have to manually order" and something that was easy to use directly in the browser. Something with good debugging characteristics that did not require server-specific tooling to get started. It grew out of Dojo's real world experience with using XHR+eval and and wanting to avoid its weaknesses for the future.
Tools
- https://github.com/JessThrysoee/jscorrectify - to check?
JSLint
JSHint
git clone git@github.com:johnbender/jshint-service.git cd jshint-service heroku create git push heroku master
http://www.vim.org/scripts/script.php?script_id=3576
Google Closure Linter
- Closure Linter is a utility that checks JavaScript files for style issues such as operator placement, missing semicolons, spacing, the presence of JsDoc annotations, and more.
JSBeautifier
Stack
- http://www.initializr.com/ - h5bp, modernizer, more
- Grunt: a task-based command line build tool for JavaScript projects.
Other
- PhantomJS is a headless WebKit with JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.
Vim
- Vim JS Tools - This is a simple plugin that adds both JSLint and JSBeautify functionality in one. JSLint is currently assumed to be installed globally by npm, JSBeautify code is included.
- forked from vim-js-beautify
- jshint.vim - This plugin will allow you to run jshint from vim, and shows the results in a split window.
Web and DOM
August 14th, 2008
Loading scripts
Specs
- HTML5: Web application APIs
Guides
- MDN: DOM
- Gecko DOM Reference - MDN
- document
- window
- window.setTimeout - executes a code snippet or a function after specified delay.
- Gecko DOM Reference - MDN
APIs
Data types
- http://docs.jquery.com/Types
- http://closure-library.googlecode.com/svn/docs/closure_goog_array_array.js.html
- http://closure-library.googlecode.com/svn/docs/namespace_goog_structs.html
- https://github.com/mauriciosantos/buckets
- http://jsclass.jcoglan.com/
- http://code.stephenmorley.org/javascript/queues/
- http://code.google.com/p/jshashtable/
JSON
- JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.
- http://en.wikipedia.org/wiki/JSON
- https://developer.mozilla.org/en/JSON
Tools
- JSONLint - The JSON Validator
- https://github.com/benbernard/RecordStream - commandline tools for slicing and dicing JSON records
Repos
- JSAN - JavaScript Archive Network
- http://zoompf.com/2012/05/html5shiv-and-serving-content-from-code-repositories
- https://developers.google.com/speed/libraries/devguide
CDN
- http://cdnjs.com/ - CloudFlare hosted opensource
- http://cachedcommons.org/ - pages.github.com, rackspace, ~180ms
Modules
Testing
- Jasmine is a behavior-driven development framework for testing JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests.
- QUnit is a powerful, easy-to-use JavaScript unit test suite. It’s used by the jQuery, jQuery UI and jQuery Mobile projects and is capable of testing any generic JavaScript code, including itself!.
- JsTestDriver aims to help javascript developers use good TDD practices and aims to make writing unit tests as easy as what already exists today for java with JUnit.
Documentation
- JsDoc Toolkit is an application, written in JavaScript, for automatically generating template-formatted, multi-page HTML (or XML, JSON, or any other text-based) documentation from commented JavaScript source code.
JS based
CofeeScript
- CoffeeScript is a programming language that transcompiles to JavaScript. The language adds syntactic sugar inspired by Ruby, Python and Haskell[1] to enhance JavaScript's brevity and readability, and add more sophisticated features like list comprehension and pattern matching.
- IcedCoffeeScript is a superset of CoffeeScript. The iced interpreter is a drop-in replacement for the standard coffee interpreter; it will interpret almost all existing CoffeeScript programs.
Coco
- Coco is a CoffeeScript dialect that aims to be more radical and practical. On its way to hide JavaScript's bad parts, CoffeeScript has accumulated own quirks: horrible variable scope, awkward ranges, confusing and/or pointless keywords, verbose file extension, and so on. Coco tries to amend them, entwining good parts of both.
LiveScript
- LiveScript is Coco but much more compatible with CoffeeScript, more functional, and more feature rich. LiveScript aims for increased expressiveness and code beauty. While adding features to assist in functional style programming, LiveScript also deeply supports imperative and object oriented programming, and has an optional class system with inheritance, calls to super, and more.
Lua
- Colony compiles JavaScript to Lua 5.1 source code, that requires only a small support library. Colony can be used in any Lua application supporting the debug library (enabled in Lua 5.1 by default). Colony is experimental.
- ljs - Lua VM implemented in Javascript
- lua.js - node.js, lua to javascript compiler, nee lua2js-experiment
Other
- haxe JS is similar to Javascript, but includes new features like: Strong typing, Type inference, Packages, Classes, Interfaces, Generics, Enums, Iterators, Inlining, Macros
- Tampermonkey is a tool that provides Greasemonkey script support for Google Chrome and Chromium Browser. It's API is fully compatible to Greasemonkey, including GM_registerMenuCommand, GM_xmlhttpRequest with cross domain support and access to the unsafeWindow object.
Node.js
- http://dailyjs.com/2012/03/01/unix-node-arguments/
- http://filer.progstr.com/1/post/2012/04/my-nodejs-linksheet.html
- http://cnnr.me/b/2012/05/your-first-node-dot-js-module/
- https://github.com/azer/onejs
- http://towerjs.org/
- http://coreh.github.com/nide/
- https://github.com/qafoo/bdog - like cat
- https://github.com/mishoo/UglifyJS
- Derby - MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.
- Mojito - Build high-performance, device-independent HTML5 applications running on both client and server with Node.js.
Programming languages: JavaScript, CoffeeScript, IcedCoffeeScript, LiveScript, Roy Pre-compiled templates: Handlebars.js, Jade, Mustache, Eco Styles: CSS, Stylus, LESS, Sass Minifiers: uglify.js, clean-css
npm install jshint
- http://docs.meteor.com/ A Meteor application is a mix of JavaScript that runs inside a client web browser, JavaScript that runs on the Meteor server inside a Node.js container, and all the supporting HTML fragments, CSS rules, and static assets. Meteor automates the packaging and transmission of these different components. And, it is quite flexible about how you choose to structure those components in your file tree.