SlideShare a Scribd company logo
Feature Development
    with jQuery


        Mike Edwards
        medwards20x6@gmail.com
About Me
Mike Edwards
M.S. Computer Science, University of Iowa
Started building web applications professionally in 2000

JavaScript expert level
jQuery: Started using it about 1.5 years ago
Used extensively since then

I'm very interested in common themes across different
technologies
Outline
● Introduction
  ○ UserScripts: Greasemonkey, Tampermonkey
  ○ Filtering Script: Demo, Code Review
● Thinking about Perspective
  ○ Looking at the same thing from a different angle
  ○ The Perspective of Source Control
  ○ Filtering Script: From a New Perspective
● A Basic MVC Plugin Architecture
  ○ Modular Architecture
  ○ Refactoring: Quick Intro
  ○ jQuery & MVC
  ○ Plugin Ecosystems
  ○ Filtering: Refactored
User Scripts
● Supporting Add-ons:
   ○ Greasemonkey, Tampermonkey
● Scripts are installed by the user in their
  browser, not by a web admin on the server
● User scripts make on-the-fly changes to a
  web page's content as the page is loaded
  into the users browser
● As long as the script doesn't use any of it's
  escalated privileges, it can be loaded directly
  onto the server for all users
Filter/Sort Demo
Filtering Script:
Code Review
Filtering Script:
Code Review
Old Lady/Young Lady
Thinking about Perspective
● Sometimes the same thing looks very
  different from another perspective
Perspective: Computability
● This concept runs right to the bedrock of all
  Computer Science
● Church/Turing Thesis
   ○ Lambda Calculus and Turing Machines are
     equivalent ways of looking at computability
● Electrical Engineering: You can build an
  entire CPU out of just NAND logic gates.
  You can also build it out of just NOR logic
  gates.
Source Control
Branching & Merging
Filtering Script:
A New Perspective
Merge or Modularize
● jQuery "Feature Files" consist of "payload" code and
    "merge instructions" about where to splice in the
    payloads
●   One approach once we've successfully prototyped a new
    feature is to then manually merge it into the application
    code-base (Feature Branching/Merge)
●   Feature Branching is a poor man's modular architecture, instead of
    building systems with the ability to easy swap in and out features at
    runtime / deploytime they couple themselves to the source control
    providing this mechanism through manual merging.
    -- Dan Bodart
    http://martinfowler.com/bliki/FeatureBranch.html
Technical Debt & Refactoring
● Technical Debt:
        "You have a piece of functionality that you need to add to your system.
   You see two ways to do it, one is quick to do but is messy - you are sure
   that it will make further changes harder in the future. The other results in a
   cleaner design, but will take longer to put in place."
   - Martin Fowler
● Refactoring:
        "a disciplined technique for restructuring an existing body of code,
   altering its internal structure without changing its external behavior"
   - Wikipedia
Plugin Ecosystems
● Users can decide for themselves via
  configuration which features they need
● Third-party developers can potentially
  enhance the value of your product at no cost
  to you
● An API built for plugins can be used for
  integration with partner applications and/or
  used as a backend for additional platforms
  (mobile web, mobile native)
MVC Architecture
Modern Web Architecture
Web 2.0 Thick-client
    One-Page App
Web 2.0 & MVC
jQueries Responsibilities
MVC Frameworks
jQuery & MVC cont.
● Most "MVC" frameworks focus on "MV"
   ○ Observable models
   ○ Template based rendering
   ○ Data Binding/Automatic re-rendering
● jQuery specializes in "C" with a side of "V"
   ○ Event Handlers
   ○ AJAX
   ○ Powerful ability to update the View in real-time, but
     no template support or observable models
Filtering Plugin:
Basic Plugin Framework
Filtering Plugin:
Plugin Loader
Filtering Plugin:
Model
Filtering Plugin:
View
Filtering Plugin:
Controller
jQuery Pitfall
Refactoring Continued...
● Pitfall: Because jQuery is so good at
  Querying the view, it can be tempting to
  simply treat the view as your model.
● This is okay for prototypes and tiny features,
  but should be refactored when possible

● We've re-organized the code by it's MVC
  role, which is a start
● Still need to flesh-out and integrate with the
  underlying application infrastructure
Branch/Merge vs Plugins

Version Control   Plugin Architecture


Trunk             Application Core Architecture


Branch            Start New Plugin


Merge/Patch       Load Plugin at Run-time


Cherry-picking    Enable/Disable Plugins
Conclusion
● jQueries power comes, at least partly, from
  it's ability to weave "merge" code inline
● An alternate way to view this is that jQuery
  provides the infrastructure necessary to
  create Application level plugins
● Aspect-Oriented Programming as an entire
  field dedicated to this kind of thinking
Discussion
Mike Edwards
medwards20x6@gmail.com

More Related Content

PPTX
Aplicaciones en tiempo real con ReactJS y SignalR Core
PDF
Itroducing Angular JS
PDF
Android application architecture
PPTX
Feature flag launchdarkly
PPT
Google Web Toolkit
PPTX
[Android] DI in multimodule application
PPT
Impact Of A Cms Framework Change - Holland Open Netherlands
Aplicaciones en tiempo real con ReactJS y SignalR Core
Itroducing Angular JS
Android application architecture
Feature flag launchdarkly
Google Web Toolkit
[Android] DI in multimodule application
Impact Of A Cms Framework Change - Holland Open Netherlands

What's hot (20)

PDF
Introduction to React JS
PPTX
Developing dynamic ui using react
PPTX
React vs angular what to choose for your app
PPTX
JavaScript - Kristiansand PHP
PDF
iOS architecture patterns
PPTX
Introduction to react js and reasons to go with react js in 2020
PDF
Component based architecture
PPTX
Design Patterns for Smart Applications
PDF
Building blocks of Angular
PDF
React.js vs angular.js a comparison
PPTX
iOS Architectures
PDF
React.js vs node.js
PDF
Introduction to React Native
PPT
Super slideshow 2
PPTX
REACT JS COACHING CENTER IN CHANDIGARH
PPTX
React js Introduction
PDF
Front end microservices - October 2019
PPTX
Say hello to react js - Day 1
PPTX
The Complete React Learning Course
PDF
Angularjs [Bahasa Indonesia]
Introduction to React JS
Developing dynamic ui using react
React vs angular what to choose for your app
JavaScript - Kristiansand PHP
iOS architecture patterns
Introduction to react js and reasons to go with react js in 2020
Component based architecture
Design Patterns for Smart Applications
Building blocks of Angular
React.js vs angular.js a comparison
iOS Architectures
React.js vs node.js
Introduction to React Native
Super slideshow 2
REACT JS COACHING CENTER IN CHANDIGARH
React js Introduction
Front end microservices - October 2019
Say hello to react js - Day 1
The Complete React Learning Course
Angularjs [Bahasa Indonesia]
Ad

Viewers also liked (20)

PPT
Cmmi adptando cmmi a proyectos pequeños weinberg[1]
PDF
6.[35 40]toward an integrated framework for language testing and intervention
PPTX
Making Effective Presentations
PDF
5 reasons why every business owner must understand unified communications
PPTX
giaibongda.com pitch deck
PPT
Cmmi hm 2008 sepg model changes for high maturity 1v01[1]
PPTX
Voxeo Summit Day 1 - Prophecy log search
DOCX
About me
PPTX
Preparados para el día menos pensado
PDF
Qm material specs
PDF
Sindrome de Niggle CAS2015
PPTX
Introduction to Portland State's New Venture Management Course
ODP
Kailaine e karine
PPTX
Conférence Bercy - Futurs de l'Etat - mai 2016
PPTX
Septembre 2015 - Conférence Saint Gobain - Corporate Hackez votre organisatio...
PPTX
Las 10 mejores canciones de trance
PPT
Ted talks
PPT
Presentation lanie
PDF
Les rencontres e tourisme anglet MOPA - Week-ends Picardie, une opération rég...
PDF
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
Cmmi adptando cmmi a proyectos pequeños weinberg[1]
6.[35 40]toward an integrated framework for language testing and intervention
Making Effective Presentations
5 reasons why every business owner must understand unified communications
giaibongda.com pitch deck
Cmmi hm 2008 sepg model changes for high maturity 1v01[1]
Voxeo Summit Day 1 - Prophecy log search
About me
Preparados para el día menos pensado
Qm material specs
Sindrome de Niggle CAS2015
Introduction to Portland State's New Venture Management Course
Kailaine e karine
Conférence Bercy - Futurs de l'Etat - mai 2016
Septembre 2015 - Conférence Saint Gobain - Corporate Hackez votre organisatio...
Las 10 mejores canciones de trance
Ted talks
Presentation lanie
Les rencontres e tourisme anglet MOPA - Week-ends Picardie, une opération rég...
Webséminaire MOPA "Le B-A-BA de Google Analytics" - 01 avril 2015
Ad

Similar to Feature Development with jQuery (20)

PDF
Overview of the AngularJS framework
PDF
React vs Angular - Which is best JS Framework for Front-end Development
PPTX
Web worker in your angular application
PDF
Libreplan architecture
PDF
Comparing AngularJS and ReactJS_ Finding the Best Framework for your Next Pro...
PDF
Lagom : Reactive microservice framework
PPTX
MVC Framework
PDF
Semfudtshfusjfusjdjshfjzhshshdhdjstejdhfinar.pdf
PDF
Semjfxhxgznxhxjzfzgshfhxjghxjcdhdhffinar.pdf
PPTX
Javascript frameworks
PDF
Angular meetup 2 2019-08-29
PDF
Comparison Between React Vs Angular.pdf
PPT
Building Reactive webapp with React/Flux
PPTX
Spring Web Presentation - Framework and Its Ecosystem
PDF
Angular vs. polymer a face off for the throne of frontend development
DOCX
Codeigniter
PDF
AngularJS in Production (CTO Forum)
PPT
Mvc 130330091359-phpapp01
PPTX
Introduction to angular | Concepts and Environment setup
Overview of the AngularJS framework
React vs Angular - Which is best JS Framework for Front-end Development
Web worker in your angular application
Libreplan architecture
Comparing AngularJS and ReactJS_ Finding the Best Framework for your Next Pro...
Lagom : Reactive microservice framework
MVC Framework
Semfudtshfusjfusjdjshfjzhshshdhdjstejdhfinar.pdf
Semjfxhxgznxhxjzfzgshfhxjghxjcdhdhffinar.pdf
Javascript frameworks
Angular meetup 2 2019-08-29
Comparison Between React Vs Angular.pdf
Building Reactive webapp with React/Flux
Spring Web Presentation - Framework and Its Ecosystem
Angular vs. polymer a face off for the throne of frontend development
Codeigniter
AngularJS in Production (CTO Forum)
Mvc 130330091359-phpapp01
Introduction to angular | Concepts and Environment setup

Feature Development with jQuery

  • 1. Feature Development with jQuery Mike Edwards medwards20x6@gmail.com
  • 2. About Me Mike Edwards M.S. Computer Science, University of Iowa Started building web applications professionally in 2000 JavaScript expert level jQuery: Started using it about 1.5 years ago Used extensively since then I'm very interested in common themes across different technologies
  • 3. Outline ● Introduction ○ UserScripts: Greasemonkey, Tampermonkey ○ Filtering Script: Demo, Code Review ● Thinking about Perspective ○ Looking at the same thing from a different angle ○ The Perspective of Source Control ○ Filtering Script: From a New Perspective ● A Basic MVC Plugin Architecture ○ Modular Architecture ○ Refactoring: Quick Intro ○ jQuery & MVC ○ Plugin Ecosystems ○ Filtering: Refactored
  • 4. User Scripts ● Supporting Add-ons: ○ Greasemonkey, Tampermonkey ● Scripts are installed by the user in their browser, not by a web admin on the server ● User scripts make on-the-fly changes to a web page's content as the page is loaded into the users browser ● As long as the script doesn't use any of it's escalated privileges, it can be loaded directly onto the server for all users
  • 9. Thinking about Perspective ● Sometimes the same thing looks very different from another perspective
  • 10. Perspective: Computability ● This concept runs right to the bedrock of all Computer Science ● Church/Turing Thesis ○ Lambda Calculus and Turing Machines are equivalent ways of looking at computability ● Electrical Engineering: You can build an entire CPU out of just NAND logic gates. You can also build it out of just NOR logic gates.
  • 12. Filtering Script: A New Perspective
  • 13. Merge or Modularize ● jQuery "Feature Files" consist of "payload" code and "merge instructions" about where to splice in the payloads ● One approach once we've successfully prototyped a new feature is to then manually merge it into the application code-base (Feature Branching/Merge) ● Feature Branching is a poor man's modular architecture, instead of building systems with the ability to easy swap in and out features at runtime / deploytime they couple themselves to the source control providing this mechanism through manual merging. -- Dan Bodart http://martinfowler.com/bliki/FeatureBranch.html
  • 14. Technical Debt & Refactoring ● Technical Debt: "You have a piece of functionality that you need to add to your system. You see two ways to do it, one is quick to do but is messy - you are sure that it will make further changes harder in the future. The other results in a cleaner design, but will take longer to put in place." - Martin Fowler ● Refactoring: "a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior" - Wikipedia
  • 15. Plugin Ecosystems ● Users can decide for themselves via configuration which features they need ● Third-party developers can potentially enhance the value of your product at no cost to you ● An API built for plugins can be used for integration with partner applications and/or used as a backend for additional platforms (mobile web, mobile native)
  • 17. Modern Web Architecture Web 2.0 Thick-client One-Page App
  • 18. Web 2.0 & MVC
  • 21. jQuery & MVC cont. ● Most "MVC" frameworks focus on "MV" ○ Observable models ○ Template based rendering ○ Data Binding/Automatic re-rendering ● jQuery specializes in "C" with a side of "V" ○ Event Handlers ○ AJAX ○ Powerful ability to update the View in real-time, but no template support or observable models
  • 28. Refactoring Continued... ● Pitfall: Because jQuery is so good at Querying the view, it can be tempting to simply treat the view as your model. ● This is okay for prototypes and tiny features, but should be refactored when possible ● We've re-organized the code by it's MVC role, which is a start ● Still need to flesh-out and integrate with the underlying application infrastructure
  • 29. Branch/Merge vs Plugins Version Control Plugin Architecture Trunk Application Core Architecture Branch Start New Plugin Merge/Patch Load Plugin at Run-time Cherry-picking Enable/Disable Plugins
  • 30. Conclusion ● jQueries power comes, at least partly, from it's ability to weave "merge" code inline ● An alternate way to view this is that jQuery provides the infrastructure necessary to create Application level plugins ● Aspect-Oriented Programming as an entire field dedicated to this kind of thinking