The Scalable JavaScript Application framework https://eric-brechemier.github.io/lb_js_scalableApp/ LANGUAGES JavaScript, (X)HTML, CSS DESCRIPTION The Scalable JavaScript Application framework is a client-side library used to create modular Web applications. It is based on the Scalable JavaScript Application Architecture [1] by Nicholas Zakas. FIRST STEPS The design of the framework is described in Design Patterns for Scalable JavaScript Application [2], which you can find in doc/ folder of the project. After installing the required software (see the requirements section below), run Apache Ant in the build folder to generate the API documentation and the combined/minified script for deployment. For debugging, you may use another version of the script which contains the whole code in a single file including long identifiers, indentation and comments: build/out/js/lb-full.js (5 times bigger). The HTML documentation of the Application Programming Interface is generated in the folder build/out/doc. The script generated for deployment is located at build/out/js/lb-min.js. After understanding the underlying principles [1] and reading the design document [2], you should start digging the generated HTML API [4], starting with the Sandbox build/out/doc/files/lb-core-Sandbox-js.html and the Core Application build/out/doc/files/lb-core-application-js.html For the purpose of Semantic Versioning [3], the public API of this library comprises all modules and methods in the lb.core namespace. The details of the modules in lb.base, a layer for cross-browser compatibility, are implementation specific and may vary from version to version. LEARN MORE The framework has been presented at ParisJS #6, on April 27th, 2011. You can find the slides of the presentation on GitHub [5] or watch the videos of the presentation [6][7] (in French). REFERENCES [1] Scalable JavaScript Application Architecture, by Nicholas Zakas http://www.slideshare.net/nzakas/scalable-javascript-application-architecture [2] Design Patterns for Scalable JavaScript Application https://eric-brechemier.github.io/lb_js_scalableApp/doc/javascript-application-design-patterns.pdf [3] Semantic Versioning http://semver.org [4] HTML API of The Scalable JavaScript Application framework (latest stable) https://eric-brechemier.github.io/lb_js_scalableApp/build/out/doc/ [5] Introduction to The Scalable JavaScript Application Framework (slides) https://github.com/eric-brechemier/introduction_to_lb_js_scalableApp [6] [FR] Video Part 1 - Presentation at ParisJS #6 http://vimeo.com/26719486 [7] [FR] Video Part 2 - Q&A after the presentation at ParisJS #6 http://vimeo.com/26996020 REQUIREMENTS The following software is required for the build process which generates the API documentation, checks the syntax of source files and produces a combined and minified version of the library for deployment. The versions that I used are indicated in parenthesis. * Apache Ant (1.8.0) http://ant.apache.org/ * Java JDK (OpenJDK 1.6.0 on Linux, Sun JDK 1.6.0 on Windows) http://openjdk.java.net/ http://java.sun.com/javase/downloads/index.jsp * perl (5.10.0 on Linux, 5.10.1 with ActivePerl on Windows) http://www.perl.org/ http://www.activestate.com/activeperl * OpenOffice.org Writer (3.2.0) for the design document http://www.openoffice.org/ AUTHORS Eric Bréchemier <github@eric.brechemier.name> Marc Delhommeau <marc.delhommeau@legalbox.com> Special Thanks to: Igor Trifunovic <webmaster@eyegorweb.com> COPYRIGHT Eric Bréchemier (c) 2011-2013, Some Rights Reserved. Legal-Box SAS (c) 2010-2011, All Rights Reserved. LICENSE BSD License http://creativecommons.org/licenses/BSD/ INCLUDED SOFTWARE * Closure Library by Google http://code.google.com/closure/library Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 Parts of the library, in src/closure and test/closure, with modifications under the BSD License. * bezen.org JavaScript library CC-BY Eric Bréchemier http://bezen.org/javascript/ Licensed under a Creative Commons Attribution license http://creativecommons.org/licenses/by/3.0/ in build/build.xml, test/bezen.org, test/style and some unit tests in test * Natural Docs by Greg Valure http://naturaldocs.org/ Licensed under the GNU General Public License http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt in build/lib/naturaldocs * JSLint by Douglas Crockford http://jslint.com/ Licensed under a modified MIT License http://www.opensource.org/licenses/mit-license adding "The Software shall be used for Good, not Evil." in build/lib/jslint * jslint4java by Dominic Mitchell http://code.google.com/p/jslint4java/ Licensed under a New BSD License http://www.opensource.org/licenses/bsd-license.php in build/lib/jslint4java Includes: o JCommander by Cédric Beust http://jcommander.org/ Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 o Rhino by Mozilla http://www.mozilla.org/rhino/ Licensed under Mozilla Public License http://www.mozilla.org/MPL/ o JSLint by Douglas Crockford http://jslint.com/ Licensed under a modified MIT License http://www.opensource.org/licenses/mit-license adding "The Software shall be used for Good, not Evil." * RequireJS by James Burke http://requirejs.org/ Licensed under a New BSD License or MIT License https://github.com/jrburke/requirejs/blob/master/LICENSE in build/lib/requirejs Includes: o Rhino by Mozilla http://www.mozilla.org/rhino/ Licensed under Mozilla Public License http://www.mozilla.org/MPL/ * Yahoo! YUI Compressor by Julien Lecompte http://developer.yahoo.com/yui/compressor/ Licensed under a BSD License or MIT License in build/lib/yuicompressor Includes: o Rhino by Mozilla http://www.mozilla.org/rhino/ Licensed under Mozilla Public License http://www.mozilla.org/MPL/ o JArgs by Steve Purcell, maintainer Ewan Mellor, http://jargs.sourceforge.net/ Licensed under a BSD License http://github.com/purcell/jargs/blob/master/LICENCE HISTORY 2010-06-03, Public Release on GitHub 2010-06-04, v1.0.0, Introduction of Semantic Versioning [3] 2010-06-10, v1.0.1, Minor fix: replaced Combiner with concat 2010-06-11, v1.1.0, Major fixes in history manager and local navigation 2010-06-15, v1.1.1, Minor additions in base DOM Listener 2010-06-18, v1.2.0, onHashChange listener can now be removed or replaced 2010-06-22, v1.2.1, fixes and updates in Google Closure (base,array,debug) 2010-07-27, v1.2.2, Sandbox is now using factory to create/destroy listeners 2010-08-09, v1.2.3, more lenient destroyEvent() now ignores custom events 2010-08-12, v1.2.4, added initElement() extension point for custom factories 2010-09-03, v1.2.5, Bug fix: added content-type declaration in AJAX calls 2010-09-15, v1.2.6, Enhancement: disabled debug logs (too noisy in XHR) 2010-09-22, v1.3.0, Added clearTimeout and getTimestamp in sandbox.utils API 2010-10-26, v1.4.0, Added confirm method in sandbox.utils API 2010-12-20, v1.4.1, Refactored base i18n API: simpler yet powerful 2010-12-20, v1.4.2, Bug fix: language code comparison is now case-insensitive 2011-01-05, v1.5.0, Added support for internationalization (i18n) 2011-01-07, v1.5.1, Refactoring: moved filterHtml code to base i18n templates 2011-01-13, v1.5.2, Enhanced i18n: language properties fallback in templates 2011-01-24, v1.5.3, Enhancement: catch and go on when a module fails to start 2011-01-24, v1.5.4, Enhancement: added explicit string conversion for Module 2011-01-24, v1.5.5, Enhancement: log errors from filters in topDownParsing() 2011-01-24, v1.5.6, Bug fix: replaceParams only sets nodeValue if different 2011-03-29, v1.5.7, Fixed replacement of parameters in src and href in IE7 2011-04-08, v1.5.8, Parameter replacement in getString() is now recursive 2011-04-12, v1.6.0, Added has() and is() methods to Sandbox utils API 2011-04-20, v1.6.1, Avoid type coercion in module definition: override 2011-04-22, v1.6.2, Fixed issue in build process on Windows (Cygwin/MinGW) 2011-04-26, v1.7.0, Modular Sandbox API using Sandbox Builder and Plug-ins 2011-05-02, v1.7.1, Fixed build: removed duplicate script in combine task 2011-05-04, v1.7.2, Enhancement: return null when function fails in getString 2011-05-06, v1.7.3, Enhancement: speed up build using jslint4java 2011-06-03, v1.7.4, Upgraded Closure Library to add support for IE9 2011-06-06, v1.7.5, Removed Combiner tool, cleaned-up build script 2011-06-07, v1.7.6, Moved Ant macros to a separate file to facilitate reuse 2011-07-08, v1.8.0, Now using RequireJS to manage module dependencies 2011-07-12, v1.8.1, Upgraded jslint4java and JSLint, updated Ant macro 2011-08-14, v1.8.2, Project deleted by Legal-Box, moved to eric-brechemier 2013-09-09, v1.9.0, Add no() to Sandbox utils API 2013-09-10, v1.10.0, Add or() to Sandbox utils API 2013-09-10, v1.10.1, Replace 'a = has(a)? a: b' with 'a = or(a,b)' 2013-09-17, v1.11.0, Add forEach(), map(), reduce() to Sandbox array API