• Stars
    star
    1,504
  • Rank 31,186 (Top 0.7 %)
  • Language
    JavaScript
  • License
    Other
  • Created almost 13 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Montage is an elegant, open source HTML5 framework maintained by Montage Studio that rivals native SDKs, yet is easier to learn. It offers modular components, two-way data binding, and much more. Join us on irc.freenode.net#montage. Sign up for our beta to build Montage applications in the cloud.

Montage

npm version

Build Status

Analytics

Montage is a new type of application framework powered by standard web technologies. Designed with an eye toward maintainability and performance, Montage simplifies the development of rich HTML5 applications by providing modular components, real-time two-way data binding, object serialization with DOM mapping, event handling, a managed component draw cycle, CommonJS dependency management, and many more conveniences to help build robust single-page web applications.

Encapsulated Components

Montage has a clean interface for creating custom user interface components. Each component can stand alone or be composed of other components. Each component is modeled as a stand-alone web application with its own HTML template, JavaScript, CSS, serialized component object model, and resources. With few exceptions, a component can stand on the web platform like any other web page. There are no fully JavaScript-driven templates in Montage. This separation of concerns allows designers to use the technologies they are comfortable with (without having to dig into the JavaScript) and developers to isolate and test individual components using familiar techniques.

Declarative Data Binding

Montage makes it easier to manage your application and UI state with data bindings. A UI component or Montage object can establish a simple or bi-directional binding with another component or object. When the bound property, or deeper property path, of the bound object is updated then the source object is kept in sync.

Montage uses functional reactive bindings (FRB). Unlike “traditional” bindings, FRB can gracefully bind long property paths and the contents of collections. They can also incrementally update the results of chains of queries including maps, flattened arrays, sums, and averages as well as add and remove elements from sets based on the changes to a flag. FRB makes it easy to incrementally ensure consistent state. FRB is built from a combination of powerful functional and generic building blocks, making it reliable, easy to extend, and easy to maintain.

For more information, see FRB.

CommonJS

Montage fully supports CommonJS modules and is a part of the Node and npm package ecosystem.

For more information, see CommonJS.

Requirements

To get started with Montage, you will need the following:

  • Node.js and npm. Montage application development depends on npm, which is distributed with Node.js.
  • A recent stable release of Chrome, Safari or Firefox. Montage is intended to leverage the evolving web platform of modern browsers.
  • To contribute: A Git client and public SSH key. For details on installing Git and creating your key, see the setup guides on github.com.

Quick Setup

To start using Montage, follow these steps:

  1. Download and run the prebuilt Node.js installer for your platform from the Node.js website.

  2. Install minit, the Montage Initializer.

    minit is a command line utility that will help kickstart your Montage project by generating prebuilt Montage application templates and components and placing the associated files inside the proper directories of your project.

    Mac OS X / Linux

    $ mkdir -p ~/.npm
    $ sudo npm install -gq minit@latest
    

    Windows

    Run the "Node.js command prompt"

    $ npm install -gq minit@latest
    
  3. Use minit to create your Montage project:

    $ minit create:app -n yourappname
    

    Note: If you get an EACCES warning when trying to run minit:create, use sudo chown -R <username> ~/.npm and then use $ minit create:app -n hello. This is a workaround due to a bug in npm.

    This generates a new directory—yourappname, which contains the default Montage application template, including the production dependencies—in your current directory.

  4. To verify your installation, switch to yourappname directory and serve your new Montage project using minit:

    $ cd yourappname
    $ minit serve &
    
  5. Point your browser to http://localhost:8083/.

    You should see the contents of the Welcome component—a simple single-page application, which is explicitly loaded to accompany our two-part quick start tutorial tutorial.

Where to Go from Here

For a quick introduction on how to assemble Montage components into a user interface, refer to “Hello Montage” in our Quick Start tutorial. For more information on Montage components, bindings, event handling, serialization etc. refer to the documentation (be patient: we are currently in the process of updating the docs).

Maintenance

Tests are in the test directory. Use npm test to run the tests in NodeJS or open test/run.html in a browser.

To run the tests in your browser, simply use npm run test:jasmine.

To run the tests using Karma use npm run test:karma and for continious tests run with file changes detection npm run test:karma-dev. Finally to open a remote debug console on karma use npm run test:karma-debug.

More Repositories

1

collections

This package contains JavaScript implementations of common data structures with idiomatic interfaces.
JavaScript
2,094
star
2

frb

Functional Reactive Bindings (frb): A CommonJS package that includes functional and generic building blocks to help incrementally ensure consistent state.
JavaScript
206
star
3

mr

Montage Require: A "no-build-step" CommonJS module system for browsers.
JavaScript
118
star
4

digit

Montage template package: Contains touch-optimized Montage components for tablets and phones (work in progress).
JavaScript
106
star
5

screening

JavaScript
49
star
6

popcorn

Sample Montage application
JavaScript
49
star
7

montagejs.org

The montagejs.org website with an introduction about Montage.
HTML
45
star
8

joey

An HTTP content negotiation client and server JavaScript library, inspired by Sinatra and JSGI, and using Q promises.
JavaScript
40
star
9

mop

Montage Optimizer (mop): Minifies (to reduce file size) and creates bundles (to reduce the number of requests) of Montage applications.
JavaScript
31
star
10

mousse

The library used by the MontageJS framework to manage the serialization of objects in its templates.
JavaScript
21
star
11

collectionsjs.com

A site for recollecting collections and their multifarious methods.
JavaScript
18
star
12

continuum

A Chrome Web Inspector Extension that adds a panel for asynchronous promises
JavaScript
13
star
13

minidom

Small Javascript DOM level 1 implementation
JavaScript
13
star
14

mfiddle

JavaScript
12
star
15

beachplanetblog

An example of how straightforward WebGL is with MontageJS
HTML
9
star
16

matte

Montage template package: Contains desktop UI components.
JavaScript
8
star
17

minit

Tool: Helps you build Montage applications by generating template applications and components for you.
JavaScript
8
star
18

todo-mvc

Sample: This is a MontageJS implementation of the TodoMVC application.
HTML
8
star
19

photofx

Sample: Image editing application for applying filter effects to photos
JavaScript
5
star
20

argo

Monadic streaming JSON parser
JavaScript
5
star
21

jasminum

A light, modular, promissory, “isomorphic”, Jasmine test runner clone
JavaScript
5
star
22

montage-wordpress

Displays a Wordpress posts in a montage flow component using REST API
HTML
4
star
23

studio-todo

JavaScript
3
star
24

native

Montage template package: Contains native UI components.
JavaScript
3
star
25

q-git

Interface with a JS-Git repository as a Q-IO compatible file system
JavaScript
3
star
26

bluemoon

JavaScript
2
star
27

montage-geo

Montage resources to build geospatial applications
JavaScript
2
star
28

carconfigurator

Sample: Implementation of the Montage 3D view component (WebGL scene)
JavaScript
2
star
29

paparazzi

Sample: Photo booth-style application for taking photos and applying effects
JavaScript
2
star
30

montage-testing

Package to enable jasmine test using the testacular runner in Montage projects
JavaScript
2
star
31

fribble

An easy way to experiment with the power of FRB expressions.
JavaScript
2
star
32

montage-lab

JavaScript
1
star
33

the-little-binder

A field manual for Functional Reactive Bindings (FRB)
1
star
34

montage-twitter

JavaScript
1
star
35

kitchen-sink

JavaScript
1
star
36

storyboard

JavaScript
1
star
37

calculator

Sample Montage calculator application
JavaScript
1
star
38

domenic

Normalizes the DOMParser interface between Node.js and browsers
JavaScript
1
star
39

dr

A dependency analyzer for CommonJS modules and Montage
JavaScript
1
star
40

montage-assets

Artwork for the Montage JavaScript Framework
1
star