Skip to content


Subversion checkout URL

You can clone with
Download ZIP
The Scalable JavaScript Application framework
JavaScript Perl CSS

Give context for the 2 suggestions (TODO) of enhancements in isInBox()

These two enhancements have to be considered in the context of isInBox()
applied to nodes prepared outside the DOM and filtered with filterHtml()
to insert i18n properties.


The Scalable JavaScript Application framework


  JavaScript, (X)HTML, CSS


  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.


  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.


  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).


  [1] Scalable JavaScript Application Architecture, by Nicholas Zakas

  [2] Design Patterns for Scalable JavaScript Application

  [3] Semantic Versioning

  [4] HTML API of The Scalable JavaScript Application framework (latest stable)

  [5] Introduction to The Scalable JavaScript Application Framework (slides)

  [6] [FR] Video Part 1 - Presentation at ParisJS #6

  [7] [FR] Video Part 2 - Q&A after the presentation at ParisJS #6


  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)

  * Java JDK (OpenJDK 1.6.0 on Linux, Sun JDK 1.6.0 on Windows)

  * perl (5.10.0 on Linux, 5.10.1 with ActivePerl on Windows)

  * Writer (3.2.0) for the design document


  Eric Bréchemier <>
  Marc Delhommeau <>
  Special Thanks to: Igor Trifunovic <>


  Eric Bréchemier (c) 2011-2013, Some Rights Reserved.
  Legal-Box SAS (c) 2010-2011, All Rights Reserved.


  BSD License


  * Closure Library by Google
    Licensed under the Apache License, Version 2.0
    Parts of the library, in src/closure and test/closure,
    with modifications under the BSD License.

  * JavaScript library CC-BY Eric Bréchemier
    Licensed under a Creative Commons Attribution license
    in build/build.xml, test/, test/style and some unit tests in test

  * Natural Docs by Greg Valure
    Licensed under the GNU General Public License
    in build/lib/naturaldocs

  * JSLint by Douglas Crockford
    Licensed under a modified MIT License
    adding "The Software shall be used for Good, not Evil."
    in build/lib/jslint

  * jslint4java by Dominic Mitchell
    Licensed under a New BSD License
    in build/lib/jslint4java


      o JCommander by Cédric Beust
        Licensed under the Apache License, Version 2.0

      o Rhino by Mozilla
        Licensed under Mozilla Public License

      o JSLint by Douglas Crockford
        Licensed under a modified MIT License
        adding "The Software shall be used for Good, not Evil."

  * RequireJS by James Burke
    Licensed under a New BSD License or MIT License
    in build/lib/requirejs


      o Rhino by Mozilla
        Licensed under Mozilla Public License

  * Yahoo! YUI Compressor by Julien Lecompte
    Licensed under a BSD License or MIT License
    in build/lib/yuicompressor


      o Rhino by Mozilla
        Licensed under Mozilla Public License

      o JArgs by Steve Purcell, maintainer Ewan Mellor,
        Licensed under a BSD License


  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

Something went wrong with that request. Please try again.