SlideShare a Scribd company logo
1 of 19
Download to read offline
React + Meteor
Declarative JS with Sensible State
Taggart
Bowen-Gaddy
Campus Bubble (Previous)
• Built MVP with Meteor 0.6 

•	Moved to Backbone/React client, Meteor server

Insightpool (Current)
• Adopted a monolithic Rails app

•	Built a React / Flux client from the ground up
Assertions
	•	 Dogmatic design decisions can limit you

	 ◦	Separation of concerns are your concern

	•	 Declarative programming helps manage complexity in
state

	•	 FRP across your system makes fully declarative
programming reasonable 

	•	 Philosophies of React & Meteor assume the above
Definitions
	 •	 Declarative Programming

	 ◦	 Describing “what” to do to data in different states, often leaving the
implementation details up to a language/framework

	 •	 Imperative Programming

	 ◦	 In contrast, describing “how" to achieve a desired state

	 •	 Functional Programming

	 ◦	 Describing functions that mutate data to achieve a declared state

	 •	 Reactive Programming

	 ◦	 Your code reacts to state changes, allowing your declarations to propagate &
change state deeper in your “data flow”

	 •	 Functional Reactive Programming (FRP)

	 ◦	 Using your functional blocks to achieve a reactive flow
React
	•	 Just the UI

	 ◦	Lots of people use React as the V in MVC. Since React makes no
assumptions about the rest of your technology stack, it's easy to
try it out on a small feature in an existing project.

	•	 Virtual DOM

	 ◦	React uses a virtual DOM diff implementation for ultra-high
performance. It can also render on the server using Node.js — no
heavy browser DOM required.

	•	 Data Flow

	 ◦	React implements one-way reactive data flow which reduces
boilerplate and is easier to reason about than traditional data
binding.
Flux
	•	 Facebook’s response to MVC

	•	 One-way data flow

	•	 Data architecture, not a framework

	 ◦	Many implementations
React Native
	•	 “Learn once, write anywhere"

	•	 Released today!

	•	 Compiles to native code

	 ◦	No webviews
Meteor
	•	 One language everywhere

	 ◦	Isomorphic APIs mean that the same code, written in the same
language, can run on both client and server.

	•	 Live Updates

	 ◦	Data updates live on the screen as it changes. Users can
collaborate seamlessly.

	•	 Ultra Responsive

	 ◦	Changes made by a user are instantly visible, without the
unprofessional laggy feeling that would result from waiting for a
round trip to the server.
How?
	•	 Blaze

	 ◦	Reactive templating library, similar to React

	•	 Tracker

	 ◦	FRP implementation

	•	 DDP

	 ◦	Fast, out-of-the-box reactive communication between the
client and the server

	•	 Livequery / minidatabases

	 ◦	The ability to query and update seamlessly between client and
server means isomorphic FRP is possible
React Compliments Meteor
	•	 React is Fast

	 ◦	 Virtual DOM diffing out-performs all other client-side re-rendering libraries

	•	 React is full-featured and built to manage your view state

	 ◦	 Blaze is only a templating system

	 ◦	 Blaze is tightly coupled with your Collections

	•	 Predictable, re-usable components

	 ◦	 Sharable, discrete, (FUNCTIONAL / REACTIVE!), components only
possible by re-thinking your separation of concerns

	•	 Serverside rendering

	 ◦	 Print to a string, serve up first for SEO or performance

	•	 Take advantage of the ecosystem surrounding it
Meteor compliments React
	•	 React is ONLY the “view layer”

	 ◦	Needs a “store” or a “model” to manage the data’s state

	•	 Flux is not an out-of-the-box solution

	 ◦	The ecosystem is still very much “in flux” and trying to figure out
best practices

	•	 Meteor’s Latency Compensation + React’s reactive nature
and fast diffing are a perfect pairing

	•	 Having livequery / minidatabases available to React means
less boilerplate and easy access to the data that view needs
Does this actually work?
YEAH!

	github.com/reactjs/react-meteor
How?
	•	 Hooks into React’s first-class + exposed lifecycle
functions to manage reactively setting state

	•	 Allows React components to be dropped into Blaze
templates

	•	 Meteor manages pubsub of model state + logic

	•	 React manages DOM manipulation and view state + logic
Lets look at some code
	•	 Leaderboard

	•	 Session.set() vs this.setState()
Other options?
Arunoda’s Flow Components

	•	 Not react, but VERY heavily inspired by it

	•	 Doesn’t “re-draw” as many lines RE: separations of
concerns

	•	 Lives in the meteor ecosystem

	 ◦	These are still Blaze templates

github.com/meteorhacks/flow-components
Other options?
Tmeasday’s Leaderboard example

	•	 Takes advantage of ES6 + newer React paradigms

	 ◦	Destructuring + Rest parameters

	 ◦	PropTypes

	 ◦	RenderToString()

http://blog.percolatestudio.com/engineering/reactive-user-interfaces/
Other options?
Roll your own!!
Also
React’s creator, Pete Hunt:

https://www.meteor.com/blog/2014/02/14/
pete-hunt-talks-facebook-react
React + Meteor
Questions & Answers!

More Related Content

What's hot

Introduction to Meteor - Worldwide Meteor Day
Introduction to Meteor - Worldwide Meteor DayIntroduction to Meteor - Worldwide Meteor Day
Introduction to Meteor - Worldwide Meteor DayM A Hossain Tonu
 
Meteor intro- ktmjs
Meteor intro- ktmjsMeteor intro- ktmjs
Meteor intro- ktmjsPiyush Thapa
 
Meteor-nepal introduction to meteor
Meteor-nepal introduction to meteorMeteor-nepal introduction to meteor
Meteor-nepal introduction to meteorpiyush thapa
 
Meteor presentation
Meteor presentationMeteor presentation
Meteor presentationscandiweb
 
Meteor presentation
Meteor presentationMeteor presentation
Meteor presentationNicu Gudumac
 
Meteor Framework Introduction
Meteor Framework IntroductionMeteor Framework Introduction
Meteor Framework IntroductionRiza Fahmi
 
MeteorDay Copenhagen
MeteorDay CopenhagenMeteorDay Copenhagen
MeteorDay CopenhagenLars Buur
 
Using Cookies to Store Your Postman Secrets
Using Cookies to Store Your Postman SecretsUsing Cookies to Store Your Postman Secrets
Using Cookies to Store Your Postman SecretsPostman
 
Java microservicesspringbootcasestudy2
Java microservicesspringbootcasestudy2Java microservicesspringbootcasestudy2
Java microservicesspringbootcasestudy2Subramanyam Vemala
 
Deploying and Scaling Your First Cloud Application with Amazon Lightsail
Deploying and Scaling Your First Cloud Application with Amazon LightsailDeploying and Scaling Your First Cloud Application with Amazon Lightsail
Deploying and Scaling Your First Cloud Application with Amazon LightsailAWS Germany
 
Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineDeveloping Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineTahir Akram
 

What's hot (20)

Meet with Meteor
Meet with MeteorMeet with Meteor
Meet with Meteor
 
Introduction to Meteor - Worldwide Meteor Day
Introduction to Meteor - Worldwide Meteor DayIntroduction to Meteor - Worldwide Meteor Day
Introduction to Meteor - Worldwide Meteor Day
 
Meteor.js
Meteor.jsMeteor.js
Meteor.js
 
Meteor intro- ktmjs
Meteor intro- ktmjsMeteor intro- ktmjs
Meteor intro- ktmjs
 
Understanding meteor
Understanding meteorUnderstanding meteor
Understanding meteor
 
Meteor-nepal introduction to meteor
Meteor-nepal introduction to meteorMeteor-nepal introduction to meteor
Meteor-nepal introduction to meteor
 
Meteor presentation
Meteor presentationMeteor presentation
Meteor presentation
 
Meteor presentation
Meteor presentationMeteor presentation
Meteor presentation
 
Meteor Framework Introduction
Meteor Framework IntroductionMeteor Framework Introduction
Meteor Framework Introduction
 
Meteor js
Meteor jsMeteor js
Meteor js
 
MeteorDay Copenhagen
MeteorDay CopenhagenMeteorDay Copenhagen
MeteorDay Copenhagen
 
Succeeding with FOSS!
Succeeding with FOSS!Succeeding with FOSS!
Succeeding with FOSS!
 
Tech Talk on ReactJS
Tech Talk on ReactJSTech Talk on ReactJS
Tech Talk on ReactJS
 
Using Cookies to Store Your Postman Secrets
Using Cookies to Store Your Postman SecretsUsing Cookies to Store Your Postman Secrets
Using Cookies to Store Your Postman Secrets
 
Meteor Angular
Meteor AngularMeteor Angular
Meteor Angular
 
Java microservicesspringbootcasestudy2
Java microservicesspringbootcasestudy2Java microservicesspringbootcasestudy2
Java microservicesspringbootcasestudy2
 
Meteor seminar
Meteor seminarMeteor seminar
Meteor seminar
 
Deploying and Scaling Your First Cloud Application with Amazon Lightsail
Deploying and Scaling Your First Cloud Application with Amazon LightsailDeploying and Scaling Your First Cloud Application with Amazon Lightsail
Deploying and Scaling Your First Cloud Application with Amazon Lightsail
 
Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineDeveloping Java Web Applications In Google App Engine
Developing Java Web Applications In Google App Engine
 
Multiplatform
MultiplatformMultiplatform
Multiplatform
 

Viewers also liked

CompanyProfile2015_al06-0702-0916-HR
CompanyProfile2015_al06-0702-0916-HRCompanyProfile2015_al06-0702-0916-HR
CompanyProfile2015_al06-0702-0916-HRAdrian Monterde
 
Slideshare rus
Slideshare rusSlideshare rus
Slideshare rusakursanova
 
Iphone6-launch
Iphone6-launchIphone6-launch
Iphone6-launchKARTIKJN5
 
Maisons cpr - Modèle Jackie
Maisons cpr - Modèle JackieMaisons cpr - Modèle Jackie
Maisons cpr - Modèle JackieMaisons CPR
 
RWE npower: Recruitment Innovation
RWE npower: Recruitment InnovationRWE npower: Recruitment Innovation
RWE npower: Recruitment InnovationInhouseRecruitment
 
Boots: #FlywithBoots Social Media
Boots: #FlywithBoots Social MediaBoots: #FlywithBoots Social Media
Boots: #FlywithBoots Social MediaInhouseRecruitment
 
WilsonHCG: Candidate Experience
WilsonHCG: Candidate ExperienceWilsonHCG: Candidate Experience
WilsonHCG: Candidate ExperienceInhouseRecruitment
 
Assurant Solutions: Employee Referral Programme
Assurant Solutions: Employee Referral ProgrammeAssurant Solutions: Employee Referral Programme
Assurant Solutions: Employee Referral ProgrammeInhouseRecruitment
 
Enviro-Insight Brochure 2012
Enviro-Insight Brochure 2012Enviro-Insight Brochure 2012
Enviro-Insight Brochure 2012Luke Verburgt
 
Правила оформления текстов
Правила оформления текстовПравила оформления текстов
Правила оформления текстовakursanova
 
Helen Kennedy - Assurant Solutions. Creating and Sustaining an Engaging Emplo...
Helen Kennedy - Assurant Solutions. Creating and Sustaining an Engaging Emplo...Helen Kennedy - Assurant Solutions. Creating and Sustaining an Engaging Emplo...
Helen Kennedy - Assurant Solutions. Creating and Sustaining an Engaging Emplo...InhouseRecruitment
 
Lady gaga profile
Lady gaga profileLady gaga profile
Lady gaga profile09louisa
 
Iphone-launch
Iphone-launchIphone-launch
Iphone-launchKARTIKJN5
 
Introduction to Meteor & React
Introduction to Meteor & ReactIntroduction to Meteor & React
Introduction to Meteor & ReactMax Li
 
Album cover analysis
Album cover analysisAlbum cover analysis
Album cover analysis09louisa
 

Viewers also liked (20)

Meteor2015 codelab
Meteor2015 codelab Meteor2015 codelab
Meteor2015 codelab
 
CompanyProfile2015_al06-0702-0916-HR
CompanyProfile2015_al06-0702-0916-HRCompanyProfile2015_al06-0702-0916-HR
CompanyProfile2015_al06-0702-0916-HR
 
Slideshare rus
Slideshare rusSlideshare rus
Slideshare rus
 
Iphone6-launch
Iphone6-launchIphone6-launch
Iphone6-launch
 
Maisons cpr - Modèle Jackie
Maisons cpr - Modèle JackieMaisons cpr - Modèle Jackie
Maisons cpr - Modèle Jackie
 
RWE npower: Recruitment Innovation
RWE npower: Recruitment InnovationRWE npower: Recruitment Innovation
RWE npower: Recruitment Innovation
 
Boots: #FlywithBoots Social Media
Boots: #FlywithBoots Social MediaBoots: #FlywithBoots Social Media
Boots: #FlywithBoots Social Media
 
WilsonHCG: Candidate Experience
WilsonHCG: Candidate ExperienceWilsonHCG: Candidate Experience
WilsonHCG: Candidate Experience
 
Assurant Solutions: Employee Referral Programme
Assurant Solutions: Employee Referral ProgrammeAssurant Solutions: Employee Referral Programme
Assurant Solutions: Employee Referral Programme
 
Enviro-Insight Brochure 2012
Enviro-Insight Brochure 2012Enviro-Insight Brochure 2012
Enviro-Insight Brochure 2012
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 
Sla
SlaSla
Sla
 
Правила оформления текстов
Правила оформления текстовПравила оформления текстов
Правила оформления текстов
 
Helen Kennedy - Assurant Solutions. Creating and Sustaining an Engaging Emplo...
Helen Kennedy - Assurant Solutions. Creating and Sustaining an Engaging Emplo...Helen Kennedy - Assurant Solutions. Creating and Sustaining an Engaging Emplo...
Helen Kennedy - Assurant Solutions. Creating and Sustaining an Engaging Emplo...
 
SlideShare
SlideShare SlideShare
SlideShare
 
Lady gaga profile
Lady gaga profileLady gaga profile
Lady gaga profile
 
Iphone-launch
Iphone-launchIphone-launch
Iphone-launch
 
Meteor + React
Meteor + ReactMeteor + React
Meteor + React
 
Introduction to Meteor & React
Introduction to Meteor & ReactIntroduction to Meteor & React
Introduction to Meteor & React
 
Album cover analysis
Album cover analysisAlbum cover analysis
Album cover analysis
 

Similar to Meteor + React

Meteor Revolution: From DDP to Blaze Reactive Rendering
Meteor Revolution: From DDP to Blaze Reactive Rendering Meteor Revolution: From DDP to Blaze Reactive Rendering
Meteor Revolution: From DDP to Blaze Reactive Rendering Massimo Sgrelli
 
Architectural peripherals of react by Vadym Zhiltsov
Architectural peripherals of react by Vadym ZhiltsovArchitectural peripherals of react by Vadym Zhiltsov
Architectural peripherals of react by Vadym ZhiltsovLohika_Odessa_TechTalks
 
Introduction to react native with redux
Introduction to react native with reduxIntroduction to react native with redux
Introduction to react native with reduxMike Melusky
 
Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19Markus Eisele
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EEJ On The Beach
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EEMarkus Eisele
 
ReactJS - Re-rendering pages in the age of the mutable DOM
ReactJS - Re-rendering pages in the age of the mutable DOMReactJS - Re-rendering pages in the age of the mutable DOM
ReactJS - Re-rendering pages in the age of the mutable DOMMarc Cyr
 
Learning React - I
Learning React - ILearning React - I
Learning React - IMitch Chen
 
NoSQL and CouchDB: the view from MOO
NoSQL and CouchDB: the view from MOONoSQL and CouchDB: the view from MOO
NoSQL and CouchDB: the view from MOOJames Hollingworth
 
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...MskDotNet Community
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialThomas Daly
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Jeremy Likness
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQLKonstantin Gredeskoul
 
An evening with React Native
An evening with React NativeAn evening with React Native
An evening with React NativeMike Melusky
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive uiPaul van Zyl
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - TalkMatthias Noback
 

Similar to Meteor + React (20)

React.js at Cortex
React.js at CortexReact.js at Cortex
React.js at Cortex
 
Meteor Revolution: From DDP to Blaze Reactive Rendering
Meteor Revolution: From DDP to Blaze Reactive Rendering Meteor Revolution: From DDP to Blaze Reactive Rendering
Meteor Revolution: From DDP to Blaze Reactive Rendering
 
Architectural peripherals of react by Vadym Zhiltsov
Architectural peripherals of react by Vadym ZhiltsovArchitectural peripherals of react by Vadym Zhiltsov
Architectural peripherals of react by Vadym Zhiltsov
 
React Tech Salon
React Tech SalonReact Tech Salon
React Tech Salon
 
Introduction to react native with redux
Introduction to react native with reduxIntroduction to react native with redux
Introduction to react native with redux
 
Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EE
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EE
 
ReactJS - Re-rendering pages in the age of the mutable DOM
ReactJS - Re-rendering pages in the age of the mutable DOMReactJS - Re-rendering pages in the age of the mutable DOM
ReactJS - Re-rendering pages in the age of the mutable DOM
 
React js
React jsReact js
React js
 
Learning React - I
Learning React - ILearning React - I
Learning React - I
 
React introduction
React introductionReact introduction
React introduction
 
NoSQL and CouchDB: the view from MOO
NoSQL and CouchDB: the view from MOONoSQL and CouchDB: the view from MOO
NoSQL and CouchDB: the view from MOO
 
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
An evening with React Native
An evening with React NativeAn evening with React Native
An evening with React Native
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive ui
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - Talk
 

Recently uploaded

Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxVelmuruganTECE
 
Research Methodology for Engineering pdf
Research Methodology for Engineering pdfResearch Methodology for Engineering pdf
Research Methodology for Engineering pdfCaalaaAbdulkerim
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substationstephanwindworld
 
Virtual memory management in Operating System
Virtual memory management in Operating SystemVirtual memory management in Operating System
Virtual memory management in Operating SystemRashmi Bhat
 
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...Erbil Polytechnic University
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadaditya806802
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
Katarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School CourseKatarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School Coursebim.edu.pl
 
BSNL Internship Training presentation.pptx
BSNL Internship Training presentation.pptxBSNL Internship Training presentation.pptx
BSNL Internship Training presentation.pptxNiranjanYadav41
 
multiple access in wireless communication
multiple access in wireless communicationmultiple access in wireless communication
multiple access in wireless communicationpanditadesh123
 
National Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdfNational Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdfRajuKanojiya4
 
Crystal Structure analysis and detailed information pptx
Crystal Structure analysis and detailed information pptxCrystal Structure analysis and detailed information pptx
Crystal Structure analysis and detailed information pptxachiever3003
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)Dr SOUNDIRARAJ N
 
Configuration of IoT devices - Systems managament
Configuration of IoT devices - Systems managamentConfiguration of IoT devices - Systems managament
Configuration of IoT devices - Systems managamentBharaniDharan195623
 
Industrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptIndustrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptNarmatha D
 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxsiddharthjain2303
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm Systemirfanmechengr
 

Recently uploaded (20)

Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptx
 
Research Methodology for Engineering pdf
Research Methodology for Engineering pdfResearch Methodology for Engineering pdf
Research Methodology for Engineering pdf
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substation
 
Virtual memory management in Operating System
Virtual memory management in Operating SystemVirtual memory management in Operating System
Virtual memory management in Operating System
 
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
Comparative study of High-rise Building Using ETABS,SAP200 and SAFE., SAFE an...
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasad
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
Katarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School CourseKatarzyna Lipka-Sidor - BIM School Course
Katarzyna Lipka-Sidor - BIM School Course
 
BSNL Internship Training presentation.pptx
BSNL Internship Training presentation.pptxBSNL Internship Training presentation.pptx
BSNL Internship Training presentation.pptx
 
multiple access in wireless communication
multiple access in wireless communicationmultiple access in wireless communication
multiple access in wireless communication
 
National Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdfNational Level Hackathon Participation Certificate.pdf
National Level Hackathon Participation Certificate.pdf
 
Crystal Structure analysis and detailed information pptx
Crystal Structure analysis and detailed information pptxCrystal Structure analysis and detailed information pptx
Crystal Structure analysis and detailed information pptx
 
Designing pile caps according to ACI 318-19.pptx
Designing pile caps according to ACI 318-19.pptxDesigning pile caps according to ACI 318-19.pptx
Designing pile caps according to ACI 318-19.pptx
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
 
Configuration of IoT devices - Systems managament
Configuration of IoT devices - Systems managamentConfiguration of IoT devices - Systems managament
Configuration of IoT devices - Systems managament
 
Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
Industrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.pptIndustrial Safety Unit-IV workplace health and safety.ppt
Industrial Safety Unit-IV workplace health and safety.ppt
 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptx
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm System
 

Meteor + React

  • 1. React + Meteor Declarative JS with Sensible State
  • 2. Taggart Bowen-Gaddy Campus Bubble (Previous) • Built MVP with Meteor 0.6 • Moved to Backbone/React client, Meteor server Insightpool (Current) • Adopted a monolithic Rails app • Built a React / Flux client from the ground up
  • 3. Assertions • Dogmatic design decisions can limit you ◦ Separation of concerns are your concern • Declarative programming helps manage complexity in state • FRP across your system makes fully declarative programming reasonable  • Philosophies of React & Meteor assume the above
  • 4. Definitions • Declarative Programming ◦ Describing “what” to do to data in different states, often leaving the implementation details up to a language/framework • Imperative Programming ◦ In contrast, describing “how" to achieve a desired state • Functional Programming ◦ Describing functions that mutate data to achieve a declared state • Reactive Programming ◦ Your code reacts to state changes, allowing your declarations to propagate & change state deeper in your “data flow” • Functional Reactive Programming (FRP) ◦ Using your functional blocks to achieve a reactive flow
  • 5. React • Just the UI ◦ Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it's easy to try it out on a small feature in an existing project. • Virtual DOM ◦ React uses a virtual DOM diff implementation for ultra-high performance. It can also render on the server using Node.js — no heavy browser DOM required. • Data Flow ◦ React implements one-way reactive data flow which reduces boilerplate and is easier to reason about than traditional data binding.
  • 6. Flux • Facebook’s response to MVC • One-way data flow • Data architecture, not a framework ◦ Many implementations
  • 7. React Native • “Learn once, write anywhere" • Released today! • Compiles to native code ◦ No webviews
  • 8. Meteor • One language everywhere ◦ Isomorphic APIs mean that the same code, written in the same language, can run on both client and server. • Live Updates ◦ Data updates live on the screen as it changes. Users can collaborate seamlessly. • Ultra Responsive ◦ Changes made by a user are instantly visible, without the unprofessional laggy feeling that would result from waiting for a round trip to the server.
  • 9. How? • Blaze ◦ Reactive templating library, similar to React • Tracker ◦ FRP implementation • DDP ◦ Fast, out-of-the-box reactive communication between the client and the server • Livequery / minidatabases ◦ The ability to query and update seamlessly between client and server means isomorphic FRP is possible
  • 10. React Compliments Meteor • React is Fast ◦ Virtual DOM diffing out-performs all other client-side re-rendering libraries • React is full-featured and built to manage your view state ◦ Blaze is only a templating system ◦ Blaze is tightly coupled with your Collections • Predictable, re-usable components ◦ Sharable, discrete, (FUNCTIONAL / REACTIVE!), components only possible by re-thinking your separation of concerns • Serverside rendering ◦ Print to a string, serve up first for SEO or performance • Take advantage of the ecosystem surrounding it
  • 11. Meteor compliments React • React is ONLY the “view layer” ◦ Needs a “store” or a “model” to manage the data’s state • Flux is not an out-of-the-box solution ◦ The ecosystem is still very much “in flux” and trying to figure out best practices • Meteor’s Latency Compensation + React’s reactive nature and fast diffing are a perfect pairing • Having livequery / minidatabases available to React means less boilerplate and easy access to the data that view needs
  • 12. Does this actually work? YEAH! github.com/reactjs/react-meteor
  • 13. How? • Hooks into React’s first-class + exposed lifecycle functions to manage reactively setting state • Allows React components to be dropped into Blaze templates • Meteor manages pubsub of model state + logic • React manages DOM manipulation and view state + logic
  • 14. Lets look at some code • Leaderboard • Session.set() vs this.setState()
  • 15. Other options? Arunoda’s Flow Components • Not react, but VERY heavily inspired by it • Doesn’t “re-draw” as many lines RE: separations of concerns • Lives in the meteor ecosystem ◦ These are still Blaze templates github.com/meteorhacks/flow-components
  • 16. Other options? Tmeasday’s Leaderboard example • Takes advantage of ES6 + newer React paradigms ◦ Destructuring + Rest parameters ◦ PropTypes ◦ RenderToString() http://blog.percolatestudio.com/engineering/reactive-user-interfaces/
  • 18. Also React’s creator, Pete Hunt: https://www.meteor.com/blog/2014/02/14/ pete-hunt-talks-facebook-react