MontageJS
   HOME

TheInfoList



OR:

MontageJS (or Montage) is an
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
framework for building scalable
single-page application A single-page application (SPA) is a web application or website that interacts with the user by dynamically rewriting the current web page with new data from the web server, instead of the default method of a web browser loading entire new pages. ...
s. It aims to simplify the development and maintainability of expressive HTML5 applications by employing native application frameworks. With Montage, developers can build and extend reusable user interface components and modules, bind properties among components and controllers, and synchronize
DOM Dom or DOM may refer to: People and fictional characters * Dom (given name), including fictional characters * Dom (surname) * Dom La Nena (born 1989), stage name of Brazilian-born cellist, singer and songwriter Dominique Pinto * Dom people, an et ...
updates to ensure a smooth user experience, especially on resource-constrained devices.


Development History

Montage development started under Benoit Marchant and his team while at Motorola Mobility, from August 2010 to July 2012. The project was open-sourced on
GitHub GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuous ...
in July 2012 under a
BSD The Berkeley Software Distribution or Berkeley Standard Distribution (BSD) is a discontinued operating system based on Research Unix, developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berk ...
license. Montage is currently maintained by a Silicon Valley startup whose employees include Marchant and core members of the original development team. The ideas behind Montage date back to Marchant's tenure at Apple (1999−2010) where he worked on native (desktop-like) user interfaces written in JavaScript. Marchant's goal at the time was to create the equivalent of proven technologies such as
Cocoa Cocoa may refer to: Chocolate * Chocolate * ''Theobroma cacao'', the cocoa tree * Cocoa bean, seed of ''Theobroma cacao'' * Chocolate liquor, or cocoa liquor, pure, liquid chocolate extracted from the cocoa bean, including both cocoa butter and ...
and
WebObjects WebObjects was a Java web application server and a server-based web application framework originally developed by NeXT Software, Inc. WebObject's hallmark features are its object-orientation, database connectivity, and prototyping tools. Ap ...
, but for the web and on the client side to facilitate building applications in HTML, CSS, and JavaScript. The result was Gianduia, a rich Internet application framework introduced by Apple at its 2009 World of WebObjects Developer Conference. In 2010, when Marchant had the opportunity to join Motorola Mobility to work on a new framework for mobile, he took the lessons learned at Apple to build Montage from the ground up using the
model–view–controller Model–view–controller (MVC) is a software architectural pattern commonly used for developing user interfaces that divide the related program logic into three interconnected elements. This is done to separate internal representations of infor ...
(MVC) design pattern to partition a Montage application into logically distinct units. Although it's evolving, Montage has been used to build production-ready applications. Montage transposes the designs and patterns of native application frameworks onto the field of web-based application development. However, Montage differs from its counterparts because it doesn't introduce a new syntax for the web. Instead, it uses a Cocoa-like API to create a clean layer of abstraction on top of the web stack using modular, self-contained components, real objects and collections, and an API that allows you to observe changes on these objects and their properties or collections.


Features

Montage builds on
ECMAScript ECMAScript (; ES) is a JavaScript standard intended to ensure the interoperability of web pages across different browsers. It is standardized by Ecma International in the documenECMA-262 ECMAScript is commonly used for client-side scripting o ...
5,
HTML5 HTML5 is a markup language used for structuring and presenting content on the World Wide Web. It is the fifth and final major HTML version that is a World Wide Web Consortium (W3C) recommendation. The current specification is known as the HTML ...
, and the
CommonJS CommonJS is a project with the goal to establish conventions on the module ecosystem for JavaScript outside of the web browser. The primary reason for its creation was a major lack of commonly accepted forms of JavaScript module units which could ...
module system popularized by
Node.js Node.js is an open-source server environment. Node.js is cross-platform and runs on Windows, Linux, Unix, and macOS. Node.js is a back-end JavaScript runtime environment. Node.js runs on the V8 JavaScript Engine and executes JavaScript code ou ...
. It provides the functionality to build graphical user interfaces providing access to both a set of opinionated UI components as well as standard DOM interface components. However, instead of using a templating system like Mustache, for example, Montage lets developers craft user interface components as stand-alone web pages. An application is merely a component's template opened directly in a web browser. The template contains a DOM skeleton and may require some CSS, but it comes to life with the inclusion of a component object model, distinct but connected to the DOM. Montage also provides string and value manipulation, serialization, and other functions that are not directly tied to the graphical user interface. It uses getters and setters to bind properties, so it maintains performance even as the number of bindings grows. It implements a managed draw cycle, a key part of the Montage architecture, that separates read and write operations at scheduled intervals, so it doesn't compromise performance. And it uses event delegation to manage event handling and dispatching to improve application performance. Part of the MontageJS ecosystem are tools that provide a better developer-optimized experience. These include an initializer, Minit, which generates starter template applications and components, as well as a module system intended for front-end development of web applications using NPM-style packages called MR (Montage Require). Montage also comes with a command line tool that translates a developer-optimized experience into a user-optimized experience called Mop (short for Montage optimizer). Mop outputs production-ready Montage applications by reducing the overall file size of the application and creating bundles that can be preloaded or distributed among multiple downloads, to reduce the number of requests and allow developers to release Montage applications with restrictive Content Security Policies.


Compatibility

Montage depends on standardized browser features and works best in modern browsers, including Google Chrome, Firefox, Safari 5+, Internet Explorer 10, Safari Mobile, and Android browser.


See also

*
ReactJS React (also known as React.js or ReactJS) is a free and open-source front-end JavaScript library for building user interfaces based on components. It is maintained by Meta (formerly Facebook) and a community of individual developers and compa ...
*
AngularJS AngularJS is a discontinued free and open-source JavaScript-based web framework for developing single-page applications. It was maintained mainly by Google and a community of individuals and corporations. It aimed to simplify both the development ...
*
Backbone.js Backbone.js is a JavaScript rich-client web app framework based on the model–view–controller design paradigm, intended to connect to an API over a RESTful JSON interface. Backbone is known for being lightweight, as its only hard dependency i ...
*
Cappuccino A cappuccino (; ; Italian plural: ''cappuccini'') is an espresso-based coffee drink that originated in Austria and was later popularized in Italy and is prepared with steamed milk foam (microfoam). Variations of the drink involve the use of cre ...
*
Ember.js Ember.js is an open-source JavaScript web framework that utilizes a component-service pattern. It allows developers to create scalable single-page web applications by incorporating common idioms, best practices, and patterns from other single-pa ...


Releases

* July 10, 2012 - 0.11 - first public release * November 12, 2012 - 0.12 * June 10, 2013 - 0.13 * December 9, 2013 - 0.13.9 * January 16, 2014 - 0.13.11 * February 25, 2014 - 0.14 * March 6, 2014 - 0.14.4 * March 12, 2014 - 0.14.5 * May 3, 2014 - 0.14.10


References

{{Reflist JavaScript programming tools JavaScript libraries