Developing Backbone.Js Applications

Total Page:16

File Type:pdf, Size:1020Kb

Developing Backbone.Js Applications www.it-ebooks.info Developing Backbone.js Applications Addy Osmani Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo www.it-ebooks.info Developing Backbone.js Applications by Addy Osmani Revision History for the : 2012-04-19 Early release revision 1 See http://oreilly.com/catalog/errata.csp?isbn=9781449328252 for release details. ISBN: 978-1-449-32825-2 1335306849 www.it-ebooks.info Table of Contents Prelude .................................................................... vii 1. Introduction ........................................................... 1 Fundamentals 2 MVC, MVP & Backbone.js 2 MVC 2 Smalltalk-80 MVC 2 MVC As We Know It 3 Models 4 Views 5 Controllers 8 Controllers in Spine.js vs Backbone.js 8 What does MVC give us? 10 Delving deeper 10 Summary 11 MVP 11 Models, Views & Presenters 11 MVP or MVC? 12 MVC, MVP and Backbone.js 13 Fast facts 15 Backbone.js 15 2. The Basics ............................................................ 17 What is Backbone? 17 Why should you consider using it? 17 The Basics 17 Models 18 Views 21 Creating new views 21 What is el? 22 Collections 23 iii www.it-ebooks.info Underscore utility functions 25 Routers 25 Backbone.history 27 Namespacing 27 What is namespacing? 28 Additional Tips 31 Automated Backbone Scaffolding 31 Is there a limit to the number of routers I should be using? 32 Is Backbone too small for my application’s needs? 32 3. RESTful Applications .................................................... 33 Building RESTful applications with Backbone 33 Stack 1: Building A Backbone App With Node.js, Express, Mongoose and MongoDB 33 Reviewing the stack 33 Practical 34 Practical Setup 40 Building Backbone.js Apps With Ruby, Sinatra, MongoDB and Haml 42 Introduction 42 What Is Sinatra? 42 Getting Started With Sinatra 43 Templating And HAML 45 MongoDB Ruby Driver 47 Getting started 47 Practical 48 Installing The Prerequisites 48 Tutorial 50 Conclusions 57 4. Advanced ............................................................. 59 Modular JavaScript 59 Organizing modules with RequireJS and AMD 59 Writing AMD modules with RequireJS 60 Keeping Your Templates External Using RequireJS And The Text Plugin 63 Optimizing Backbone apps for production with the RequireJS Optimizer 65 Practical: Building a modular Backbone app with AMD & RequireJS 67 Overview 67 Markup 68 Configuration options 69 Modularizing our models, views and collections 70 Decoupling Backbone with the Mediator and Facade patterns 75 Summary 75 Practical 76 iv | Table of Contents www.it-ebooks.info Paginating Backbone.js Requests & Collections 82 Paginator’s pieces 83 Downloads And Source Code 83 Live Examples 84 Paginator.requestPager 86 1. Create a new Paginated collection 86 2: Set the model and base URL for the collection as normal 86 3. Map the attributes supported by your API (URL) 87 4. Configure the default pagination, query and sort details for the pag- inator 87 5. Finally, configure Collection.parse() and we’re done 88 Convenience methods: 89 Paginator.clientPager 89 1. Create a new paginated collection with a model and URL 89 2. Map the attributes supported by your API (URL) 90 3. Configure how to paginate data at a UI-level 90 4. Configure the rest of the request parameter default values 90 5. Finally, configure Collection.parse() and we’re done 91 Convenience methods: 91 Views/Templates 91 Backbone & jQuery Mobile 94 Resolving the routing conflicts 94 Practical: A Backbone, RequireJS/AMD app with jQuery Mobile 95 Getting started 95 jQuery Mobile: Going beyond mobile application development 96 5. Unit Testing ........................................................... 99 Unit Testing Backbone Applications With Jasmine 99 Introduction 99 Jasmine 99 Suites, Specs & Spies 101 beforeEach and afterEach() 104 Shared scope 104 Getting setup 105 TDD With Backbone 105 Models 105 Collections 108 Views 110 Initial setup 111 View rendering 113 Rendering with a templating system 116 Conclusions 118 Exercise 118 Table of Contents | v www.it-ebooks.info Further reading 118 Unit Testing Backbone Applications With QUnit And SinonJS 119 Introduction 119 QUnit 119 Getting Setup 119 Assertions 120 Adding structure to assertions 124 Assertion examples 125 Fixtures 127 Asynchronous code 129 SinonJS 130 What is SinonJS? 130 Stubs and mocks 133 Practical 135 Models 135 Collections 137 Views 138 Events 139 App 141 Further Reading & Resources 142 6. Resources ........................................................... 143 7. Conclusions .......................................................... 145 vi | Table of Contents www.it-ebooks.info Prelude Welcome to my (in-progress) book about the Backbone.js framework for structuring JavaScript applications. It’s released under a Creative Commons Attribution-Non- Commercial-ShareAlike 3.0 Unported license meaning you can both grab a copy of the book for free or help to further improve it. I’m very pleased to announce that this book will be out in physical form in a few months time via O’Reilly Media. Readers will have the option of purchasing the latest version in either print or a number of digital formats then or can grab a recent version from this repository. Corrections to existing material are always welcome and I hope that together we can provide the community with an up-to-date resource that is of help. My extended thanks go out to Jeremy Ashkenas for creating Backbone.js and these members of the com- munity for their assistance tweaking this project. I hope you find this book helpful! vii www.it-ebooks.info www.it-ebooks.info CHAPTER 1 Introduction As JavaScript developers, we are at an interesting point in time where not only do we have mature solutions to help organize the JavaScript powering our applications based on a separation of concerns, but developers looking to build non-trivial projects are almost spoiled for choice for frameworks that can help structure their applications. Maturity in software (framework) development isn’t simply about how long a frame- work has been around. It’s about how solid the framework is and more importantly how well it’s evolved to fill its role. Has it become more effective at solving common problems? Does it continue to improve as developers build larger and more complex applications with it? In this book, I will be covering the popular Backbone.js, which I consider the best of the current family of JavaScript architectural frameworks. Topics will include MVC theory and how to build applications using Backbone’s mod- els, views, collections and routers. I’ll also be taking you through advanced topics like modular development with Backbone.js and AMD (via RequireJS), how to build ap- plications using modern software stacks (like Node and Express), how to solve the routing problems with Backbone and jQuery Mobile, tips about scaffolding tools, and a lot more. If this is your first time looking at Backbone.js and you’re still unsure whether or not to give it a try, why not take a look at how a Todo application can be implemented in Backbone and several other popular Javascript frameworks before reading further? The goal of this book is to create an authoritative and centralized repository of infor- mation that can help those developing real-world apps with Backbone. If you come across a section or topic which you think could be improved or expanded on, please feel free to submit a pull-request. It won’t take long and you’ll be helping other devel- opers avoid problems you’ve run into before. 1 www.it-ebooks.info Fundamentals In this section we are going to cover the context into which a framework like Back- bone.js fits. Let’s begin our journey into understanding Backbone better with a look at code architecture. MVC, MVP & Backbone.js Before exploring any JavaScript frameworks that assist in structuring applications, it can be useful to gain a basic understanding of architectural design patterns. Design patterns are proven solutions to common development problems and can suggest structural approaches to help guide developers in adding some organization to their applications. Patterns are useful because they’re a set of practices that build upon the collective experience of skilled developers who have repeatedly solved similar problems. Al- though developers 10 or 20 years ago may not have been using the same programming languages when implementing patterns in their projects, there are many lessons we can learn from their efforts. In this section, we’re going to review two popular patterns - MVC and MVP. We’ll be exploring in greater detail how Backbone.js implements these patterns shortly to better appreciate where it fits in. MVC MVC (Model-View-Controller) is an architectural design pattern that encourages im- proved application organization through a separation of concerns. It enforces the iso- lation of business data (Models) from user interfaces (Views), with a third component (Controllers) traditionally present to manage logic, user-input and the coordination of models and views. The pattern was originally designed by Trygve Reenskaug while working on Smalltalk-80 (1979), where it was initially called Model-View-Controller- Editor. MVC was described in depth in “Design Patterns: Elements of Reusable Object- Oriented Software” (The “GoF” or “Gang of Four” book) in 1994, which played a role in popularizing its use. Smalltalk-80 MVC It’s important to understand what the original MVC pattern was aiming to solve as it has changed quite heavily since the days of its origin. Back in the 70’s, graphical user- interfaces were far and few between. An approach known as Separated Presentation began to be used as a means to make a clear division between domain objects which modeled concepts in the real world (e.g a photo, a person) and the presentation objects which were rendered to the user’s screen. 2 | Chapter 1: Introduction www.it-ebooks.info The Smalltalk-80 implementation of MVC took this concept further and had an ob- jective of separating out the application logic from the user interface.
Recommended publications
  • Learning Javascript Design Patterns
    Learning JavaScript Design Patterns Addy Osmani Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo Learning JavaScript Design Patterns by Addy Osmani Copyright © 2012 Addy Osmani. All rights reserved. Revision History for the : 2012-05-01 Early release revision 1 See http://oreilly.com/catalog/errata.csp?isbn=9781449331818 for release details. ISBN: 978-1-449-33181-8 1335906805 Table of Contents Preface ..................................................................... ix 1. Introduction ........................................................... 1 2. What is a Pattern? ...................................................... 3 We already use patterns everyday 4 3. 'Pattern'-ity Testing, Proto-Patterns & The Rule Of Three ...................... 7 4. The Structure Of A Design Pattern ......................................... 9 5. Writing Design Patterns ................................................. 11 6. Anti-Patterns ......................................................... 13 7. Categories Of Design Pattern ............................................ 15 Creational Design Patterns 15 Structural Design Patterns 16 Behavioral Design Patterns 16 8. Design Pattern Categorization ........................................... 17 A brief note on classes 17 9. JavaScript Design Patterns .............................................. 21 The Creational Pattern 22 The Constructor Pattern 23 Basic Constructors 23 Constructors With Prototypes 24 The Singleton Pattern 24 The Module Pattern 27 iii Modules 27 Object Literals 27 The Module Pattern
    [Show full text]
  • Mobile HTML5: Implementing a Responsive Cross-Platform Application
    Aalto University School of Science Degree Programme of Computer Science and Engineering Kimmo Puputti Mobile HTML5: Implementing a Responsive Cross-Platform Application Master's Thesis Kirkkonummi, May 15, 2012 Supervisor: Professor Petri Vuorimaa, Aalto University Instructor: Risto Sarvas D.Sc.(Tech.) Aalto University School of Science ABSTRACT OF Degree Programme of Computer Science and Engineering MASTER'S THESIS Author: Kimmo Puputti Title: Mobile HTML5: Implementing a Responsive Cross-Platform Application Date: May 15, 2012 Pages: ix + 70 Professorship: Media Technology Code: T-111 Supervisor: Professor Petri Vuorimaa Instructor: Risto Sarvas D.Sc.(Tech.) In twenty years, the Web has become an integral part of our everyday lives. The rapid growth of the smartphone market has brought the Web from our home desks to anywhere we are, and enabled us to access this vast source of information at any time. However, the proliferation of mobile devices and platforms has raised new prob- lems for application development. The growing amount of different platforms and their distinct native technologies make it hard to develop applications that can be accessed with all these devices. The only combining factor in all these platforms is the browser, and it is be- coming the universal application platform. We cannot afford anymore to build applications for the silos and walled gardens of single platforms, and building cross-platform applications is essential in the modern mobile market. In this work, I introduce the HTML5 (HyperText Markup Language version 5) specification as well as several related specifications or specification drafts for modern web development. I also present several tools and libraries for mobile web development.
    [Show full text]
  • Managing Data Visualization Pipeline with Backbone.Js and D3.Js Improving Overall Software Efficiency Using Automated Build Pipeline with Gulp
    Aalto University School of Science Master's Programme in ICT Innovation Taha Kachwala Managing Data Visualization Pipeline with Backbone.js and D3.js Improving overall software efficiency using Automated Build Pipeline with Gulp Master's Thesis Espoo, 10.10.2016 Supervisor: Prof. Petri Vuorimaa Instructor: Pertti Lounamaa Aalto University School of Science ABSTRACT OF Master's Programme in ICT Innovation MASTER'S THESIS Author: Taha Kachwala Title: Managing Data Visualization Pipeline with Backbone.js and D3.js. Improving overall software efficiency using Automated Build Pipeline with Gulp Date: 10.10.2016 Pages: 87 Professorship: Digital Media Technology Code: T-111 Supervisor: Prof. Petri Vuorimaa Instructor: Petri Lounamaa Ph.D. (Economic Systems) This thesis studies how a Model-View-Controller (MV*) framework can be integrated into a Data Visualization Pipeline. Specifically, this thesis aims to cover the challenges related in integrating an MV* framework like Backbone.js with D3.js, which is a popular JavaScript based visualization library. Additionally, it also evaluates another sub-topic regarding task runners, which are tools claiming to automate manual tasks as well as streamlining the build process. Data Visualization has become an important aspect for many web applications. Developers need to employ sophisticated mechanisms to provide interactive visualizations. This requires separation of concerns within the visualization pipeline which is achieved with the combination of Backbone.js and D3.js. Evaluation of this methodology indicates that such a combination enables the application to be more versatile and robust while also improving performance. In recent years, client-side web applications have become increasingly complex. A typical web application on average requires between 10-60 external open-source JavaScript libraries.
    [Show full text]
  • Software Architecture Document
    SOFTWARE ARCHITECTURE DOCUMENT Author: Gerard Mundo Bosch Content Owner: SVT Analytics REVISION HISTORY DOCUMENT NUMBER: RELEASE/REVISION: RELEASE/REVISION DATE: 1 v0.5 Monday, May 6 Page | 1 TABLE OF CONTENTS 1. Introduction .............................................................................................................................................. 3 1.1 Purpose ............................................................................................................................................... 3 1.1.1 Problem definition ....................................................................................................................... 3 1.1.2 Objectives ..................................................................................................................................... 4 1. 2 Scope .................................................................................................................................................. 4 1. 3 Glossary and acronym list .................................................................................................................. 5 1. 4 Stakeholders ....................................................................................................................................... 5 1.5 Non-functional requirements ............................................................................................................. 8 2. Architecture overview ..............................................................................................................................
    [Show full text]
  • Backbone.Js on Rails
    1 Build snappier, more interactive apps with cleaner code and better tests in less time Backbone.js on Rails thoughtbot Jason Morrison Chad Pytel Nick Quaranto Harold Giménez Joshua Clayton Gabe Berke-Williams Chad Mazzola May 24, 2013 Contents 1 Introduction 7 The shift to client-side web applications ................. 7 Goals for this book ............................ 9 Alternatives to Backbone ......................... 9 The example application ......................... 10 Framework and library choice in the example application .... 10 Conventions used in this book ...................... 11 2 Getting up to speed 12 Backbone online resources ....................... 12 JavaScript resources ........................... 13 3 Organization 14 Backbone and MVC ............................ 14 What goes where ............................. 15 Namespacing your application ...................... 17 Mixins ................................... 18 1 CONTENTS 2 4 Rails Integration 20 Organizing your Backbone code in a Rails app ............. 20 Rails 3.0 and prior ............................. 20 Jammit and a JST naming gotcha ................. 22 Rails 3.1 and above ............................ 23 An overview of the stack: connecting Rails and Backbone ....... 25 Setting up models .......................... 26 Setting up Rails controllers ..................... 27 Setting Up Views .......................... 30 Customizing your Rails-generated JSON ................ 32 ActiveRecord::Base.include_root_in_json ............. 34 Converting an existing page/view
    [Show full text]
  • Client-Server Web Apps with Javascript and Java
    Client-Server Web Apps with JavaScript and Java Casimir Saternos Client-Server Web Apps with JavaScript and Java by Casimir Saternos Copyright © 2014 EzGraphs, LLC. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://my.safaribooksonline.com). For more information, contact our corporate/ institutional sales department: 800-998-9938 or [email protected]. Editors: Simon St. Laurent and Allyson MacDonald Indexer: Judith McConville Production Editor: Kristen Brown Cover Designer: Karen Montgomery Copyeditor: Gillian McGarvey Interior Designer: David Futato Proofreader: Amanda Kersey Illustrator: Rebecca Demarest April 2014: First Edition Revision History for the First Edition: 2014-03-27: First release See http://oreilly.com/catalog/errata.csp?isbn=9781449369330 for release details. Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly Media, Inc. Client-Server Web Apps with JavaScript and Java, the image of a large Indian civet, and related trade dress are trademarks of O’Reilly Media, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and author assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein.
    [Show full text]
  • Django Web Framework
    Django Web Framework Zhaojie Zhang CSCI5828 Class Presentaon 03/20/2012 Outline • Web frameworks • Why python? Why Django? • Introduc=on to Django • An example of Django project • Summary of benefits and features of Django • Comparison of Django and Ruby on Rails • Addi=onal tools to facilitate Django Development • Applicaons made with Django • To learn more about Django • References Web Frameworks Languages Web frameworks • Php • Zend, Symfony, Phpdevshell… • Python • Django, web2py, Cherrypy, … • Java • Struts, Spring, Tapestry, GWT, … • Ruby • Ruby on rails,… • Perl • Catalyst, Mason, … • Javasript • JavaScriptMVC, … • … • … Why Python? • High-level language • Concise syntax and easy to learn • Large and growing developer community • Portable on almost all plaorms Why Django? • Python programming language • Open-source project • Large and growing community • Well-documented • Large collec=ons of apps • Good debugging feedbacks History of the Django Project • Django started as an internal project at the Lawrence Journal-world newspaper in 2003 and was created to meet the fast deadlines of journalism websites. • Django was released to the public by the developers in 2005. • The project was named aer the jazz Guitarist Django Reinhardt. • Now an open source web framework for building maintainable and reusable web applicaons. Introduc=on to Django • A high-level python web framework adhering to the DRY principle: Don’t repeat yourself. • MVC design paerns: code modules are divided into logic groups. • Automac Admin Interface. • Elegant URL
    [Show full text]
  • SPA Design and Architecture
    Understanding single-page web applications Emmit A. Scott, Jr. FOREWORD BY Burke Holland MANNING SPA Design and Architecture Licensed to Mark Watson <[email protected]> ii Licensed to Mark Watson <[email protected]> SPA Design and Architecture Understanding single-page web applications EMMIT A. SCOTT, JR. MANNING SHELTER ISLAND Licensed to Mark Watson <[email protected]> iv For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Email: [email protected] ©2016 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without elemental chlorine. Manning Publications Co.
    [Show full text]
  • Pro-Javascript-Development.Pdf
    BOOKS FOR PROFESSIONALS BY PROFESSIONALS® Odell RELATED Pro JavaScript Development Pro JavaScript Development is a practical guide for front-end web developers who are experienced at building web pages with HTML, CSS, and JavaScript, and now wish to advance their JavaScript skills to a higher level. You will learn how to build large, well-structured, high quality, mobile-optimized web sites and apps, using the latest supported browser APIs, language features, and tools. This book teaches and shows you in practical hands-on terms how you can: • Master the performance, reliability, stability, and code manageability of your JavaScript • Understand and write efficient object-oriented and prototypal code, including full understanding of the ‘this’ keyword • Boost the performance of your JavaScript code • Architect large web applications using common design patterns • Write high quality JavaScript code and avoid the pitfalls most likely to cause errors • Manage code dependencies with AMD and RequireJS • Develop for mobile, build games, and set up a real-time video chat using modern APIs such as Geolocation, Canvas and WebRTC • Document your code as the professionals do • Write command-line and web server applications in JavaScript with Node.js • Use build tools, such as Grunt and Gulp, to automate repetitive tasks and improve your development workflow Using real-world examples and applications that you’ll build yourself, Pro JavaScript Development has unique, practical content that will make you a better JavaScript developer. Become a master
    [Show full text]
  • Developing Backbone.Js Applications
    Developing Backbone.js Applications A book on Backbone.js targeted at beginners and advanced users alike This is the home of 'Developing Backbone.js Applications', an (in-progress) book about the Backbone.js framework for structuring JavaScript applications. It is released under a CC-license. I am quite pleased that this book will be out in physical form in a few months time via O'Reilly Media. Readers will have the option of purchasing the latest version in either print or a number of digital formats then or can grab a copy for free from this repository. Corrections to existing material are always welcome and I hope that together we can provide the community with an up-to-date resource that is of help. My extended thanks to these members of the community for their assistance tweaking the project. Index Introduction Fundamentals MVC, MVP & Backbone.js The Basics Models Views Collections Routers Namespacing Additional tips Advanced Building RESTful applications with Backbone Building a Backbone app with Node.js, Express, Mongoose and MongoDB Modular JavaScript Organizing modules with RequireJS and AMD Keeping your templates external with the RequireJS text plugin Optimizing Backbone apps for production with the RequireJS Optimizer Practical: Building a modular Backbone app with AMD & RequireJS Decoupling Backbone with the Mediator and Facade patterns Backbone & jQuery Mobile Practical: Building a modular mobile app with Backbone & jQuery Mobile Testing Unit Testing Backbone Applications With Jasmine Introduction Jasmine Suites, Specs And
    [Show full text]
  • Mastering Javascript Single Page Application Development
    Mastering JavaScript Single Page Application Development An in-depth guide to exploring the design, architecture, and techniques behind building sophisticated, scalable, and maintainable single-page applications in JavaScript Philip Klauzinski John Moore BIRMINGHAM - MUMBAI Mastering JavaScript Single Page Application Development Copyright © 2016 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: October 2016 Production reference: 1241016 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78588-164-0 www.packtpub.com Credits Authors Copy Editor Philip Klauzinski Safis Editing John Moore Reviewers Project Coordinator Ciro Artigot Ritika Manoj Commissioning Editor Proofreader Wilson D'souza Safis Editing Acquisition Editor Indexer Reshma Raman Rekha Nair Content Development Editor Graphics Divij Kotian Jason Monteiro Technical Editor Production Coordinator Sachit Bedi Aparna Bhagat About the Authors Philip Klauzinski is a senior frontend developer specializing in JavaScript Single Page Application (SPA) development.
    [Show full text]
  • Pixaxe: a Declarative, Client-Focused Web Application Framework
    Pixaxe: A Declarative, Client-Focused Web Application Framework Rob King Principal Researcher, TippingPoint DVLabs Abstract than most “server agnostic” frameworks), an extremely easy to use Model-View-Controller (MVC) design, and a This paper provides a brief introduction to and overview very bandwidth-frugal design that transmits a page only of the Pixaxe Web Application Framework (“Pixaxe”). once and then transmits only changes to interesting data. Pixaxe is a framework with several novel features, in- Pixaxe was deisgned to be very useful in developing cluding a transparent template system that runs entirely web interfaces for legacy applications, or in other situ- within the web browser, an emphasis on developing rich ations where the web interface is not the primary inter- internet applications as simple web pages, and pushing as face to a set of data. It was also designed to be very much logic and rendering overhead to the client as possi- efficient in the use of server resources, by limiting re- ble. This paper also introduces several underlying tech- quired bandwidth and performing as much computation nologies of Pixaxe, each of which can be used separately: and rendering on the client as possible. In fact, Pixaxe re- Jenner, a completely client-side template engine; Esel, a quires nothing more of a server than the ability to serve powerful expression and query language; and Kouprey, a static files. parser combinator library for ECMAScript. In feel, Pixaxe is closest to XForms [9] 1, in that it views web pages as declarative interfaces modifying lo- 1 Introduction cal models that can then be synchronized with servers without reloading the page.
    [Show full text]