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

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
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
 
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
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
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...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
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
 
"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 ...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

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)