SlideShare a Scribd company logo
FRONTEND
IN 2015
CLEAR THE DECKS
VIEW ON GITHUB
USER EXPERIENCE
CLIENT EXPERIENCE
DEVELOPER EXPERIENCE
Always bet on JS!
- Brendan Eich
JAVASCRIPT USAGE
2011 2013 2015
None 61.8% 39.6% 35.0%
jQuery 28.3% 54.5% 61.5%
Modernizr 7.2%
Bootstrap 5.9%
W3Techs
TechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend Technologies
INLINE JAVASCRIPT
AJAX (ASYNC)
SINGLE PAGE APPLICATIONS
UNIVERSAL JAVASCRIPT
PICK YOUR POISON
FRAMEWORKS LIBRARIES
TechTalk #85 : Latest Frontend Technologies
FRAMEWORKS
SWISS KNIVES
ANGULARJS
EMBER.JS
BACKBONE.JS
KNOCKOUT.JS
POLYMER
METEOR
TechTalk #85 : Latest Frontend Technologies
<section id="main" ng‐show="todos.length" ng‐cloak> 
  <input id="toggle‐all" type="checkbox" ng‐model="allChecked" 
    ng‐click="markAll(allChecked)"> 
  <label for="toggle‐all">Mark all as complete</label> 
  <ul id="todo‐list"> 
    <li ng‐repeat="todo in todos | filter:statusFilter track by $index" 
      ng‐class="{completed: todo.completed, editing: todo == editedTodo}"> 
      <div class="view"> 
        <input class="toggle" type="checkbox" ng‐model="todo.completed"> 
        <label ng‐dblclick="editTodo(todo)">{{todo.title}}</label> 
        <button class="destroy" ng‐click="removeTodo(todo)"></button> 
      </div> 
      <form ng‐submit="doneEditing(todo)"> 
        <input class="edit" ng‐trim="false" ng‐model="todo.title" 
          ng‐blur="doneEditing(todo)" 
          todo‐escape="revertEditing(todo)" 
          todo‐focus="todo == editedTodo"> 
      </form> 
    </li> 
  </ul> 
</section>
TechTalk #85 : Latest Frontend Technologies
{{#if length}} 
  <footer id="footer"> 
    <span id="todo‐count"><strong>{{remaining.length}}</strong> 
      {{pluralize 'item' remaining.length}} left</span> 
    <ul id="filters"> 
      <li> 
        {{#link‐to "todos.index" activeClass="selected"}}All{{/link‐to}} 
      </li> 
      <li> 
        {{#link‐to "todos.active" activeClass="selected"}}Active{{/link‐to}} 
      </li> 
      <li> 
        {{#link‐to "todos.completed" activeClass="selected"}}Completed{{/link‐to}} 
      </li> 
    </ul> 
    {{#if completed.length}} 
      <button id="clear‐completed" {{action "clearCompleted"}}>Clear completed</button> 
    {{/if}} 
  </footer> 
{{/if}}
TechTalk #85 : Latest Frontend Technologies
<section id="main"> 
  <input id="toggle‐all" type="checkbox"> 
  <label for="toggle‐all">Mark all as complete</label> 
  <ul id="todo‐list"></ul> 
</section> 
// bindings at JavaScript side! 
TechTalk #85 : Latest Frontend Technologies
<section id="main" data‐bind="visible: todos().length"> 
  <input id="toggle‐all" data‐bind="checked: allCompleted" type="checkbox"> 
  <label for="toggle‐all">Mark all as complete</label> 
  <ul id="todo‐list" data‐bind="foreach: filteredTodos"> 
    <li data‐bind="css: { completed: completed, editing: editing }"> 
      <div class="view"> 
        <input class="toggle" data‐bind="checked: completed" type="checkbox"> 
        <label data‐bind="text: title, event: { dblclick: $root.editItem }"></label> 
        <button class="destroy" data‐bind="click: $root.remove"></button> 
      </div> 
      <input class="edit" data‐bind="value: title, valueUpdate: 'afterkeydown', 
        enterKey: $root.saveEditing, escapeKey: $root.cancelEditing, 
        selectAndFocus: editing, event: { blur: $root.stopEditing }"> 
    </li> 
  </ul> 
</section> 
TechTalk #85 : Latest Frontend Technologies
<section id="main" hidden?="{{model.items.length == 0}}"> 
  <input id="toggle‐all" type="checkbox" 
    on‐change="{{toggleAllCompletedAction}}" 
    checked="{{model.allCompleted}}"> 
  <label for="toggle‐all">Mark all as complete</label> 
  <ul id="todo‐list" 
      on‐td‐item‐changed="{{itemChangedAction}}" 
      on‐td‐destroy‐item="{{destroyItemAction}}"> 
    <template repeat="{{model.filtered}}"> 
      <li is="td‐item" item="{{}}"></li> 
    </template> 
  </ul> 
</section>
TechTalk #85 : Latest Frontend Technologies
<section id="main"> 
  <input id="toggle‐all" type="checkbox" 
    {{#unless todos_not_completed}}checked="checked"{{/unless}}>
  <label for="toggle‐all">Mark all as complete</label> 
  <ul id="todo‐list"> 
    {{#each todos}} 
      {{> todo}} 
    {{/each}} 
  </ul> 
</section>
COMPARISON
Framework Description
AngularJS Google backed, full featured, 2.0 in sight
Ember.js Niche, popular with rubists, reached 2.0 recently
Backbone.js Used to be popular, still in use, focus on model
Knockout.js MVVM, niche, focus on data binding
Polymer Web Components
Meteor Both front-end and back-end
LIBRARIESFOR SPECIFIC PROBLEMS
VIEW LIBRARIES
REACT.JS
VUE.JS
RACTIVE.JS
CYCLE.JS
+ 1 000 MORE
TechTalk #85 : Latest Frontend Technologies
OVERVIEW OF REACT
Virtual DOM
Component oriented!
state, props, lifecycle
React Native
react-blessed
CAT COUNTER
I've seen 0 cats
Saw a Cat
import React from "react"; 
import Heading from "../src/heading"; 
export default class CatCounter extends React.Component { 
  constructor(props) { 
    super(props); 
    this.state = { count: 0 }; 
    this.sawCat = this.sawCat.bind(this); 
  } 
  render() { 
    const styles = { 
      padding: 20, 
      background: "black", 
      border: "none", 
      color: "white", 
      fontWeight: "bold", 
      fontSize: "2em" 
    }; 
    return ( 
      <div> 
        <Heading size={5} textColor="black">I've seen {this.state.count} cats</Heading> 
        <button style={styles} type="button" onClick={this.sawCat}>Saw a Cat</button> 
      </div> 
    ); 
  } 
  sawCat() { 
    this.setState({ count: this.state.count + 1 }); 
  } 
} 
// app.jsx 
<section className="main"> 
  <input 
    className="toggle‐all" 
    type="checkbox" 
    onChange={this.toggleAll} 
    checked={activeTodoCount === 0} 
  /> 
  <ul className="todo‐list"> 
    {todoItems} 
  </ul> 
</section>
TechTalk #85 : Latest Frontend Technologies
<section class="main" v‐show="todos.length" v‐cloak> 
  <input class="toggle‐all" type="checkbox" v‐model="allDone"> 
  <ul class="todo‐list"> 
    <li class="todo" v‐repeat="todo: filteredTodos" 
      v‐class="completed: todo.completed, editing: todo == editedTodo"> 
      <div class="view"> 
        <input class="toggle" type="checkbox" v‐model="todo.completed"> 
        <label v‐on="dblclick: editTodo(todo)">{{todo.title}}</label> 
        <button class="destroy" v‐on="click: removeTodo(todo)"></button> 
      </div> 
      <input class="edit" type="text" v‐model="todo.title" 
        v‐todo‐focus="todo == editedTodo" 
        v‐on="blur: doneEdit(todo), keyup: doneEdit(todo) | key 'enter', 
          keyup: cancelEdit(todo) | key 'esc'"> 
    </li> 
  </ul> 
</section>
TechTalk #85 : Latest Frontend Technologies
<section id="main"> 
  <!‐‐ Here, we compare the total number of tasks (`items.length`) with 
  the number of completed tasks (`completedTasks().length`). This calculation 
  happens reactively, so we never need to manually trigger an update. 
  When the `change` event fires on the input, the `toggleAll` event fires 
  on the Ractive instance. ‐‐> 
  <input id="toggle‐all" type="checkbox" on‐change="toggleAll" 
    checked='{{ items.length === completedTasks().length }}'> 
  <label for="toggle‐all">Mark all as complete</label> 
  <ul id="todo‐list"> 
    {{#items:i}} 
      <!‐‐ The {{>item}} partial is defined in the script tag below ‐‐> 
      {{>item}} 
    {{/items}} 
  </ul> 
</section>
TechTalk #85 : Latest Frontend Technologies
function vrenderMainSection(todosData) { 
  let allCompleted = todosData.list.reduce((x, y) => x && y.completed, true); 
  return h('section#main', { 
    style: {'display': todosData.list.length ? '' : 'none'} 
  }, [ 
    h('input#toggle‐all', { 
      type: 'checkbox', 
      checked: allCompleted 
    }), 
    h('ul#todo‐list', todosData.list 
      .filter(todosData.filterFn) 
      .map(todoData => 
        h('todo‐item.todo‐item', { 
          key: todoData.id, 
          todoid: todoData.id, 
          content: todoData.title, 
          completed: todoData.completed 
        }) 
      ) 
    ) 
  ]) 
}
COMPARISON
Library Description
React.js Backed by Facebook, strong ecosystem
Vue.js Niche alternative
Ractive.js Reactive templates by The Guardian
Cycle.js Reactive newcomer
ROUTERS
ROUTERS
react-router - React
reactive-router - React
flow-router - Meteor
router5
Job Trends
Indeed
Job Trends II
Indeed
ARCHITECTURE
THE ART OF WASTING
SPACE
STATIC SITES
DYNAMIC SITES
REST
RELAY/FALCOR
THE GRID
Design is the beauty of
turning constraints into
advantages
- Aza Raskin
npmFOR KEEPING THINGS
TOGETHER
Module Counts
modulecounts.com
182k+ packages and growing fast
Dependency management
Package authoring
Both frontend/backend
package.json
{ 
  "name": "react‐component‐boilerplate", 
  "description": "Boilerplate for React.js components", 
  "author": "Juho Vepsalainen", 
  "version": "0.6.0", 
  "scripts": { 
    "start": "node lib/dev_server.js", 
    "test": "jest && npm run lint", 
    "gh‐pages": "webpack ‐‐colors", 
    "deploy‐gh‐pages": "node ./lib/deploy_gh_pages.js", 
    "dist‐all": "npm run dist && npm run dist‐min", 
    "dist": "webpack ‐‐colors", 
    ... 
  }, 
  "main": "dist‐modules/index.js", 
  "dependencies": {...}, 
  "devDependencies": {...}, 
  ... 
} 
BUILD TOOLS
HARD TO LIVE WITHOUT
1ST GEN.
Make
2ND GEN.
Grunt
Gulp
Broccoli
3RD GEN.
Browserify
Webpack
JSPM
MAKE
PATH  := node_modules/.bin:$(PATH) 
SHELL := /bin/bash 
build/templates.js: templates/*.handlebars 
    mkdir ‐p $(dir $@) 
    handlebars templates/*.handlebars > $@
Building JavaScript projects with Make
TechTalk #85 : Latest Frontend Technologies
module.exports = function(grunt) { 
  grunt.initConfig({ 
    jshint: { 
      files: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'], 
      options: { 
        globals: { 
          jQuery: true 
        } 
      } 
    }, 
    watch: { 
      files: ['<%= jshint.files %>'], 
      tasks: ['jshint'] 
    } 
  }); 
  grunt.loadNpmTasks('grunt‐contrib‐jshint'); 
  grunt.loadNpmTasks('grunt‐contrib‐watch'); 
  grunt.registerTask('default', ['jshint']); 
};
Grunt documentation
TechTalk #85 : Latest Frontend Technologies
var gulp = require('gulp'); 
var del = require('del'); 
var paths = { 
    scripts: ['client/js/**/*.coffee', '!client/external/**/*.coffee'] 
}; 
// Not all tasks need to use streams 
// A gulpfile is just another node program and you can use all packages available on npm 
gulp.task('clean', function(cb) { 
  // You can use multiple globbing patterns as you would with `gulp.src` 
  del(['build'], cb); 
}); 
... 
// Rerun the task when a file changes 
gulp.task('watch', function() { 
  gulp.watch(paths.scripts, ['scripts']); 
}); 
// The default task (called when you run `gulp` from cli) 
gulp.task('default', ['watch', 'scripts']); 
Gulp README
TechTalk #85 : Latest Frontend Technologies
... 
// create tree for files in the app folder 
var app = 'app' 
app = pickFiles(app, { 
  srcDir: '/', 
  destDir: 'appkit' // move under appkit namespace 
}) 
app = preprocess(app) 
// create tree for files in the styles folder 
var styles = 'styles' 
styles = pickFiles(styles, { 
  srcDir: '/', 
  destDir: 'appkit' // move under appkit namespace 
}) 
styles = preprocess(styles) 
... 
broccoli-sample-app
TechTalk #85 : Latest Frontend Technologies
browserify index.js ‐o bundle.js 
TechTalk #85 : Latest Frontend Technologies
var webpack = require('webpack'); 
module.exports = { 
  entry: './entry.js', 
  output: { 
    path: __dirname, 
    filename: 'bundle.js' 
  }, 
  module: { 
    loaders: [ 
      { 
        test: /.css$/, 
        loaders: ['style', 'css'] 
      } 
    ] 
  }, 
  plugins: [ 
    new webpack.optimize.UglifyJsPlugin() 
  ] 
};
TechTalk #85 : Latest Frontend Technologies
  <!doctype html> 
  <script src="jspm_packages/system.js"></script> 
  <script src="config.js"></script> 
  <script> 
    System.import('lib/main'); 
  </script>
JSPM - Getting Started Glen Maddern's video tutorial
HTTP2
PRODUCTIVITY
FOR FUN AND PROFIT
CLASSIC
ERA
Ctrl-R
AUTOMATIC
ERA
LiveReload
Browsersync
LIVE
EDITING
React Hot Loader
LiveReactload
CSS PROCESSORS
BECAUSE VANILLA ISN'T
ENOUGH
BEM, OOCSS,
SMACSS
SOLVING CSS WITHIN CSS
SASS, LESS, STYLUS
BETTER LANGUAGES
POSTCSS, CSSNEXT
EXTENSIONS
Deconfusing Pre- and Post-processing
INLINE CSS (REACT)
BACK TO THE FUTURE?
CSS MODULES
ELIMINATES GLOBALS,
MODULARITY++
ES2015, ES2016, ...
VERSION PER YEAR
BABEL
THE FUTURE NOW
JavaScript compiler
JSX support out of box
Easy to set up
See also Google Traceur
altJSALTERNATIVES TO
VANILLA
CoffeeScript
TypeScript
Flow - Gradual typing
And many others
LINTINGTO KEEP BUGS AT BAY
ESLINT
PLUGGABLE LINTING FOR
JAVASCRIPT
CSSLINT
RULES FOR IMPROVING
YOUR CSS
TESTINGTO MAKE THINGS WORK
FOR SURE
SELENIUM
PROTRACTOR
JASMINE
MOCHA
...
WEB COMPONENTS
THE FUTURE?
Fragmentation (Bootstrap for AngularJS, Ember, React, ...)
What if there was only one canonical version of libraries?
Improved reuse, sharing across projects, less waste
CONCLUSION
TO RECAP
Prepare to clear the decks often
A lot to learn but focus pays off
Towards a component based future?
QUESTIONS?
MADE WITH LOVE IN FINLAND BY
JUHO VEPSÄLÄINEN
READ MY BOOK
SURVIVEJS - WEBPACK AND REACT
Ad

More Related Content

Viewers also liked (20)

Front end Tips Tricks & Tools
Front end Tips Tricks & ToolsFront end Tips Tricks & Tools
Front end Tips Tricks & Tools
Sandeep Ramgolam
 
Frontend SPOF
Frontend SPOFFrontend SPOF
Frontend SPOF
Patrick Meenan
 
Frontend automation and stability
Frontend automation and stabilityFrontend automation and stability
Frontend automation and stability
Máté Nádasdi
 
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Edureka!
 
Sinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo MalangSinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo Malang
Moch. Zamroni
 
Architecting your Frontend
Architecting your FrontendArchitecting your Frontend
Architecting your Frontend
Ruben Teijeiro
 
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with PhantomasGrunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
David Amend
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
Joseph Chiang
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web Applications
Ryan Roemer
 
A modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianA modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at Atlassian
Magnolia
 
How to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSHow to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJS
Phil Leggetter
 
W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realities
Brad Hill
 
Frontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr StoryFrontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr Story
Chris Miller
 
Front End Development Workflow Tools
Front End Development Workflow ToolsFront End Development Workflow Tools
Front End Development Workflow Tools
Ahmed Elmehri
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
Prasid Pathak
 
engage 2015 - Domino App Development - Where should I go now?
engage 2015 - Domino App Development - Where should I go now?engage 2015 - Domino App Development - Where should I go now?
engage 2015 - Domino App Development - Where should I go now?
René Winkelmeyer
 
Front End Development - Beyond Javascript (Robin Cannon)
Front End Development - Beyond Javascript (Robin Cannon)Front End Development - Beyond Javascript (Robin Cannon)
Front End Development - Beyond Javascript (Robin Cannon)
Future Insights
 
Modern front end development
Modern front end developmentModern front end development
Modern front end development
Tomislav Mesić
 
Scaling Front-End Performance - Velocity 2016
Scaling Front-End Performance - Velocity 2016Scaling Front-End Performance - Velocity 2016
Scaling Front-End Performance - Velocity 2016
Patrick Meenan
 
DIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayDIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development today
Bojan Veljanovski
 
Front end Tips Tricks & Tools
Front end Tips Tricks & ToolsFront end Tips Tricks & Tools
Front end Tips Tricks & Tools
Sandeep Ramgolam
 
Frontend automation and stability
Frontend automation and stabilityFrontend automation and stability
Frontend automation and stability
Máté Nádasdi
 
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Edureka!
 
Sinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo MalangSinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo Malang
Moch. Zamroni
 
Architecting your Frontend
Architecting your FrontendArchitecting your Frontend
Architecting your Frontend
Ruben Teijeiro
 
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with PhantomasGrunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
David Amend
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
Joseph Chiang
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web Applications
Ryan Roemer
 
A modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianA modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at Atlassian
Magnolia
 
How to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSHow to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJS
Phil Leggetter
 
W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realities
Brad Hill
 
Frontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr StoryFrontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr Story
Chris Miller
 
Front End Development Workflow Tools
Front End Development Workflow ToolsFront End Development Workflow Tools
Front End Development Workflow Tools
Ahmed Elmehri
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
Prasid Pathak
 
engage 2015 - Domino App Development - Where should I go now?
engage 2015 - Domino App Development - Where should I go now?engage 2015 - Domino App Development - Where should I go now?
engage 2015 - Domino App Development - Where should I go now?
René Winkelmeyer
 
Front End Development - Beyond Javascript (Robin Cannon)
Front End Development - Beyond Javascript (Robin Cannon)Front End Development - Beyond Javascript (Robin Cannon)
Front End Development - Beyond Javascript (Robin Cannon)
Future Insights
 
Modern front end development
Modern front end developmentModern front end development
Modern front end development
Tomislav Mesić
 
Scaling Front-End Performance - Velocity 2016
Scaling Front-End Performance - Velocity 2016Scaling Front-End Performance - Velocity 2016
Scaling Front-End Performance - Velocity 2016
Patrick Meenan
 
DIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayDIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development today
Bojan Veljanovski
 

Similar to TechTalk #85 : Latest Frontend Technologies (20)

Biwug
BiwugBiwug
Biwug
akshay_ankur
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
Nicolas PENNEC
 
Coding Ui
Coding UiCoding Ui
Coding Ui
rajivmordani
 
Coding the UI
Coding the UICoding the UI
Coding the UI
Mark Meeker
 
AngularJS for Legacy Apps
AngularJS for Legacy AppsAngularJS for Legacy Apps
AngularJS for Legacy Apps
Peter Drinnan
 
Angular js
Angular jsAngular js
Angular js
Geeks Anonymes
 
AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014
Dariusz Kalbarczyk
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
Joonas Lehtinen
 
Get MEAN! Node.js and the MEAN stack
Get MEAN!  Node.js and the MEAN stackGet MEAN!  Node.js and the MEAN stack
Get MEAN! Node.js and the MEAN stack
Nicholas McClay
 
StHack 2014 - Mario "@0x6D6172696F" Heiderich - JSMVCOMFG
StHack 2014 - Mario "@0x6D6172696F" Heiderich - JSMVCOMFGStHack 2014 - Mario "@0x6D6172696F" Heiderich - JSMVCOMFG
StHack 2014 - Mario "@0x6D6172696F" Heiderich - JSMVCOMFG
StHack
 
Vaadin Components
Vaadin ComponentsVaadin Components
Vaadin Components
Joonas Lehtinen
 
Helen Zhukova "JS static typing. What and why."
Helen Zhukova "JS static typing. What and why."Helen Zhukova "JS static typing. What and why."
Helen Zhukova "JS static typing. What and why."
OdessaJS Conf
 
How EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
How EVERFI Moved from No Automation to Continuous Test Generation in 9 MonthsHow EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
How EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
Applitools
 
Valentine with AngularJS
Valentine with AngularJSValentine with AngularJS
Valentine with AngularJS
Vidyasagar Machupalli
 
From Web App Model Design to Production with Wakanda
From Web App Model Design to Production with WakandaFrom Web App Model Design to Production with Wakanda
From Web App Model Design to Production with Wakanda
Alexandre Morgaut
 
Javascript
JavascriptJavascript
Javascript
Mayank Bhatt
 
Wt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technologyWt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technology
PUNE VIDYARTHI GRIHA'S COLLEGE OF ENGINEERING, NASHIK
 
Wt unit 2 ppts client side technology
Wt unit 2 ppts client side technologyWt unit 2 ppts client side technology
Wt unit 2 ppts client side technology
PUNE VIDYARTHI GRIHA'S COLLEGE OF ENGINEERING, NASHIK
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
Software Park Thailand
 
Html5
Html5Html5
Html5
Rajesh Khetan
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
Nicolas PENNEC
 
AngularJS for Legacy Apps
AngularJS for Legacy AppsAngularJS for Legacy Apps
AngularJS for Legacy Apps
Peter Drinnan
 
AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014
Dariusz Kalbarczyk
 
Get MEAN! Node.js and the MEAN stack
Get MEAN!  Node.js and the MEAN stackGet MEAN!  Node.js and the MEAN stack
Get MEAN! Node.js and the MEAN stack
Nicholas McClay
 
StHack 2014 - Mario "@0x6D6172696F" Heiderich - JSMVCOMFG
StHack 2014 - Mario "@0x6D6172696F" Heiderich - JSMVCOMFGStHack 2014 - Mario "@0x6D6172696F" Heiderich - JSMVCOMFG
StHack 2014 - Mario "@0x6D6172696F" Heiderich - JSMVCOMFG
StHack
 
Helen Zhukova "JS static typing. What and why."
Helen Zhukova "JS static typing. What and why."Helen Zhukova "JS static typing. What and why."
Helen Zhukova "JS static typing. What and why."
OdessaJS Conf
 
How EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
How EVERFI Moved from No Automation to Continuous Test Generation in 9 MonthsHow EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
How EVERFI Moved from No Automation to Continuous Test Generation in 9 Months
Applitools
 
From Web App Model Design to Production with Wakanda
From Web App Model Design to Production with WakandaFrom Web App Model Design to Production with Wakanda
From Web App Model Design to Production with Wakanda
Alexandre Morgaut
 
Ad

More from bincangteknologi (7)

Qiscus enterprice for Hotels
Qiscus enterprice for HotelsQiscus enterprice for Hotels
Qiscus enterprice for Hotels
bincangteknologi
 
TechTalk #70 : REAL PROGRAMMER USE REGEX
TechTalk #70 : REAL PROGRAMMER USE REGEXTechTalk #70 : REAL PROGRAMMER USE REGEX
TechTalk #70 : REAL PROGRAMMER USE REGEX
bincangteknologi
 
TechTalk #69 : How to setup and run laravel apps inside vagrant
TechTalk #69 : How to setup and run laravel apps inside vagrantTechTalk #69 : How to setup and run laravel apps inside vagrant
TechTalk #69 : How to setup and run laravel apps inside vagrant
bincangteknologi
 
TechTalk #67 : Introduction to Ruby and Sinatra
TechTalk #67 : Introduction to Ruby and SinatraTechTalk #67 : Introduction to Ruby and Sinatra
TechTalk #67 : Introduction to Ruby and Sinatra
bincangteknologi
 
Ddd part 2 modelling qiscus
Ddd part 2   modelling qiscusDdd part 2   modelling qiscus
Ddd part 2 modelling qiscus
bincangteknologi
 
Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"
bincangteknologi
 
Arduino + Android
Arduino + AndroidArduino + Android
Arduino + Android
bincangteknologi
 
Qiscus enterprice for Hotels
Qiscus enterprice for HotelsQiscus enterprice for Hotels
Qiscus enterprice for Hotels
bincangteknologi
 
TechTalk #70 : REAL PROGRAMMER USE REGEX
TechTalk #70 : REAL PROGRAMMER USE REGEXTechTalk #70 : REAL PROGRAMMER USE REGEX
TechTalk #70 : REAL PROGRAMMER USE REGEX
bincangteknologi
 
TechTalk #69 : How to setup and run laravel apps inside vagrant
TechTalk #69 : How to setup and run laravel apps inside vagrantTechTalk #69 : How to setup and run laravel apps inside vagrant
TechTalk #69 : How to setup and run laravel apps inside vagrant
bincangteknologi
 
TechTalk #67 : Introduction to Ruby and Sinatra
TechTalk #67 : Introduction to Ruby and SinatraTechTalk #67 : Introduction to Ruby and Sinatra
TechTalk #67 : Introduction to Ruby and Sinatra
bincangteknologi
 
Ddd part 2 modelling qiscus
Ddd part 2   modelling qiscusDdd part 2   modelling qiscus
Ddd part 2 modelling qiscus
bincangteknologi
 
Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"
bincangteknologi
 
Ad

Recently uploaded (20)

Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New VersionPixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
saimabibi60507
 
WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)
sh607827
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025
mu394968
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New VersionPixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
saimabibi60507
 
WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)WinRAR Crack for Windows (100% Working 2025)
WinRAR Crack for Windows (100% Working 2025)
sh607827
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025
mu394968
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 

TechTalk #85 : Latest Frontend Technologies