SlideShare a Scribd company logo
1 of 10
Download to read offline
Web-Development 2010:
Server-side or Client-side?
Lightning Talk @ PyCologne 2010
        Köln, 17.April 2010
    #python #javascript #pybar
   Thomas Koch (@tomy_koch)
(a short) Web Development History
• 199x: Common Gateway Interface
   import cgi
   form = cgi.FieldStorage()
   print “content-type: text/html”
   print “<H1>Hello %s</H1>“ % form["name"].value
• 200x: Web Tools & Frameworks (in Python)
   – Libraries (e.g. Templates & Form handling!)
       • Cheetah, Kid, Genshi, Bottle, …                Server-Side Coding
         s. http://wiki.python.de/Template-Engines
   – Frameworks: Django, TurboGears, Zope, etc.
       • s. http://wiki.python.org/moin/WebFrameworks                ???
• 2005+ Ajax Technology (XmlHttpRequest+JavaScript)
   – Lots of JavaScript Tools,Libs,Frameworks coming up …
       • Prototype, Scriptacolous, MooTools etc.
       • YUI, jQuery, Dojo, ExtJS …
                                                        Client-Side Coding
• 2010 ???
Server-side or Client-side?
• Wrong question! Must do both (somehow)…
  How to efficiently develop Server- and Client-side?

  Assumption: We‘re coding in Python on the server ,-)
   (using at least some framework …)
  Option1: Become JavaScript-Expert (no way!)
  Option2: Use JavaScript-Framework (even better)
  Option3: seek for holy grail…
Some Attempts …
• GWT: Google Web Toolkit
  – Army of Java Developers don‘t wanna code JS
  – Provide Java-based framwork and generate JS
• Python: PyJamas http://pyjs.org/
  – Pyjamas is a port of Google Web Toolkit to Python
     You can write web applications in python
  – pyjamas involves the translation
    of the application and libraries
     (including UI widgets and DOM
     classes) to Javascript.
  – version: Pyjamas 0.6 / 08-2009
Dajax: Django+Ajax
• a powerfull tool to easily and super-fastly develop asynchronous
  presentation logic in web applications using python …
  … and almost no lines of JS source code.
• supports up to four of the most popular JS frameworks:
       Prototype, jQuery, Dojo and mootols

Dajax maps client-side JS call
to server-side python method!


• Version: 0.8.4 – 03-22010
• autor: @jorgebastida
• Web: http://dajaxproject.com/
Dajax: Example
Python Code
     from dajax.core import Dajax

     def multiply(request, a, b):
       dajax = Dajax()
       result = int(a) * int(b)
       dajax.assign('#result','value',str(result))
       return dajax.json()

JavaScript Code
<script src="/dajaxice/dajaxice.core.js" type="text/javascript" />

function calculate() {
  Dajaxice.examples.multiply('Dajax.process',{'a':$('a').value,'b':$('b').value})
Dojango = Dojo + Django
• What?
  – Dojango is a reusable django application that helps
    you to use the client-sideframework dojo within your
    django project
  – … makes the development of rich internet applications
    in combination with dojo more comfortable


• Version: 0.4.6 / 11-2009
• Autor: @tklipstein
• Web: http://code.google.com/p/dojango/
About Dojo
• Dojo = Ajax Development Framework
    – open-source JavaScript toolkit for frontend development
    – allows to shorten the timespan between idea and implementation
    – cut-down development costs, achieve great results
• Features
    –   Supports development of highly interactive web applications
    –   Various basic widgets like Trees, Menus, ListViews, Popups etc.
    –   Business-ready components like Grids and Charts
    –   Lots of add-ons for different purposes like Image Lightbox, animations etc.
• Community
    – Large user community
    – Used / Supported by Key Players (SUN, IBM etc.)

• Version: 1.4
• Website: http://dojotoolkit.org/
Dojango Features
• Form-Integration : django.forms  dojango.forms
   – maps django.forms.fields to dojo enhanced widgets
     (i.e. dojango.forms.fields extends django formfields)
• flexible dojo release configuration
   – aol, google cdn, dojo release 1.0/1.1/1.2/1.3 …
• Django ModelStore
   – using dojo.data.* with dojango.data.modelstore
• Dojango Datagrid
   – Integrate dojo data grid in django
• AppEngine support:
   – get dojango up on Google AppEngine.
Your Experience?
• Best Practices?
  – Server-Side Framework:
     self-written, django, gears … ?
  – Client-Side Framework:
     Simple prototype.js or Dojo, ExtJS,… ?
• Combination of
  frontend & backend
    what is the perfect couple?
  (especially for web-devel in python)

More Related Content

Viewers also liked

Web Design and Development I - 2008
Web Design and Development I - 2008Web Design and Development I - 2008
Web Design and Development I - 2008
butest
 

Viewers also liked (7)

ReadWriteWeb's Top 5 Web Trends in 2009
ReadWriteWeb's Top 5 Web Trends in 2009ReadWriteWeb's Top 5 Web Trends in 2009
ReadWriteWeb's Top 5 Web Trends in 2009
 
Web, Design, and UX Trends for 2008
Web, Design, and UX Trends for 2008Web, Design, and UX Trends for 2008
Web, Design, and UX Trends for 2008
 
HTML5 and Web Trends in 2013
HTML5 and Web Trends in 2013HTML5 and Web Trends in 2013
HTML5 and Web Trends in 2013
 
Web Design and Development I - 2008
Web Design and Development I - 2008Web Design and Development I - 2008
Web Design and Development I - 2008
 
The State of Front End Web Development 2011
The State of Front End Web Development 2011The State of Front End Web Development 2011
The State of Front End Web Development 2011
 
Web Technology Trends for 2008 and Beyond, March 08
Web Technology Trends for 2008 and Beyond, March 08Web Technology Trends for 2008 and Beyond, March 08
Web Technology Trends for 2008 and Beyond, March 08
 
Influencers On IT & Tech 2009 Trends Predictions, By Trendsspotting
Influencers On IT & Tech 2009 Trends Predictions, By TrendsspottingInfluencers On IT & Tech 2009 Trends Predictions, By Trendsspotting
Influencers On IT & Tech 2009 Trends Predictions, By Trendsspotting
 

More from Thomas Koch

More from Thomas Koch (16)

Einfache Heimautomatisierung auf dem Raspberry Pi mit Python
Einfache Heimautomatisierung auf dem Raspberry Pi mit PythonEinfache Heimautomatisierung auf dem Raspberry Pi mit Python
Einfache Heimautomatisierung auf dem Raspberry Pi mit Python
 
CI Signal Light in less than 100 Line of Python Code
CI Signal Light in less than 100 Line of Python CodeCI Signal Light in less than 100 Line of Python Code
CI Signal Light in less than 100 Line of Python Code
 
CI-Ampel für Jenkins mit RaspberryPi und Python
CI-Ampel für Jenkins mit RaspberryPi und PythonCI-Ampel für Jenkins mit RaspberryPi und Python
CI-Ampel für Jenkins mit RaspberryPi und Python
 
Facettensuche mit Lucene und Solr
Facettensuche mit Lucene und SolrFacettensuche mit Lucene und Solr
Facettensuche mit Lucene und Solr
 
BSCW - Teamarbeit leicht gemacht
BSCW - Teamarbeit leicht gemachtBSCW - Teamarbeit leicht gemacht
BSCW - Teamarbeit leicht gemacht
 
Raspberry Pi und Python
Raspberry Pi und PythonRaspberry Pi und Python
Raspberry Pi und Python
 
Einführung in Raspberry Pi und GPIO
Einführung in Raspberry Pi und GPIOEinführung in Raspberry Pi und GPIO
Einführung in Raspberry Pi und GPIO
 
Python-IDEs - PyDev und Eclipse
Python-IDEs - PyDev und EclipsePython-IDEs - PyDev und Eclipse
Python-IDEs - PyDev und Eclipse
 
Pandas und matplotlib im praktischen Einsatz
Pandas und matplotlib im praktischen EinsatzPandas und matplotlib im praktischen Einsatz
Pandas und matplotlib im praktischen Einsatz
 
EnArgus – ein ontologiebasiertes Forschungsinformationssystem
EnArgus – ein ontologiebasiertes ForschungsinformationssystemEnArgus – ein ontologiebasiertes Forschungsinformationssystem
EnArgus – ein ontologiebasiertes Forschungsinformationssystem
 
Wissenserschließung und –Modellierung: Ontologie vs. Volltextsuche am Beispie...
Wissenserschließung und –Modellierung: Ontologie vs. Volltextsuche am Beispie...Wissenserschließung und –Modellierung: Ontologie vs. Volltextsuche am Beispie...
Wissenserschließung und –Modellierung: Ontologie vs. Volltextsuche am Beispie...
 
Volltextsuche mit Lucene und Solr
Volltextsuche mit Lucene und SolrVolltextsuche mit Lucene und Solr
Volltextsuche mit Lucene und Solr
 
PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011
 
Getting Started with Dojo Toolkit
Getting Started with Dojo ToolkitGetting Started with Dojo Toolkit
Getting Started with Dojo Toolkit
 
Teamarbeit 2.0 (PTF 2008)
Teamarbeit 2.0 (PTF 2008) Teamarbeit 2.0 (PTF 2008)
Teamarbeit 2.0 (PTF 2008)
 
Suche und PyLucene
Suche und PyLuceneSuche und PyLucene
Suche und PyLucene
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

WebDev Lightning Talk (PyCologne 2010)

  • 1. Web-Development 2010: Server-side or Client-side? Lightning Talk @ PyCologne 2010 Köln, 17.April 2010 #python #javascript #pybar Thomas Koch (@tomy_koch)
  • 2. (a short) Web Development History • 199x: Common Gateway Interface import cgi form = cgi.FieldStorage() print “content-type: text/html” print “<H1>Hello %s</H1>“ % form["name"].value • 200x: Web Tools & Frameworks (in Python) – Libraries (e.g. Templates & Form handling!) • Cheetah, Kid, Genshi, Bottle, … Server-Side Coding s. http://wiki.python.de/Template-Engines – Frameworks: Django, TurboGears, Zope, etc. • s. http://wiki.python.org/moin/WebFrameworks ??? • 2005+ Ajax Technology (XmlHttpRequest+JavaScript) – Lots of JavaScript Tools,Libs,Frameworks coming up … • Prototype, Scriptacolous, MooTools etc. • YUI, jQuery, Dojo, ExtJS … Client-Side Coding • 2010 ???
  • 3. Server-side or Client-side? • Wrong question! Must do both (somehow)… How to efficiently develop Server- and Client-side? Assumption: We‘re coding in Python on the server ,-) (using at least some framework …) Option1: Become JavaScript-Expert (no way!) Option2: Use JavaScript-Framework (even better) Option3: seek for holy grail…
  • 4. Some Attempts … • GWT: Google Web Toolkit – Army of Java Developers don‘t wanna code JS – Provide Java-based framwork and generate JS • Python: PyJamas http://pyjs.org/ – Pyjamas is a port of Google Web Toolkit to Python You can write web applications in python – pyjamas involves the translation of the application and libraries (including UI widgets and DOM classes) to Javascript. – version: Pyjamas 0.6 / 08-2009
  • 5. Dajax: Django+Ajax • a powerfull tool to easily and super-fastly develop asynchronous presentation logic in web applications using python … … and almost no lines of JS source code. • supports up to four of the most popular JS frameworks: Prototype, jQuery, Dojo and mootols Dajax maps client-side JS call to server-side python method! • Version: 0.8.4 – 03-22010 • autor: @jorgebastida • Web: http://dajaxproject.com/
  • 6. Dajax: Example Python Code from dajax.core import Dajax def multiply(request, a, b): dajax = Dajax() result = int(a) * int(b) dajax.assign('#result','value',str(result)) return dajax.json() JavaScript Code <script src="/dajaxice/dajaxice.core.js" type="text/javascript" /> function calculate() { Dajaxice.examples.multiply('Dajax.process',{'a':$('a').value,'b':$('b').value})
  • 7. Dojango = Dojo + Django • What? – Dojango is a reusable django application that helps you to use the client-sideframework dojo within your django project – … makes the development of rich internet applications in combination with dojo more comfortable • Version: 0.4.6 / 11-2009 • Autor: @tklipstein • Web: http://code.google.com/p/dojango/
  • 8. About Dojo • Dojo = Ajax Development Framework – open-source JavaScript toolkit for frontend development – allows to shorten the timespan between idea and implementation – cut-down development costs, achieve great results • Features – Supports development of highly interactive web applications – Various basic widgets like Trees, Menus, ListViews, Popups etc. – Business-ready components like Grids and Charts – Lots of add-ons for different purposes like Image Lightbox, animations etc. • Community – Large user community – Used / Supported by Key Players (SUN, IBM etc.) • Version: 1.4 • Website: http://dojotoolkit.org/
  • 9. Dojango Features • Form-Integration : django.forms  dojango.forms – maps django.forms.fields to dojo enhanced widgets (i.e. dojango.forms.fields extends django formfields) • flexible dojo release configuration – aol, google cdn, dojo release 1.0/1.1/1.2/1.3 … • Django ModelStore – using dojo.data.* with dojango.data.modelstore • Dojango Datagrid – Integrate dojo data grid in django • AppEngine support: – get dojango up on Google AppEngine.
  • 10. Your Experience? • Best Practices? – Server-Side Framework: self-written, django, gears … ? – Client-Side Framework: Simple prototype.js or Dojo, ExtJS,… ? • Combination of frontend & backend  what is the perfect couple? (especially for web-devel in python)