Introduction
MontageJS
to
Ryan Paul
MontageJS
Dev Relations
@segphault
The Web
Evolving
is
Hypertext
Document
Medium
from
to
Interactive
Application
Platform
WE NEED A
FRAMEWORK
BRIDGE THE GAP
to
• Framework for frontend web
development
• Ideal for building single-page
applications
• Best suited for projects that target
modern browsers
• Open source, under BSD license
What is MontageJS?
• Component System
• Deferred Drawing
• Functional Reactive
Bindings
Key Features
• Component System
• Deferred Drawing
• Functional Reactive
Bindings
Key Features
FRB
• Component System
• Deferred Drawing
• Functional Reactive
Bindings
Key Features
FRB
Components
HTML
Content
CSS
Styling
FRB
Bindings
JS
Code
component.reel
Install
MontageJS
$ sudo npm install -gq minit@latest
Create Project
$ minit create:app -n app-name
Create Component
$ minit create:component -n compname
Filesystem
assets
images
style
node_modules
digit
montage
ui
main.reel
welcome.reel
index.html
package.json
Filesystem
assets
images
style
node_modules
digit
montage
ui
main.reel
welcome.reel
index.html
package.json
!
main.reel
main.html
main.css
main.js
Serialization
• Instantiate components
• Attach components to
the page DOM
• Populate component
properties — static
values or bindings
FRB
Bindings
• Propagate changes
between object
properties
• Can be 1-way or 2-way
• Bind to other components
or regular JS objects
Serialization
"number": {
"prototype": "digit/ui/number-field.reel",
"properties": {
"element": {"#": "number"}
}
}
<input data-montage-id="number" /> HTML
MJS
Serialization
"number": {
"prototype": "digit/ui/number-field.reel",
"properties": {
"element": {"#": "number"}
}
}
<input data-montage-id="number" /> HTML
MJS
Prototype: path to the desired component
Serialization
"number": {
"prototype": "digit/ui/number-field.reel",
"properties": {
"element": {"#": "number"}
}
}
<input data-montage-id="number" /> HTML
MJS
Element: Montage ID of DOM element
"number": {
"prototype": "digit/ui/number-field.reel",
"properties": {
"element": {"#": "number"}
}
},
"slider": {
"prototype": "digit/ui/slider.reel",
"properties": {
"element": {"#": "slider"}
},
"bindings": {
"value": {"<->": "@number.value"}
}
}
Adding a 2nd component
<input data-montage-id="number" />
<input data-montage-id="slider" type="range" />
HTML
MJS
"number": {
"prototype": "digit/ui/number-field.reel",
"properties": {
"element": {"#": "number"}
}
},
"slider": {
"prototype": "digit/ui/slider.reel",
"properties": {
"element": {"#": "slider"}
},
"bindings": {
"value": {"<->": "@number.value"}
}
}
<input data-montage-id="number" />
<input data-montage-id="slider" type="range" />
HTML
MJS
<-> signifies a 2-way binding
"number": {
"prototype": "digit/ui/number-field.reel",
"properties": {
"element": {"#": "number"}
}
},
"slider": {
"prototype": "digit/ui/slider.reel",
"properties": {
"element": {"#": "slider"}
},
"bindings": {
"value": {"<->": "@number.value"}
}
}
<input data-montage-id="number" />
<input data-montage-id="slider" type="range" />
HTML
MJS
@ references an existing component
"celsiusNumber": {
"prototype": "digit/ui/number-field.reel",
"properties": {
"element": {"#": "celsius"}
},
"bindings": {
"value": {"<->": "(+@number.value - 32) / 1.8"}
}
}
MJS
Complex FRB Expressions
!
"sorted": {"<-": “numbers.sorted{}”}
!
"evens": {"<-": “numbers.filter{!(%2)}”}
!
"low": {"<-": “numbers.filter{this <= ^maxNumber}”}
!
"allChecked": {"<-": “options.every{checked}”}
!
"payroll": {"<-": “departments.map{employees.sum{salary}}.sum()”}
!
"index": {"<-": “folks.group{id}.sorted{.0}.map{.1.last()}”}
MJS
Fun with FRB
• Command line tool that optimizes
apps for production deployment
• Consolidates code into bundles to
reduce number of requests
• Minifies code to reduce total
download size
MontageJS Optimizer
MontageJS Optimizer
$ sudo npm install -g mop
$ mop
Thank You!
MontageJS.org
@MontageJS

More Related Content

PPTX
PPTX
Decoupled Architecture and WordPress
PPT
Front-End Tools and Workflows
PDF
RichFaces CDK: Rapid JSF Component Development
PDF
Going mobile with RichFaces
PPTX
PPTX
.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ...
PDF
Blazor - The New Silverlight?
Decoupled Architecture and WordPress
Front-End Tools and Workflows
RichFaces CDK: Rapid JSF Component Development
Going mobile with RichFaces
.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ...
Blazor - The New Silverlight?

What's hot (20)

PPTX
Deep dive into share point framework webparts
PPTX
Interoperability of components built with different frameworks
PPTX
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
PPTX
Architecture & Workflow of Modern Web Apps
PDF
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
PPTX
PDF
Blazor introduction
PDF
Node as an API shim
PDF
Blazor - The New Silverlight?
PPTX
SPSNL16 - Building Office 365 and SharePoint solutions using modern developer...
PPTX
Extensibility for ADF applications
PPTX
A Gentle Introduction to Blazor
PPTX
Cross-platform JavaScript
PDF
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
PPTX
ASP.NET 5
PPTX
Alfresco Digital Business Platform - Why, How, What
PDF
Continuous delivery of danbury.io, Part 1
PPT
Introduction to Grails
PPTX
Alfresco Process Services (APS) and the Internet of Things
PPTX
Using and extending Alfresco Content Application
Deep dive into share point framework webparts
Interoperability of components built with different frameworks
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
Architecture & Workflow of Modern Web Apps
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
Blazor introduction
Node as an API shim
Blazor - The New Silverlight?
SPSNL16 - Building Office 365 and SharePoint solutions using modern developer...
Extensibility for ADF applications
A Gentle Introduction to Blazor
Cross-platform JavaScript
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
ASP.NET 5
Alfresco Digital Business Platform - Why, How, What
Continuous delivery of danbury.io, Part 1
Introduction to Grails
Alfresco Process Services (APS) and the Internet of Things
Using and extending Alfresco Content Application
Ad

Viewers also liked (20)

PDF
CFR Risk Management &amp; Insurance Services
PPTX
Tips and Tricks from the Trenches for Migrating to a Virtual Private Cloud
PPTX
Clarke's new & Improved PPT
PDF
Diamond West 3D Laser Scanning Presentation
PPTX
Ed 692 technology in the classroom ppt
PPTX
Clarke's new & improved ppt
PDF
A Short History of Educational Reform in Finland - Pasi Sahlberg
PPT
Nahl wear
PPTX
My name is dustin bishoppowerpoint
PPT
Mickey mouse
PPT
Advertising
PDF
Reviews of National Policies for Education in South Africa
PDF
Juknis permen no 35
PPTX
Institucion educativa la gabriela (1)
DOCX
Ceo tham khảo
PPTX
Ed 692 technology in the classroom ppt
PDF
The school choice journey: Parents experiencing more than improved test scores
PPTX
Recruiting for IT positions - Recruitment agency
DOC
Macam teori belajar
PDF
Building management-system power point
CFR Risk Management &amp; Insurance Services
Tips and Tricks from the Trenches for Migrating to a Virtual Private Cloud
Clarke's new & Improved PPT
Diamond West 3D Laser Scanning Presentation
Ed 692 technology in the classroom ppt
Clarke's new & improved ppt
A Short History of Educational Reform in Finland - Pasi Sahlberg
Nahl wear
My name is dustin bishoppowerpoint
Mickey mouse
Advertising
Reviews of National Policies for Education in South Africa
Juknis permen no 35
Institucion educativa la gabriela (1)
Ceo tham khảo
Ed 692 technology in the classroom ppt
The school choice journey: Parents experiencing more than improved test scores
Recruiting for IT positions - Recruitment agency
Macam teori belajar
Building management-system power point
Ad

Similar to Intro to MontageJS (20)

PPTX
Codemotion 2013 - Designing complex applications using html5 and knockoutjs
PPT
Top java script frameworks ppt
PDF
Workshop 9: BackboneJS y patrones MVC
PDF
The Javascript Revolution
PPTX
Functional Reactive Programming with RxJS
PPT
Backbone introdunction
PDF
Front end architecture patterns
PDF
Itroducing Angular JS
PDF
Intro to BackboneJS + Intermediate Javascript
PDF
Rp 6 session 2 naresh bhatia
PPTX
JS digest. February 2017
PDF
The Meteor Framework
PDF
Developing maintainable Cordova applications
PDF
Backbone.js Architecture Example - Echoes Media Player (Hebrew)
PDF
Backbone web apps - design & architecture
PDF
Developing Backbonejs Applications Early Release Addy Osmani
PDF
WebNet Conference 2012 - Designing complex applications using html5 and knock...
PPTX
Introduction to Backbone.js
PDF
Streams API (Web Engines Hackfest 2015)
PPTX
RxJS vs RxJava: Intro
Codemotion 2013 - Designing complex applications using html5 and knockoutjs
Top java script frameworks ppt
Workshop 9: BackboneJS y patrones MVC
The Javascript Revolution
Functional Reactive Programming with RxJS
Backbone introdunction
Front end architecture patterns
Itroducing Angular JS
Intro to BackboneJS + Intermediate Javascript
Rp 6 session 2 naresh bhatia
JS digest. February 2017
The Meteor Framework
Developing maintainable Cordova applications
Backbone.js Architecture Example - Echoes Media Player (Hebrew)
Backbone web apps - design & architecture
Developing Backbonejs Applications Early Release Addy Osmani
WebNet Conference 2012 - Designing complex applications using html5 and knock...
Introduction to Backbone.js
Streams API (Web Engines Hackfest 2015)
RxJS vs RxJava: Intro

Recently uploaded (20)

PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PPTX
The various Industrial Revolutions .pptx
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
August Patch Tuesday
PDF
Five Habits of High-Impact Board Members
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PPTX
Benefits of Physical activity for teenagers.pptx
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Hybrid model detection and classification of lung cancer
PPTX
Web Crawler for Trend Tracking Gen Z Insights.pptx
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
A review of recent deep learning applications in wood surface defect identifi...
PDF
Unlock new opportunities with location data.pdf
Module 1.ppt Iot fundamentals and Architecture
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
The various Industrial Revolutions .pptx
NewMind AI Weekly Chronicles – August ’25 Week III
August Patch Tuesday
Five Habits of High-Impact Board Members
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Benefits of Physical activity for teenagers.pptx
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Assigned Numbers - 2025 - Bluetooth® Document
Group 1 Presentation -Planning and Decision Making .pptx
A contest of sentiment analysis: k-nearest neighbor versus neural network
Univ-Connecticut-ChatGPT-Presentaion.pdf
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Hybrid model detection and classification of lung cancer
Web Crawler for Trend Tracking Gen Z Insights.pptx
sustainability-14-14877-v2.pddhzftheheeeee
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
A review of recent deep learning applications in wood surface defect identifi...
Unlock new opportunities with location data.pdf

Intro to MontageJS