SlideShare a Scribd company logo
1 of 101
Download to read offline
CHOOSING A JAVASCRIPT
FRAMEWORK
with Pam Selle

@pamasaur // thewebivore.com // turing.cool
AllThings Open 2015
SO… WE
WROTETHIS
THING
me,Tim Ruffles, Christopher
Hiller, and Jamie White
I will not tell you what to do.
SPOILERS!
What I will do, however
is walk you through each of the major frameworks
in the hope that you can make an informed choice for 

a project, for additional learning, or general knowledge
AGENDA
• What is a JavaScript framework?
• Major frameworks:
• Backbone
• Angular
• Ember
AGENDA
• Rising stars:
• Polymer
• React
• Framework evaluation techniques
WHAT IS A FRAMEWORK?
LONG AGO …
PEOPLE MADE WEB APPS
Okay, not that different from now
BUT
(that hasn’t changed much either)
There wasn’t “one way”
Most of the major JavaScript frameworks started in 2009/2010
As a result, frameworks emerged
–Johnny Appleseed
“Type a quote here.”
http://xkcd.com/927/
Still, JS frameworks are a very GOOD thing
Because you shouldn’t have to write a router.
Ask yourself:What’s your 15%?
MAJOR FRAMEWORKS
MAJOR FRAMEWORKS
• Backbone
• Angular
• Ember
Overview, strengths/weaknesses + a little code
BACKBONE
BASICS
• Origin story: DocumentCloud, Rails
• “Core” of an application
• “Unopinionated”
OPINIONATED?
Opinionated: there’s an obvious (or best practices-
driven) way to solve the problem.
Unopinionated:“Choose your own adventure,”
generally more flexible, ex. if incorporating other
libraries into the project.
WHATYOU GET
• Core MVC components
• Nudge in an event-driven application design
DEPENDENCIES
• Underscore
• jQuery or jQuery alternative (ex. Zepto)
STRENGTHS
• Unopinionated
• Integrates well with many libraries and backends
• Events system
WEAKNESSES
• Unopinionated
• “… that’d be your problem”
BACKBONE COMPONENTS
• Models
• Views
• Collections
• Routing
WALK-THROUGH
• Basic Model +View setup
BACKBONE MODELS
Make a model subclass using .extend( )
var	
  Property	
  =	
  Backbone.Model.extend({	
  
	
  	
  star:	
  function()	
  {	
  
	
  	
  	
  	
  this.set("starred",	
  !this.get("starred"));	
  
	
  	
  	
  	
  this.save();	
  
	
  	
  }	
  
});	
  
(code in this presentation is from the book, & final versions of sample
apps are @ github.com/pselle/choosing-javascript-framework)
BACKBONEVIEWS
.extend(), define DOM properties, render
var	
  PropertyShowView	
  =	
  Backbone.View.extend({	
  
	
  	
  tagName:	
  'div',	
  
	
  	
  className:	
  'property',	
  
	
  	
  template:	
  loadTemplate("property-­‐show"),	
  
	
  	
  render:	
  function()	
  {	
  
	
  	
  	
  	
  this.el.innerHTML	
  =	
  this.template(this.model.attributes);	
  
	
  	
  	
  	
  return	
  this;	
  
	
  	
  }	
  
});	
  
BACKBONEVIEWS
.extend(), define DOM properties, render
var	
  PropertyShowView	
  =	
  Backbone.View.extend({	
  
	
  	
  tagName:	
  'div',	
  
	
  	
  className:	
  'property',	
  
	
  	
  template:	
  loadTemplate("property-­‐show"),	
  
	
  	
  render:	
  function()	
  {	
  
	
  	
  	
  	
  this.el.innerHTML	
  =	
  this.template(this.model.attributes);	
  
	
  	
  	
  	
  return	
  this;	
  
	
  	
  }	
  
});	
  
BACKBONEVIEWS
.extend(), define DOM properties, render
var	
  PropertyShowView	
  =	
  Backbone.View.extend({	
  
	
  	
  tagName:	
  'div',	
  
	
  	
  className:	
  'property',	
  
	
  	
  template:	
  loadTemplate("property-­‐show"),	
  
	
  	
  render:	
  function()	
  {	
  
	
  	
  	
  	
  this.el.innerHTML	
  =	
  this.template(this.model.attributes);	
  
	
  	
  	
  	
  return	
  this;	
  
	
  	
  }	
  
});	
  
BACKBONEVIEWS
.extend(), define DOM properties, render
var	
  PropertyShowView	
  =	
  Backbone.View.extend({	
  
	
  	
  tagName:	
  'div',	
  
	
  	
  className:	
  'property',	
  
	
  	
  template:	
  loadTemplate("property-­‐show"),	
  
	
  	
  render:	
  function()	
  {	
  
	
  	
  	
  	
  this.el.innerHTML	
  =	
  this.template(this.model.attributes);	
  
	
  	
  	
  	
  return	
  this;	
  
	
  	
  }	
  
});	
  
BACKBONEVIEWS
Using a view with a model

var	
  myHouse	
  =	
  new	
  Property({	
  
	
  location:	
  "middle	
  of	
  our	
  street",	
  
	
  noiseLevel:	
  "usually	
  quite	
  loud"	
  
});	
  
var	
  propertyView	
  =	
  new	
  PropertyView({	
  
	
  model:	
  myHouse	
  
});	
  
propertyView.render()	
  
document.body.appendChild(propertyView.el);	
  
BACKBONEVIEWS
<div	
  class="property">

	
  	
  <h1>1123	
  Sunny	
  Road</h1>	
  
	
  	
  <h2>37890</h2>	
  
	
  	
  <img	
  src="/shared/images/
andrewmalone_house.jpg">	
  
	
  	
  <p>This	
  is	
  a	
  fantastic	
  house!</p>	
  
	
  	
  <p>Asking	
  price:	
  230000</p>	
  
	
  	
  <button	
  class="pure-­‐button	
  star">Save	
  as	
  
favorite</button>	
  
</div>
OTHER COMPONENTS
• Collections
• Groups of models
• Router
• Read/write the URL without reloading the page
OTHER COMPONENTS
• Events
• Views trigger updates to model, vice versa
• Core component of Backbone
RESOURCES
• http://backbonetutorials.com/
• http://addyosmani.github.io/backbone-
fundamentals/
• Annotated source: 

http://backbonejs.org/docs/backbone.html
ANGULAR
BASICS
• Fastest growing JavaScript framework
• Write behavior in your markup (directives)
• Google!
WHATYOU GET
• Strongly defined building components (directives,
controllers, services)
• Two-way data binding
• Dependency injection
• Auxiliary tools available: Karma, Protractor
DEPENDENCIES
• None
• Loads its own smaller jQuery

(will use your copy if provided on page, supports
2.1+)
STRENGTHS
• Short/low-context setup
• Long feature list
• Module-friendly
• Major industry backing
WEAKNESSES
• Recent rise to prominence = less time in prod
• High lock-in with writing behavior in markup
• Skeptics for future roadmap/Google backing
• 1.3 dropped IE8 support, some teams stuck in
older version now (abandonware fears)
ANGULAR KEY
COMPONENTS
• Modules
• Directives
• Services
• Controllers
MODULES
Every Angular app has 1+ module definition
var	
  realtorsapp	
  =	
  angular.module('realtorsapp',	
  []);	
  
<html	
  ng-­‐app="realtorsapp">
DIRECTIVES
Modify the behavior of the DOM (custom)
angular.module('myapp',	
  [])	
  
	
  	
  .directive('unicorn',	
  function()	
  {	
  
	
  	
  	
  	
  return	
  {	
  
	
  	
  	
  	
  	
  	
  restrict:	
  'E',	
  
	
  	
  	
  	
  	
  	
  link:	
  function(scope,	
  element,	
  attrs)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  element.html('Unicorn')	
  
	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  };	
  
});	
  
<unicorn></unicorn>
DIRECTIVES
Modify the behavior of the DOM (built in)
<table	
  ng-­‐init="properties=['123	
  Iris	
  Lane',	
  '234	
  
Sunflower	
  Blvd','923	
  Azalea	
  Rd']">	
  
	
  	
  <tr	
  ng-­‐repeat="property	
  in	
  properties">	
  
	
  	
  	
  	
  <td><a	
  href="#">{{	
  property	
  }}</a></td>	
  
	
  	
  	
  	
  <td>20001</td>	
  
	
  	
  	
  	
  <td>$1M</td>	
  
	
  	
  </tr>	
  
</table>	
  
SERVICES
• Singleton to inject into any Angular component
• Lazily instantiated
angular.module('realtorsApp')	
  
	
  	
  .factory('Properties',	
  function	
  ($http)	
  {	
  
	
  	
  	
  	
  var	
  getProperties	
  =	
  function	
  getProperties()	
  {	
  
	
  	
  	
  	
  	
  	
  return	
  $http.get('data.json')	
  
	
  	
  	
  	
  	
  	
  	
  	
  .then(function	
  (res)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return	
  res.data.properties;	
  
	
  	
  	
  	
  	
  	
  	
  	
  });	
  
	
  	
  	
  	
  };	
  
	
  	
  	
  	
  return	
  {	
  
	
  	
  	
  	
  	
  	
  getProperties:	
  getProperties	
  
	
  	
  	
  	
  };	
  
	
  	
  });	
  
CONTROLLERS
• Controllers augment scope ($scope)
• Bind business logic to the view
angular.module('realtorsApp').controller('PropertiesController',	
  
	
  function	
  ($scope,	
  Properties,	
  $window)	
  {	
  
	
  	
  	
  Properties.getProperties()	
  
	
  	
  	
  	
  	
  //	
  chain	
  w/	
  the	
  promise	
  returned	
  by	
  getProperties()	
  
	
  	
  	
  	
  	
  .then(function	
  success(properties)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  $scope.properties	
  =	
  properties;	
  
	
  	
  	
  	
  	
  },	
  function	
  failure(err)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  $window.alert(err);	
  
	
  	
  	
  });	
  
	
  });	
  
});
CONTROLLERS
• Controllers augment scope ($scope)
• Bind business logic to the view
<table	
  ng-­‐controller="PropertyController">	
  
	
  	
  <tr	
  class="property-­‐item"	
  ng-­‐repeat="property	
  in	
  properties">	
  
	
  	
  	
  	
  <td>	
  
	
  	
  	
  	
  	
  	
  <h1><a	
  ng-­‐href="#/detail/
{{	
  property.id	
  }}">{{	
  property.streetAddress	
  }}</a></h1>	
  
	
  	
  	
  	
  	
  	
  <p>Asking	
  Price:	
  {{	
  property.price	
  |	
  currency	
  }}</p>	
  
	
  	
  	
  	
  	
  	
  <p>{{	
  property.zipCode	
  }}</p>	
  
	
  	
  	
  	
  </td>	
  
	
  	
  </tr>	
  
</table>
OTHER COMPONENTS
• Filters
• Animations
• i18n l10n
• Accessibility with ngAria
• Testing (Karma, Protractor)
(BIG) CAVEAT
• Angular 2: https://angular.io/
• TypeScript
RESOURCES
• https://docs.angularjs.org/guide/
• https://docs.angularjs.org/api/
• https://docs.angularjs.org/tutorial/
RESOURCES
• https://egghead.io (great short videos, ~$20/mo.)
• http://angular-air.com/ (live video podcast)
EMBER
BASICS
• Most complete JS framework
• Built completely on modular OSS components
• Community super-powered
WHATYOU GET
• Very strongly defined MVC components
• Data binding
• Ember Components
• Great routing support
• Dependency injection
WHATYOU GET
• Code generation with Ember CLI
• Debugging tools with Ember Inspector
DEPENDENCIES
• Node.js
• NPM
STRENGTHS
• Community!
• Convention-driven
• Commonalities with every other Ember app
• Generation tools and templates
WEAKNESSES
• SometimesTOO much information
• “Right” way to do things = difficult to get up to
speed quickly
• Not as pervasive as other two major frameworks
KEY COMPONENTS
• Templating via Handlebars
• Models
• Routes
• Components
• Controllers
WALK-THROUGH
• Getting started
• Routes
• Models
• Components
GETTING STARTED
you@xyz$	
  npm	
  install	
  -­‐g	
  ember-­‐cli	
  
you@xyz$	
  ember	
  new	
  new-­‐app	
  
you@xyz$	
  cd	
  new-­‐app	
  
you@xyz$	
  ember	
  server
GETTING STARTED
GETTING STARTED
• Dependencies
• Git
• Ready to go!
ROUTES
ember	
  generate	
  route	
  index	
  
//	
  routes/index.js	
  
import	
  Ember	
  from	
  'ember';	
  
export	
  default	
  Ember.Route.extend({	
  
	
  	
  model:	
  function()	
  {	
  
	
  	
  	
  	
  return	
  $.getJSON('/shared/data.json');	
  
	
  	
  }	
  
});	
  
	
  	
  
MODELS
export	
  default	
  Ember.Route.extend({	
  
	
  	
  model:	
  function()	
  {	
  
	
  	
  	
  	
  return	
  $.getJSON('/shared/data.json');	
  
	
  	
  }	
  
});	
  
	
  	
  
MODELS
ember	
  generate	
  model	
  post	
  title:string	
  body:string	
  
//	
  models/post.js	
  
import	
  DS	
  from	
  'ember-­‐data';	
  
export	
  default	
  DS.Model.extend({	
  
	
  	
  title:	
  DS.attr('string'),	
  
	
  	
  body:	
  DS.attr('string')	
  
});	
  
COMPONENTS
Web components!
Contain:
• Template (presentation/markup)
• Behavior (JavaScript)
DETOUR
Web components are comprised of multiple
standards that are not yet implemented across
browsers:
Custom elements, HTML imports, templates, and
shadow DOM
http://webcomponents.org/
COMPONENTS
// ember generate component my-component --pod
// components/my-component/template.hs

// components/mycomponent/component.js
{{my-component}}
RESOURCES
• Ember Guides (guides.ember.com)
• Ember Watch (emberwatch.com)
• Ember CLI 101(leanpub.com/ember-cli-101)
RISING STARS
POLYMER
POLYMER
• Web components!
• Also see: x-tags.org, from Mozilla
DETOUR: RESUMED!
• Specs
• Custom elements
• HTML imports
• Templates
• Shadow DOM
DETOUR: RESUMED!
• Webcomponents.js polyfills
• Polymer vs. web components
jonrimmer.github.io/are-we-componentized-yet/
POLYMER COMPONENT
//	
  my-­‐component.html	
  
<link	
  rel="import"	
  href="../components/polymer/
polymer.html">	
  
<polymer-­‐element	
  name="my-­‐component">

	
  	
  <template>

	
  	
  	
  	
  <style></style>

	
  	
  	
  	
  <h2>My	
  Custom	
  Component!</h2>

	
  	
  </template>

	
  	
  <script>Polymer({is:'my-­‐component'})</script>

</polymer-­‐element>	
  
<my-­‐component></my-­‐component>
POLYMER COMPONENT
//	
  my-­‐component.html	
  
<link	
  rel="import"	
  href="../components/polymer/
polymer.html">	
  
<polymer-­‐element	
  name="my-­‐component">

	
  	
  <template>

	
  	
  	
  	
  <style></style>

	
  	
  	
  	
  <h2>My	
  Custom	
  Component!</h2>

	
  	
  </template>

	
  	
  <script>Polymer({is:'my-­‐component'})</script>

</polymer-­‐element>	
  
<my-­‐component></my-­‐component>
POLYMER COMPONENT
//	
  my-­‐component.html	
  
<link	
  rel="import"	
  href="../components/polymer/
polymer.html">	
  
<polymer-­‐element	
  name="my-­‐component">

	
  	
  <template>

	
  	
  	
  	
  <style></style>

	
  	
  	
  	
  <h2>My	
  Custom	
  Component!</h2>

	
  	
  </template>

	
  	
  <script>Polymer({is:'my-­‐component'})</script>

</polymer-­‐element>	
  
<my-­‐component></my-­‐component>
POLYMER COMPONENT
//	
  my-­‐component.html	
  
<link	
  rel="import"	
  href="../components/polymer/
polymer.html">	
  
<polymer-­‐element	
  name="my-­‐component">

	
  	
  <template>

	
  	
  	
  	
  <style></style>

	
  	
  	
  	
  <h2>My	
  Custom	
  Component!</h2>

	
  	
  </template>

	
  	
  <script>Polymer({is:'my-­‐component'})</script>

</polymer-­‐element>	
  
<my-­‐component></my-­‐component>
RESOURCES
• Docs (polymer-project.org/1.0/docs)
• Web Components Weekly (webcomponentsweekly.me)
• Polymer Slack (polymer-slack.herokuapp.com)
• Polymer Podcast (www.polymerpodcast.com)
• More links (http://bit.ly/1Gc5ccI)
REACT
REACT
• Only view layer
• Shadow DOM
• Super performant
REACT COMPONENT
var CommentBox = React.createClass({
render: function() {
return (
<div className="commentBox">
Hello, world! I am a CommentBox.
</div>
);
}
});
ReactDOM.render(
<CommentBox />,
document.getElementById('content')
);
REACT COMPONENT
var CommentBox = React.createClass({
render: function() {
return (
<div className="commentBox">
Hello, world! I am a CommentBox.
</div>
);
}
});
ReactDOM.render(<CommentBox />, document.getElementById('content'));
SEE ALSO
• Flux - Architecture pattern
• Om - React with ClojureScript
RESOURCES
• http://reactjsnewsletter.com/
• http://reactpodcast.com/
• http://www.reactiflux.com/ :(
EVALUATING FRAMEWORKS
EVALUATIONTOOLS
• Spreadsheet for ranking: http://bit.ly/1g6kDSS
• Rank frameworks according to business, technical,
and team criteria
• Wharton DevTap: 

http://technology.wharton.upenn.edu/devtap/
THANKYOU!
@pamasaur // thewebivore.com // turing.cool
50% OFF CHOOSING A JS
FRAMEWORK BOOK
https://gum.co/OAOI/allthingsopen

More Related Content

What's hot

Aligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsAligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsMatthew Beale
 
The DOM is a Mess @ Yahoo
The DOM is a Mess @ YahooThe DOM is a Mess @ Yahoo
The DOM is a Mess @ Yahoojeresig
 
Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015Matt Raible
 
Play Framework workshop: full stack java web app
Play Framework workshop: full stack java web appPlay Framework workshop: full stack java web app
Play Framework workshop: full stack java web appAndrew Skiba
 
Migraine Drupal - syncing your staging and live sites
Migraine Drupal - syncing your staging and live sitesMigraine Drupal - syncing your staging and live sites
Migraine Drupal - syncing your staging and live sitesdrupalindia
 
jQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksjQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksAddy Osmani
 
Laravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleLaravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleKaty Slemon
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaYevgeniy Brikman
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBob Paulin
 
Real World Lessons in Progressive Web Application & Service Worker Caching
Real World Lessons in Progressive Web Application & Service Worker CachingReal World Lessons in Progressive Web Application & Service Worker Caching
Real World Lessons in Progressive Web Application & Service Worker CachingChris Love
 
Building a real life application in node js
Building a real life application in node jsBuilding a real life application in node js
Building a real life application in node jsfakedarren
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010Nicholas Zakas
 
Web Development with NodeJS
Web Development with NodeJSWeb Development with NodeJS
Web Development with NodeJSRiza Fahmi
 
Asynchronous web apps with the Play Framework 2.0
Asynchronous web apps with the Play Framework 2.0Asynchronous web apps with the Play Framework 2.0
Asynchronous web apps with the Play Framework 2.0Oscar Renalias
 
Future of Web Apps: Google Gears
Future of Web Apps: Google GearsFuture of Web Apps: Google Gears
Future of Web Apps: Google Gearsdion
 
Play + scala + reactive mongo
Play + scala + reactive mongoPlay + scala + reactive mongo
Play + scala + reactive mongoMax Kremer
 
[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress DevelopmentAdam Tomat
 
Service workers
Service workersService workers
Service workersjungkees
 

What's hot (20)

Aligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsAligning Ember.js with Web Standards
Aligning Ember.js with Web Standards
 
The DOM is a Mess @ Yahoo
The DOM is a Mess @ YahooThe DOM is a Mess @ Yahoo
The DOM is a Mess @ Yahoo
 
Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015
 
Play Framework workshop: full stack java web app
Play Framework workshop: full stack java web appPlay Framework workshop: full stack java web app
Play Framework workshop: full stack java web app
 
Migraine Drupal - syncing your staging and live sites
Migraine Drupal - syncing your staging and live sitesMigraine Drupal - syncing your staging and live sites
Migraine Drupal - syncing your staging and live sites
 
jQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksjQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & Tricks
 
Laravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleLaravel 8 export data as excel file with example
Laravel 8 export data as excel file with example
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
 
Real World Lessons in Progressive Web Application & Service Worker Caching
Real World Lessons in Progressive Web Application & Service Worker CachingReal World Lessons in Progressive Web Application & Service Worker Caching
Real World Lessons in Progressive Web Application & Service Worker Caching
 
Building a real life application in node js
Building a real life application in node jsBuilding a real life application in node js
Building a real life application in node js
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010
 
Web Development with NodeJS
Web Development with NodeJSWeb Development with NodeJS
Web Development with NodeJS
 
Asynchronous web apps with the Play Framework 2.0
Asynchronous web apps with the Play Framework 2.0Asynchronous web apps with the Play Framework 2.0
Asynchronous web apps with the Play Framework 2.0
 
Future of Web Apps: Google Gears
Future of Web Apps: Google GearsFuture of Web Apps: Google Gears
Future of Web Apps: Google Gears
 
Play + scala + reactive mongo
Play + scala + reactive mongoPlay + scala + reactive mongo
Play + scala + reactive mongo
 
Serverless Java on Kubernetes
Serverless Java on KubernetesServerless Java on Kubernetes
Serverless Java on Kubernetes
 
[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development
 
Play framework
Play frameworkPlay framework
Play framework
 
Service workers
Service workersService workers
Service workers
 

Viewers also liked

Frontend Application Architecture, Patterns, and Workflows
Frontend Application Architecture, Patterns, and WorkflowsFrontend Application Architecture, Patterns, and Workflows
Frontend Application Architecture, Patterns, and WorkflowsTreasure Data, Inc.
 
Choosing a JavaScript Framework
Choosing a JavaScript FrameworkChoosing a JavaScript Framework
Choosing a JavaScript FrameworkTim Rayburn
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison500Tech
 
Angular 2 - Core Concepts
Angular 2 - Core ConceptsAngular 2 - Core Concepts
Angular 2 - Core ConceptsFabio Biondi
 
Getting Started with Angular 2
Getting Started with Angular 2Getting Started with Angular 2
Getting Started with Angular 2FITC
 

Viewers also liked (7)

Frontend Application Architecture, Patterns, and Workflows
Frontend Application Architecture, Patterns, and WorkflowsFrontend Application Architecture, Patterns, and Workflows
Frontend Application Architecture, Patterns, and Workflows
 
Choosing a JavaScript Framework
Choosing a JavaScript FrameworkChoosing a JavaScript Framework
Choosing a JavaScript Framework
 
Choosing a JavaScript Framework
Choosing a JavaScript FrameworkChoosing a JavaScript Framework
Choosing a JavaScript Framework
 
Angular 2 vs React
Angular 2 vs ReactAngular 2 vs React
Angular 2 vs React
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison
 
Angular 2 - Core Concepts
Angular 2 - Core ConceptsAngular 2 - Core Concepts
Angular 2 - Core Concepts
 
Getting Started with Angular 2
Getting Started with Angular 2Getting Started with Angular 2
Getting Started with Angular 2
 

Similar to Choosing a Javascript Framework

Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenerytoddbr
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVCAlive Kuo
 
Good karma: UX Patterns and Unit Testing in Angular with Karma
Good karma: UX Patterns and Unit Testing in Angular with KarmaGood karma: UX Patterns and Unit Testing in Angular with Karma
Good karma: UX Patterns and Unit Testing in Angular with KarmaExoLeaders.com
 
AngularJS: The Bridge Between Today and Tomorrow's Web (Todd Motto)
AngularJS: The Bridge Between Today and Tomorrow's Web (Todd Motto)AngularJS: The Bridge Between Today and Tomorrow's Web (Todd Motto)
AngularJS: The Bridge Between Today and Tomorrow's Web (Todd Motto)Future Insights
 
Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Eric Palakovich Carr
 
Javascript unit testing, yes we can e big
Javascript unit testing, yes we can   e bigJavascript unit testing, yes we can   e big
Javascript unit testing, yes we can e bigAndy Peterson
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptGuy Royse
 
Web Components v1
Web Components v1Web Components v1
Web Components v1Mike Wilcox
 
Web Components Everywhere
Web Components EverywhereWeb Components Everywhere
Web Components EverywhereIlia Idakiev
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasminePaulo Ragonha
 
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...FalafelSoftware
 
The Best (and Worst) of Django
The Best (and Worst) of DjangoThe Best (and Worst) of Django
The Best (and Worst) of DjangoJacob Kaplan-Moss
 

Similar to Choosing a Javascript Framework (20)

Basics of AngularJS
Basics of AngularJSBasics of AngularJS
Basics of AngularJS
 
Introduction to angular js
Introduction to angular jsIntroduction to angular js
Introduction to angular js
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
AngularJS
AngularJSAngularJS
AngularJS
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
Good karma: UX Patterns and Unit Testing in Angular with Karma
Good karma: UX Patterns and Unit Testing in Angular with KarmaGood karma: UX Patterns and Unit Testing in Angular with Karma
Good karma: UX Patterns and Unit Testing in Angular with Karma
 
AngularJS: The Bridge Between Today and Tomorrow's Web (Todd Motto)
AngularJS: The Bridge Between Today and Tomorrow's Web (Todd Motto)AngularJS: The Bridge Between Today and Tomorrow's Web (Todd Motto)
AngularJS: The Bridge Between Today and Tomorrow's Web (Todd Motto)
 
Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!
 
AngularJS.part1
AngularJS.part1AngularJS.part1
AngularJS.part1
 
Javascript unit testing, yes we can e big
Javascript unit testing, yes we can   e bigJavascript unit testing, yes we can   e big
Javascript unit testing, yes we can e big
 
AngularJS Basic Training
AngularJS Basic TrainingAngularJS Basic Training
AngularJS Basic Training
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
 
Get AngularJS Started!
Get AngularJS Started!Get AngularJS Started!
Get AngularJS Started!
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
 
Web Components Everywhere
Web Components EverywhereWeb Components Everywhere
Web Components Everywhere
 
Angular
AngularAngular
Angular
 
Angular
AngularAngular
Angular
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
 
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
 
The Best (and Worst) of Django
The Best (and Worst) of DjangoThe Best (and Worst) of Django
The Best (and Worst) of Django
 

More from All Things Open

Building Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityBuilding Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityAll Things Open
 
Modern Database Best Practices
Modern Database Best PracticesModern Database Best Practices
Modern Database Best PracticesAll Things Open
 
Open Source and Public Policy
Open Source and Public PolicyOpen Source and Public Policy
Open Source and Public PolicyAll Things Open
 
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...All Things Open
 
The State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashThe State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashAll Things Open
 
Total ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptTotal ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptAll Things Open
 
What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?All Things Open
 
How to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractHow to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractAll Things Open
 
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlowAll Things Open
 
DEI Challenges and Success
DEI Challenges and SuccessDEI Challenges and Success
DEI Challenges and SuccessAll Things Open
 
Scaling Web Applications with Background
Scaling Web Applications with BackgroundScaling Web Applications with Background
Scaling Web Applications with BackgroundAll Things Open
 
Supercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblySupercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblyAll Things Open
 
Using SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksUsing SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksAll Things Open
 
Configuration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptConfiguration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptAll Things Open
 
Scaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramScaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramAll Things Open
 
Build Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceBuild Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceAll Things Open
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamAll Things Open
 
Sudo – Giving access while staying in control
Sudo – Giving access while staying in controlSudo – Giving access while staying in control
Sudo – Giving access while staying in controlAll Things Open
 
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsFortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsAll Things Open
 
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...All Things Open
 

More from All Things Open (20)

Building Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityBuilding Reliability - The Realities of Observability
Building Reliability - The Realities of Observability
 
Modern Database Best Practices
Modern Database Best PracticesModern Database Best Practices
Modern Database Best Practices
 
Open Source and Public Policy
Open Source and Public PolicyOpen Source and Public Policy
Open Source and Public Policy
 
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
 
The State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashThe State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil Nash
 
Total ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptTotal ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScript
 
What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?
 
How to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractHow to Write & Deploy a Smart Contract
How to Write & Deploy a Smart Contract
 
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 
DEI Challenges and Success
DEI Challenges and SuccessDEI Challenges and Success
DEI Challenges and Success
 
Scaling Web Applications with Background
Scaling Web Applications with BackgroundScaling Web Applications with Background
Scaling Web Applications with Background
 
Supercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblySupercharging tutorials with WebAssembly
Supercharging tutorials with WebAssembly
 
Using SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksUsing SQL to Find Needles in Haystacks
Using SQL to Find Needles in Haystacks
 
Configuration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptConfiguration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit Intercept
 
Scaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramScaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship Program
 
Build Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceBuild Developer Experience Teams for Open Source
Build Developer Experience Teams for Open Source
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache Beam
 
Sudo – Giving access while staying in control
Sudo – Giving access while staying in controlSudo – Giving access while staying in control
Sudo – Giving access while staying in control
 
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsFortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
 
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
 

Recently uploaded

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 

Recently uploaded (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 

Choosing a Javascript Framework