Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/eric-brechemier/lb_js_scalableApp

The Scalable JavaScript Application framework
https://github.com/eric-brechemier/lb_js_scalableApp

Last synced: 18 days ago
JSON representation

The Scalable JavaScript Application framework

Awesome Lists containing this project

README

        

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
Marc Delhommeau
Special Thanks to: Igor Trifunovic

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