SlideShare uma empresa Scribd logo
1 de 40
jQuery on Rails (the real ones)
by Jonathan Sharp
The Challenge
• Rapid web based application development

• Support multiple server side technologies

• Easy integration of enterprise data

• Additionally Provide
      • Consistent user experience across all applications
      • Migrate existing applications
      • Low cost upgrades



The Ajax Experience 2008 - jQuery on Rails (the real ones)   2
The Scope
• Multiple frameworks: Wicket, Struts, JSF,
  ColdFusion, Servlets

• Developers
      • 450+ developers (primarily Java)
      • Basic HTML, CSS & JS
      • Geographically dispersed
• Limited Human Factors resources




The Ajax Experience 2008 - jQuery on Rails (the real ones)   3
Outline
• Multiple Frameworks

• Rapid Prototyping

• Enterprise Data




The Ajax Experience 2008 - jQuery on Rails (the real ones)   4
Audience Survey
• Java

• ColdFusion

• PHP

• Rails

• UI/UX developers

• Others



The Ajax Experience 2008 - jQuery on Rails (the real ones)   5
The Approaches
• Server Side
      • Consolidate on a single server side framework
      • XML post processing
      • Client side library




The Ajax Experience 2008 - jQuery on Rails (the real ones)   6
Existing Tools
• Existing Frameworks
      • ExtJS
      • Dojo
      • Prototype/Scriptaculous
      • jQuery
      • Tibco GI
      • GWT




The Ajax Experience 2008 - jQuery on Rails (the real ones)   7
Tool Evaluation Criteria
• Developer interface API / education

• Legacy application migration

• Performance

• File size

• Licensing

• Browser support



The Ajax Experience 2008 - jQuery on Rails (the real ones)   8
The Developer Interface
• We put a lot of emphasis on this

• Developer demographics

• Skill sets across the organization

• Application development workflow
      • Human Factors
      • Implementation team




The Ajax Experience 2008 - jQuery on Rails (the real ones)   9
Jumping In
• We selected jQuery

• Created a developer centric interface

• Just include & use - short learning curve

• Component driven




The Ajax Experience 2008 - jQuery on Rails (the real ones)   10
The Component
• A component encompasses:
      • XHTML Markup
      • Behavior
      • Enterprise data
• Simple XHTML interface

• Advanced developer interface




The Ajax Experience 2008 - jQuery on Rails (the real ones)   11
Semantic Markup
• Developers insert the following XHTML:
• <div class=”groupbox”>
      <h2>My Groupbox Title</h2>
      <!-- Groupbox contents -->
  </div>




The Ajax Experience 2008 - jQuery on Rails (the real ones)   12
Alternate Markup
• Developers insert the following XHTML:
• <div class=”groupbox”
      tae:title=”My Groupbox Title”>
      <!-- Groupbox contents -->
  </div>




The Ajax Experience 2008 - jQuery on Rails (the real ones)   13
Rendered Markup
• Component renders:
• <div class=”groupbox”>
     <div><div class=”groupboxTitle”>
         My Groupbox Title
     </div></div>
     <div class=”groupboxContent”>
          <!-- Groupbox contents -->
     </div>
     <div>...</div>
  </div>

The Ajax Experience 2008 - jQuery on Rails (the real ones)   14
The Architecture
• Versioning

• Build Process

• Publishing Releases

• Technical Considerations

• Development Environment




The Ajax Experience 2008 - jQuery on Rails (the real ones)   15
Versioning
• <Product Version>.<major>.<minor>
      • Example: 2.1.4, 2.2.4
• Major & Minor Releases
      • Major release requires an application change & may
          break backwards compatibility, url change
      • Minor releases are transparent to applications, no
          url change




The Ajax Experience 2008 - jQuery on Rails (the real ones)   16
URL Versioning
• Minor release
  2.1.5 /product/2.1/product.js

• Major release
  2.2.3 /product/2.2/product.js




The Ajax Experience 2008 - jQuery on Rails (the real ones)   17
Build Process
• Apache Ant build.xml

• JS Lint

• YUI Compressor (JS & CSS)

• PNG Crush




The Ajax Experience 2008 - jQuery on Rails (the real ones)   18
Technical Considerations
• File size
      • JS pack vs. min
      • Caching
• XHTML Transitional doctype

• Require JavaScript to be enabled




The Ajax Experience 2008 - jQuery on Rails (the real ones)   19
Development Environment
• Firefox 2+, IE 6+ (& Safari)

• Firebug

• IE & script debugging

• SVN for source versioning

• J2EE servlets for Ajax calls




The Ajax Experience 2008 - jQuery on Rails (the real ones)   20
The Component
• Identified by CSS class
      • <div               class=”component”></div>

• Component initializes on page load
      • Initialization may also occur by calling
          Project.init(‘#id’)




The Ajax Experience 2008 - jQuery on Rails (the real ones)   21
Custom Attributes & Namespace
• Developed using namespaced attributes
      • <div               tae:attr=”value”>

• HTML5 provides “data” attributes
      • <div               data-attr=”value”>




The Ajax Experience 2008 - jQuery on Rails (the real ones)   22
Developer API & Interface
• Basic
      • XHTML Only, no need to write JavaScript
• Advanced
      • Add additional behavior with JavaScript




The Ajax Experience 2008 - jQuery on Rails (the real ones)   23
Developer API & Interface
      • <div id=”gb”                                   class=”groupbox”>
      • $(‘#gb’)
                        .bind(‘groupboxExpand’, function() {
                            alert(‘Groupbox expanded!’);
                        });




The Ajax Experience 2008 - jQuery on Rails (the real ones)   24
Unobtrusive JavaScript
• Behavioral separation
      • <div onclick=”...”></div>
      • <div id=”component”></div>
      • $(‘#component’).bind(‘click’,                             function() {
                        ...
          });

• Progressive rendering
      • <div   class=”groupbox”>
              <h1>Groupbox Title</h1>
              ...
          </div>
The Ajax Experience 2008 - jQuery on Rails (the real ones)   25
The Life of a Page
• HTTP Request is made for page
      • Request /project/2.1/project.css
      • Request /project/2.1/project.js




The Ajax Experience 2008 - jQuery on Rails (the real ones)   26
The Event Cycle
• jQuery $(document).ready(callback)
  is executed
      • Trigger user space “beforeready” event
      • Component initialization
           • Transform the DOM
           • Add behaviors

      • Trigger user space ready event




The Ajax Experience 2008 - jQuery on Rails (the real ones)   27
Components In Action
• Application Header

• Groupbox

• Tooltip

• Definition

• Validation

• Lookup / Auto Complete



The Ajax Experience 2008 - jQuery on Rails (the real ones)   28
Outline
• Multiple Frameworks

• Rapid Prototyping

• Enterprise Data




The Ajax Experience 2008 - jQuery on Rails (the real ones)   29
Prototyping The UI
• Increasing Productivity
      • Workflow
           • Requirements
           • Prototype interface
           • Implementation

• Cost of making changes is low

• Developers focus on areas of expertise




The Ajax Experience 2008 - jQuery on Rails (the real ones)   30
Prototyping The UI
• Initial human factors prototype
      • Usability study / customer review
• Handoff to application team for
  implementation
• Reuse XHTML with Wicket, ColdFusion, etc.




The Ajax Experience 2008 - jQuery on Rails (the real ones)   31
Outline
• Multiple Frameworks

• Rapid Prototyping

• Enterprise Data




The Ajax Experience 2008 - jQuery on Rails (the real ones)   32
Enterprise Data
• UI team develops JSON servlets that talk to
  XMF/ESB web services

• Application teams gain benefits without
  having to add JAR’s or 3rd party components
• Client side becomes point of aggregation




The Ajax Experience 2008 - jQuery on Rails (the real ones)   33
Data Caching / Offline
• Distribute data to the client

• Take advantage of tools such as Google Gears

• Increases client side performance, distribution
    of load




The Ajax Experience 2008 - jQuery on Rails (the real ones)   34
Performance Tips
• DOM Manipulation
      • Consider DOM DocumentFragment
          http://ejohn.org/blog/dom-documentfragments/
      • Cache Node References
      • Take advantage of the jQuery.data() function to
          solve expando issues

• $(‘#myID’).data(‘rows’, row1,row2,...,n]);




The Ajax Experience 2008 - jQuery on Rails (the real ones)   35
Performance Tips
• Tune jQuery Selectors

• Late event binding

• Use event delegation

• Bind click event using mouseover event




The Ajax Experience 2008 - jQuery on Rails (the real ones)   36
Dynamic Transformations
• On DOM Insert / Update events

• Dynamically initialize components




The Ajax Experience 2008 - jQuery on Rails (the real ones)   37
The UI With Canvas
• Move towards rendering components using
  Canvas

• MooTools - Mocha UI
  http://mochaui.com/demo/




The Ajax Experience 2008 - jQuery on Rails (the real ones)   38
Audience Response
• Questions ?




The Ajax Experience 2008 - jQuery on Rails (the real ones)   39
Thank you!                 Links & Additional Resources
                           http://outwestmedia.com/TAE/




Jonathan Sharp
jdsharp@outwestmedia.com

Mais conteúdo relacionado

Mais procurados

Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
lucclaes
 
Dive Into HTML5
Dive Into HTML5Dive Into HTML5
Dive Into HTML5
Doris Chen
 

Mais procurados (20)

Ankor Presentation @ JavaOne San Francisco September 2014
Ankor Presentation @ JavaOne San Francisco September 2014Ankor Presentation @ JavaOne San Francisco September 2014
Ankor Presentation @ JavaOne San Francisco September 2014
 
JavaLand 2014 - Ankor.io Presentation
JavaLand 2014 - Ankor.io PresentationJavaLand 2014 - Ankor.io Presentation
JavaLand 2014 - Ankor.io Presentation
 
Sitecore MVC (User Group Conference, May 23rd 2014)
Sitecore MVC (User Group Conference, May 23rd 2014)Sitecore MVC (User Group Conference, May 23rd 2014)
Sitecore MVC (User Group Conference, May 23rd 2014)
 
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
 
Web services engine
Web services engineWeb services engine
Web services engine
 
Sitecore MVC: Converting Web Forms sublayouts
Sitecore MVC: Converting Web Forms sublayoutsSitecore MVC: Converting Web Forms sublayouts
Sitecore MVC: Converting Web Forms sublayouts
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
 
An Unexpected Solution to Microservices UI Composition
An Unexpected Solution to Microservices UI CompositionAn Unexpected Solution to Microservices UI Composition
An Unexpected Solution to Microservices UI Composition
 
Database Migrations with Gradle and Liquibase
Database Migrations with Gradle and LiquibaseDatabase Migrations with Gradle and Liquibase
Database Migrations with Gradle and Liquibase
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
 
Gradle.Enemy at the gates
Gradle.Enemy at the gatesGradle.Enemy at the gates
Gradle.Enemy at the gates
 
Eclipse Apricot
Eclipse ApricotEclipse Apricot
Eclipse Apricot
 
WebLogic and GraalVM
WebLogic and GraalVMWebLogic and GraalVM
WebLogic and GraalVM
 
Online Spreadsheet for your Web Applications using Kendo UI
Online Spreadsheet for your Web Applications using Kendo UIOnline Spreadsheet for your Web Applications using Kendo UI
Online Spreadsheet for your Web Applications using Kendo UI
 
Dive Into HTML5
Dive Into HTML5Dive Into HTML5
Dive Into HTML5
 
Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020
 
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday SloveniaContinuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
 
Evolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.jsEvolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.js
 
Bringing Docker to the Cloud
Bringing Docker to the CloudBringing Docker to the Cloud
Bringing Docker to the Cloud
 

Semelhante a jQuery On Rails

J query presentation
J query presentationJ query presentation
J query presentation
akanksha17
 
J query presentation
J query presentationJ query presentation
J query presentation
sawarkar17
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
daveayan
 
Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)
johnnybiz
 
Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
Lucas Jellema
 

Semelhante a jQuery On Rails (20)

Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5
 
J query presentation
J query presentationJ query presentation
J query presentation
 
J query presentation
J query presentationJ query presentation
J query presentation
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQueryBuilding intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQuery
 
Google web toolkit gwt training
Google web toolkit gwt trainingGoogle web toolkit gwt training
Google web toolkit gwt training
 
JSF2
JSF2JSF2
JSF2
 
jQuery: The World's Most Popular JavaScript Library Comes to XPages
jQuery: The World's Most Popular JavaScript Library Comes to XPagesjQuery: The World's Most Popular JavaScript Library Comes to XPages
jQuery: The World's Most Popular JavaScript Library Comes to XPages
 
Wicket Intro
Wicket IntroWicket Intro
Wicket Intro
 
MIGRATION - PAIN OR GAIN?
MIGRATION - PAIN OR GAIN?MIGRATION - PAIN OR GAIN?
MIGRATION - PAIN OR GAIN?
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)
 
Using Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the WebUsing Web Standards to create Interactive Data Visualizations for the Web
Using Web Standards to create Interactive Data Visualizations for the Web
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJS
 
JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)
 
JQuery UI
JQuery UIJQuery UI
JQuery UI
 
Devfest09 Cschalk Gwt
Devfest09 Cschalk GwtDevfest09 Cschalk Gwt
Devfest09 Cschalk Gwt
 
Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Último (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
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
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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...
 
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
 

jQuery On Rails

  • 1. jQuery on Rails (the real ones) by Jonathan Sharp
  • 2. The Challenge • Rapid web based application development • Support multiple server side technologies • Easy integration of enterprise data • Additionally Provide • Consistent user experience across all applications • Migrate existing applications • Low cost upgrades The Ajax Experience 2008 - jQuery on Rails (the real ones) 2
  • 3. The Scope • Multiple frameworks: Wicket, Struts, JSF, ColdFusion, Servlets • Developers • 450+ developers (primarily Java) • Basic HTML, CSS & JS • Geographically dispersed • Limited Human Factors resources The Ajax Experience 2008 - jQuery on Rails (the real ones) 3
  • 4. Outline • Multiple Frameworks • Rapid Prototyping • Enterprise Data The Ajax Experience 2008 - jQuery on Rails (the real ones) 4
  • 5. Audience Survey • Java • ColdFusion • PHP • Rails • UI/UX developers • Others The Ajax Experience 2008 - jQuery on Rails (the real ones) 5
  • 6. The Approaches • Server Side • Consolidate on a single server side framework • XML post processing • Client side library The Ajax Experience 2008 - jQuery on Rails (the real ones) 6
  • 7. Existing Tools • Existing Frameworks • ExtJS • Dojo • Prototype/Scriptaculous • jQuery • Tibco GI • GWT The Ajax Experience 2008 - jQuery on Rails (the real ones) 7
  • 8. Tool Evaluation Criteria • Developer interface API / education • Legacy application migration • Performance • File size • Licensing • Browser support The Ajax Experience 2008 - jQuery on Rails (the real ones) 8
  • 9. The Developer Interface • We put a lot of emphasis on this • Developer demographics • Skill sets across the organization • Application development workflow • Human Factors • Implementation team The Ajax Experience 2008 - jQuery on Rails (the real ones) 9
  • 10. Jumping In • We selected jQuery • Created a developer centric interface • Just include & use - short learning curve • Component driven The Ajax Experience 2008 - jQuery on Rails (the real ones) 10
  • 11. The Component • A component encompasses: • XHTML Markup • Behavior • Enterprise data • Simple XHTML interface • Advanced developer interface The Ajax Experience 2008 - jQuery on Rails (the real ones) 11
  • 12. Semantic Markup • Developers insert the following XHTML: • <div class=”groupbox”> <h2>My Groupbox Title</h2> <!-- Groupbox contents --> </div> The Ajax Experience 2008 - jQuery on Rails (the real ones) 12
  • 13. Alternate Markup • Developers insert the following XHTML: • <div class=”groupbox” tae:title=”My Groupbox Title”> <!-- Groupbox contents --> </div> The Ajax Experience 2008 - jQuery on Rails (the real ones) 13
  • 14. Rendered Markup • Component renders: • <div class=”groupbox”> <div><div class=”groupboxTitle”> My Groupbox Title </div></div> <div class=”groupboxContent”> <!-- Groupbox contents --> </div> <div>...</div> </div> The Ajax Experience 2008 - jQuery on Rails (the real ones) 14
  • 15. The Architecture • Versioning • Build Process • Publishing Releases • Technical Considerations • Development Environment The Ajax Experience 2008 - jQuery on Rails (the real ones) 15
  • 16. Versioning • <Product Version>.<major>.<minor> • Example: 2.1.4, 2.2.4 • Major & Minor Releases • Major release requires an application change & may break backwards compatibility, url change • Minor releases are transparent to applications, no url change The Ajax Experience 2008 - jQuery on Rails (the real ones) 16
  • 17. URL Versioning • Minor release 2.1.5 /product/2.1/product.js • Major release 2.2.3 /product/2.2/product.js The Ajax Experience 2008 - jQuery on Rails (the real ones) 17
  • 18. Build Process • Apache Ant build.xml • JS Lint • YUI Compressor (JS & CSS) • PNG Crush The Ajax Experience 2008 - jQuery on Rails (the real ones) 18
  • 19. Technical Considerations • File size • JS pack vs. min • Caching • XHTML Transitional doctype • Require JavaScript to be enabled The Ajax Experience 2008 - jQuery on Rails (the real ones) 19
  • 20. Development Environment • Firefox 2+, IE 6+ (& Safari) • Firebug • IE & script debugging • SVN for source versioning • J2EE servlets for Ajax calls The Ajax Experience 2008 - jQuery on Rails (the real ones) 20
  • 21. The Component • Identified by CSS class • <div class=”component”></div> • Component initializes on page load • Initialization may also occur by calling Project.init(‘#id’) The Ajax Experience 2008 - jQuery on Rails (the real ones) 21
  • 22. Custom Attributes & Namespace • Developed using namespaced attributes • <div tae:attr=”value”> • HTML5 provides “data” attributes • <div data-attr=”value”> The Ajax Experience 2008 - jQuery on Rails (the real ones) 22
  • 23. Developer API & Interface • Basic • XHTML Only, no need to write JavaScript • Advanced • Add additional behavior with JavaScript The Ajax Experience 2008 - jQuery on Rails (the real ones) 23
  • 24. Developer API & Interface • <div id=”gb” class=”groupbox”> • $(‘#gb’) .bind(‘groupboxExpand’, function() { alert(‘Groupbox expanded!’); }); The Ajax Experience 2008 - jQuery on Rails (the real ones) 24
  • 25. Unobtrusive JavaScript • Behavioral separation • <div onclick=”...”></div> • <div id=”component”></div> • $(‘#component’).bind(‘click’, function() { ... }); • Progressive rendering • <div class=”groupbox”> <h1>Groupbox Title</h1> ... </div> The Ajax Experience 2008 - jQuery on Rails (the real ones) 25
  • 26. The Life of a Page • HTTP Request is made for page • Request /project/2.1/project.css • Request /project/2.1/project.js The Ajax Experience 2008 - jQuery on Rails (the real ones) 26
  • 27. The Event Cycle • jQuery $(document).ready(callback) is executed • Trigger user space “beforeready” event • Component initialization • Transform the DOM • Add behaviors • Trigger user space ready event The Ajax Experience 2008 - jQuery on Rails (the real ones) 27
  • 28. Components In Action • Application Header • Groupbox • Tooltip • Definition • Validation • Lookup / Auto Complete The Ajax Experience 2008 - jQuery on Rails (the real ones) 28
  • 29. Outline • Multiple Frameworks • Rapid Prototyping • Enterprise Data The Ajax Experience 2008 - jQuery on Rails (the real ones) 29
  • 30. Prototyping The UI • Increasing Productivity • Workflow • Requirements • Prototype interface • Implementation • Cost of making changes is low • Developers focus on areas of expertise The Ajax Experience 2008 - jQuery on Rails (the real ones) 30
  • 31. Prototyping The UI • Initial human factors prototype • Usability study / customer review • Handoff to application team for implementation • Reuse XHTML with Wicket, ColdFusion, etc. The Ajax Experience 2008 - jQuery on Rails (the real ones) 31
  • 32. Outline • Multiple Frameworks • Rapid Prototyping • Enterprise Data The Ajax Experience 2008 - jQuery on Rails (the real ones) 32
  • 33. Enterprise Data • UI team develops JSON servlets that talk to XMF/ESB web services • Application teams gain benefits without having to add JAR’s or 3rd party components • Client side becomes point of aggregation The Ajax Experience 2008 - jQuery on Rails (the real ones) 33
  • 34. Data Caching / Offline • Distribute data to the client • Take advantage of tools such as Google Gears • Increases client side performance, distribution of load The Ajax Experience 2008 - jQuery on Rails (the real ones) 34
  • 35. Performance Tips • DOM Manipulation • Consider DOM DocumentFragment http://ejohn.org/blog/dom-documentfragments/ • Cache Node References • Take advantage of the jQuery.data() function to solve expando issues • $(‘#myID’).data(‘rows’, row1,row2,...,n]); The Ajax Experience 2008 - jQuery on Rails (the real ones) 35
  • 36. Performance Tips • Tune jQuery Selectors • Late event binding • Use event delegation • Bind click event using mouseover event The Ajax Experience 2008 - jQuery on Rails (the real ones) 36
  • 37. Dynamic Transformations • On DOM Insert / Update events • Dynamically initialize components The Ajax Experience 2008 - jQuery on Rails (the real ones) 37
  • 38. The UI With Canvas • Move towards rendering components using Canvas • MooTools - Mocha UI http://mochaui.com/demo/ The Ajax Experience 2008 - jQuery on Rails (the real ones) 38
  • 39. Audience Response • Questions ? The Ajax Experience 2008 - jQuery on Rails (the real ones) 39
  • 40. Thank you! Links & Additional Resources http://outwestmedia.com/TAE/ Jonathan Sharp jdsharp@outwestmedia.com