PDF Pro Javascript RIA Techniques: Best Practices, Performance and Presentation

Free download. Book file PDF easily for everyone and every device. You can download and read online Pro Javascript RIA Techniques: Best Practices, Performance and Presentation file PDF Book only if you are registered here. And also you can download or read online all Book PDF file that related with Pro Javascript RIA Techniques: Best Practices, Performance and Presentation book. Happy reading Pro Javascript RIA Techniques: Best Practices, Performance and Presentation Bookeveryone. Download file Free Book PDF Pro Javascript RIA Techniques: Best Practices, Performance and Presentation at Complete PDF Library. This Book have some digital formats such us :paperbook, ebook, kindle, epub, fb2 and another formats. Here is The CompletePDF Book Library. It's free to register here to get Book file PDF Pro Javascript RIA Techniques: Best Practices, Performance and Presentation Pocket Guide.

Alternatively, you might want to take input from the user to compose the message. Notice how you provide default values in case any input values are missing and, if no input values are passed to the class when instantiated, you force the compose method to fire.

Please ignore. Each folder must have the ability to add new messages into its structure. But a web mail client needs to allow the users to create and manage these structures via their browser using an intuitive user interface. You need to build that interface using HTML and CSS, and then use JavaScript to listen for user interaction with any page components and execute code based on the actions taken.

Remember that you need to make the application work first and foremost when JavaScript is switched off in the browser, so be sure this is all in place before adding any JavaScript code. If the user clicks a Create Message button, for example, you could execute the code to create a new instance of the EmailMessage class, which would display the form on the page in order to create a new message.

With this level of separation, you should find it easier to maintain your code base as it grows larger. When problems surface, you should be able to locate their sources quickly. So how can your user interface dynamically present forms and other HTML code, which are stored within separate files? You have two options available to help you achieve this. Within your JavaScript code, you use the Ajax technique to dynamically load in the include file only, giving you exactly the HTML code you need. You can then insert this code into the page in the desired location, using the DOM.

EmailMessage message ; model.

It may seem complicated at first, but once you get some practice building code with the MVC pattern, you will soon understand how it works and discover its inherent scalability. The Observer Pattern The Observer pattern is very powerful and highly scalable. I personally find it to be every bit as useful as the MVC pattern, if not more so, in my own projects. The Observer pattern relies on two ideas: broadcasting events the terms publishing and firing are also commonly used , and listening for events the term subscribing is also commonly used.

Code is grouped together into logical blocks, each of which fires its own events and listens for other events fired within the wider application. No two blocks of code are ever connected together or know about each other, which is a marked difference from the MVC pattern, where the controller knows about the model and the view.

In this case there are two code blocks, both unaware of each other, firing and listening for events within a shared event space. Theoretically, there could be an infinite number of code blocks all sharing the same, or several, event spaces. Observer pattern with two distinct code blocks and one event space Within code, you can implement the Observer pattern by creating a new class that stores a list of events, and contains methods to listen to a certain event within that list and to fire a certain event within that list.

You may wish to reuse this pattern across your application in different places. However, they both know about the list of predefined events that has been created for their use and any variables that need to be passed across with each event. The web mail application is then defined by the list of events that exist within it. Any single code block could be removed from the system without causing any errors in the browser.

This cannot be said for the MVC pattern, whose controller needs both the model and the view available at all times to operate without errors. You can also fire and listen for events outside the application code. For example, any code within the page can listen for the WebMail. So, you can create smaller modules using the Observer pattern that fit together into a larger application, and the application itself may also use the Observer pattern.

This makes this pattern extremely powerful, versatile, and maintainable. Always test, and test across as many different browsers as you can, so you have confidence in your code and coding skills. Test-driven development is a concept that has found favor among programmers. The general principle is that when you are ready to write a new function, you create just the basic shell of that function first, defining its inputs and outputs. You then write your series of test cases for that function immediately, predicting the outputs for a set of inputs.

With the test cases written, you may then return to your function and write the code that then fulfils the test cases. This is a sensible approach to development, as it ensures that testing becomes a main priority and ensures that each function is robust and less prone to errors. By knowing that your function works in a series of predetermined conditions, you can be sure that when you use it within your code, it will work as expected.

YUI Test is part of the Yahoo! It allows you to write and run effective test cases on your code, detecting and logging errors as they occur. Test cases can be grouped together into larger test suites to provide a simple way of running multiple tests in one pass. What sets this testing framework above others I have used is that it provides support for testing asynchronous method calls, which allows you to test Ajax callback methods.

It also provides simulation of DOM events in most common browsers. Then, within a tag on the page, you call one of the functions in your code multiple times with different inputs. You tell the test framework which outputs you are expecting for each input, and the framework logs whether the real output of the function call matched your prediction.

Similarly, allowing others to reuse code that you have written benefits the web development community in return. The chapter covered how to apply a clean and readable coding style, and how to use the JavaScript language in a robust way. This marks the end of the first part of this book. Now you are ready to begin building your own RIAs. By applying the principles covered in this part, you will create a solid, accessible application, available to anyone using any web browser on any device.

In the next part of this book, you will learn how to improve the performance and responsiveness of your web applications, which will provide the best experience for your end users. The first part of this book covered the best practices for creating scalable, maintainable, and robust RIAs. The second part of this book focuses on performance, efficiency, and speed.

Here, you will discover techniques for ensuring that end users get a more responsive user interface, while reducing the bandwidth burden on your hosting provider. C h apt e r 3 Understanding the Web Browser T he web browser acts as a facilitator—downloading, rendering, and executing your web application for your end users. It also describes how web pages get to your browser over your network connection, and highlights a number of points of contention that can hinder performance.

The car engine determines whether you have a powerful or efficient car.

Product description

Different engines, written by different companies, organizations, and individuals, essentially distinguish how one browser displays a web page compared to another. Since the engine is separate from the user interface, it is technically possible to use the same rendering and JavaScript engines within two web browsers that look completely different from each other.

Note that different combinations of rendering and JavaScript engines can be used in the same browser, as the two can be distinct from each other, demonstrated in practice by Google Chrome and Safari. JavaScript engine developers are motivated to improve their software to claim theirs is the fastest and most efficient browser on the market. The actual aim of these developers is to ensure that end users experience RIAs in a way similar to their experience with desktop applications.

In many ways, the browser is becoming the new operating system. Negative experiences such as long loading times, browser hangs, and slow responses to user actions are slowly becoming things of the past. As you might expect, not all engines are created equal. Just as figures, charts, and raw data are used to compare performance and efficiency of car models and manufacturers, so, too, are such comparisons made in the web browser world.

Performance benchmark tests are commonplace, and their results are viewed with much interest by web developers. Some controversy surrounds such comparisons, as many manufacturers choose to promote the benchmark test results that favor their product. This means that some vigilance and examination of the results are required to take in the full performance picture. At the time of writing, four major JavaScript benchmarking test suites are in common use to compare the performance of different JavaScript engines in different browsers: SunSpider: Created by the WebKit engine development team, SunSpider is currently the most commonly used JavaScript performance benchmarking suite.

Its tests focus solely around core JavaScript functionality, such as function calls, recursion, looping, and mathematical operations. However, SunSpider also includes tests for specific applications, such as generating a tag cloud from an input in JSON format using string manipulation, decompression, and cryptography. This test suite does not contain any tests for benchmarking DOM interaction performance.

It contains the tests to measure the performance of core JavaScript processing, including binary tree traversal, string and array processing, and prime number computation. These tests are vitally important to RIA developers, since many web applications feature a lot of page interaction through JavaScript. The faster the DOM interaction is, the faster the perceived performance of the web application will be. Unfortunately, currently this test suite does not run correctly within IE versions 6, 7, and 8, causing a JavaScript exception error to fire partway through its execution.

V8 Benchmark Suite: This test suite was created by Google. As you can see, politics are involved in benchmarking. None of the benchmark creators claim to favor any particular browser, of course. However, it would be wise to take the results of all the benchmarking tools into consideration. Each benchmarking suite runs many different tests several times in quick succession, measuring how many tests are completed in a given time frame, and the average of the results is taken, which gives the final performance figure for each test suite for each browser.

These tests tend to center on two main facets of JavaScript: raw processing power of code execution and interaction with a web page via the DOM. These results show that, in general, the more recent the browser, the better the JavaScript performance, in terms of both DOM access speeds and core JavaScript performance. We can also establish that IE versions 6 and 7 are among the slowest browsers of all those tested, despite these being two of the most popular browsers in the world at the time of testing. Internet Explorer 7 Firefox 2.

JavaScript benchmark test results by browser Anatomy of a Web Page Request Have you ever wondered what happens between the time you type a web address into your address bar and the moment a full page appears in your browser? In this section, you will learn the process involved in taking a URL and turning it into something your web browser can display. Within this language, or protocol, the browser is known as the client and the web host as the server. Within this language, request messages pass from the client to the server, and response messages are returned from the server to the client.

Type www. The first part of this header defines the action, or method, used for sending this request. This is the most commonly used action on the Web.

This action is commonly used to send data from an HTML form back to the server for processing. This can be used if you need to know only the metadata that comes along with a response, rather than the response itself, or if you simply wish to prove that a resource at a particular URL actually exists. This can be used to show what servers or services located in the connection chain between the client and the server have been added, changed, or removed from the request. Host: www. This header entry in the request message specifies not only the browser name and its version number, but also information about the operating system the browser is running within in this example, Windows NT 5.

By sending this information, the server has the option to use this information however it wants— either by storing the information in its log files for later statistical analysis or by responding with different HTML markup based on the type of browser software being used to request the data. Of course, the server may choose to ignore this information if the web site being accessed has only one language version, or if the developer of the site wishes to give this choice to the user without making any assumptions. If the server is unable to support the encoding types passed in this list, it will use its own standard encoding.

However, if it is able to support one or more of these encoding types, it allows for the data to be sent to the browser compressed, safe in the knowledge that the browser will be able to support the decompression at the other end. Compression allows the same content to be represented with less data, meaning that the browser will receive the response faster.

Both compression algorithms give effective results, although files that are plain text—including HTML, CSS, and JavaScript files—will compress much more efficiently than binary files, such as images. This is because plain text files tend to contain a lot of whitespace characters, which can be compressed very efficiently.

This persistently open connection will be reused for subsequent requests and responses, instead of opening a new connection each time. By keeping the connection open, there is no need to reestablish the connection each time, which can take time and uses up network resources. Cookies are placed by web sites you visit so that the web site might be able to store and retrieve data capable of providing you with a personalized experience.

The process of logging in will store a cookie on your machine with an identifier value that Google can retrieve on subsequent visits to automatically log you in. Each HTTP request message will send any cookies that have been stored on the computer associated with the particular domain name web site address being accessed.

Cookies can make life a bit more convenient for users. But they are sent with every request, so they should be kept small. In this case, any minor version number within version 1 of the specification will understand the message. After the version is a status number and short description informing the browser what the outcome of the request was, which determines the sort of data in the rest of the message. These status codes are important to understanding what is happening within the browser upon receipt of a response message, and they are described in the following section.

In this case, private tells the browser and any proxy server between the web server and client that the file is specific to the user requesting it, perhaps because it has been personalized for that user. Expires: -1 The Expires header specifies the date and time at which the file sent is considered stale or old , and a new copy should be downloaded. A value of -1 indicates that the content is already too old, forcing the browser to download a fresh copy from the server next time.

Server: gws The name of the web server software is sent to the client in the Server header. The final part of the response message contains the actual file contents returned from the server for the requested URL. If the file type requested were an image, you would see a text representation of the binary data stored within the image file requested, which would then be converted back into binary data within the client, displaying the image correctly.

The response message contains the data requested.


Shop Pro Javascript Ria Techniques Best Practices Performance And Presentation 2009

This allows browsers to resume downloads of large files that have been interrupted due to a network failure or user cancellation of the download. The client should use the URL returned in the response message for all future requests. No blacklisting occurs, as it is only a temporary redirection. The client should use a locally cached copy of the file at the requested URL instead, to conserve bandwidth and deliver the file to the end user faster. The indication is that the fault lies with the client, not the server.

For example, this could be because the IP address of the requesting machine has been placed on a blacklist. The client is welcome N to try this URL again in future, at which point a file may exist at that location. If the client is a search engine spider, it should remove this URL from its index. The indication is that the fault lies with the server, not the client. The messages need to travel from where the browser is located to where the web server is located, and back again, which could be around the world. This section explains how these messages go from their source to their destination without getting lost along the way.

So, its first task is to locate that web server. This type of address looks like a series of numbers separated with a dot. In the case of www. An IP address is like a phone number for the server. For example, Google could move its web server to another machine in another part of the world where the IP address would be different. Instead of having to communicate this change of address through the hostname, Google merely asks that the IP address be updated in the DNS database to point to the IP address at the new location.

This makes the system transparent to the end user. Before we delve further into how the DNS system works, it is important that you understand the different components of a URL. Using the URL www. You will have seen. The system is effectively filtering the available URLs. Again, the list has effectively been filtered to only those servers at that domain. From that point, the request is moved to the servers at that domain—in this example, the DNS servers at google.

Every entry in a DNS database contains not just IP addresses, but also contact details of the owner of the domain and addresses of a couple of key servers, including ones for local name servers. Most organizations will have, at the very least, a primary and secondary name server of their own on their network Google has four name servers at present. In case of a problem on the first server, the request will be redirected to the second, reducing the likelihood of a lookup failure.

Packets: Chunks of Data Communication messages sent between computers on the Internet are formed of small chunks of data, called packets. Several packets usually make up one request. The primary reason for sending packets of data instead of the whole data message in one shot is to reduce the effect of network problems. Also, for less powerful computer systems, smaller packets are easier to manage than larger ones, as they each take only a small portion of available memory to process.

Odell, Den

Devices called routers sit at every major traffic junction on the Internet, performing the connection and routing of data packets around the world. These devices maintain local routing tables, which contain information about how best to direct data packets from where they are now to a location closer to the web server until the packets reach their destination. You can see for yourself how data is routed between your browser and the server you are trying to access using software already built into your computer. If you are a Microsoft Windows user, load the command prompt.

In the box that appears, type cmd, and then press Enter. In the command prompt window, type the following command and press the Enter key: tracert www. In the window that appears, type the following command and press Enter: traceroute www. This can be set either by specifying the file extension. Listing IE does not recognize the. Another solution is needed. The tag created is according to the second parameter.

Clean Code: Functions (Part 1) - Beau teaches JavaScript

VML is supported in all releases of IE from version 5, but is not supported in any other browser. The different, more succinct format of VML, however, makes its file size smaller than an equivalent representation of the same image using SVG. The tags can be added directly to the page in any location.

We often require JavaScript libraries to smooth out cross-browser inconsistencies, as discussed in Chapter 2. The library works by selecting the appropriate vector graphics drawing technique: SVG or VML, depending on the browser. The library component code weighs in at 53KB compressed. The data is constantly changing—perhaps you are using Ajax to receive new data every 30 seconds from the server. You want to reflect the changes on the graph as the new data arrives.

Figure shows how this might look to your users. Hovering the mouse over each point on the graph highlights that point and reveals its exact value. Next, the data points are plotted and lines drawn between them. Applications like webmail clients, photo editors, and social networking sites cross this boundary.

It is widely regarded that this type of web site will continue to grow in popularity. I wrote this book to help web developers with some existing JavaScript skills successfully create their own professional, visually rich, dynamic, and performancetuned RIAs. In this book, I will show you how best to build a solid, maintainable foundation of HTML, CSS, and JavaScript code for your RIAs, together with the Ajax techniques needed to provide the dynamic communication between the browser and web server behind the scenes. I will describe the performance limitations you may run into when building your web applications and how best to overcome these.

You also will learn how to improve your RIA user interfaces by adding typographical headings using custom fonts, multimedia playback components, customized form controls, and dynamic charting capabilities. Additionally, I will demonstrate how to continue running your web applications when the connection to the server is broken, how to use Ajax to read hidden data stored within binary files, and how to ensure the highest level of accessibility within your JavaScript web applications.

No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.

Apress, Inc. Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. Although every precaution has been taken in the preparation of this work, neither the author s nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. For my family, friends, and loved ones Contents at a Glance About the Author.

Readable URLs. File and Folder Naming. File Encoding. Organizing Assets. Setting Up Your Development Environment. Use Consistent Formatting. Use Braces and Brackets. Add Meaning with Letter Casing. Use Descriptive Variable and Function Names. Maintain Short Function Blocks. Professional JavaScript Programming. Avoid Solving Nonexistent Problems. Use the Document Object Model. Separate Style from Code. Chain Function Calls. Write Bulletproof Code. Code with Localization in Mind. Object-Oriented JavaScript. Objects, Classes, and Constructors.

The this Keyword. Access to Properties and Methods. Creating Namespaces and Hierarchies. The Rendering and JavaScript Engines. JavaScript Engine Performance Benchmarking. Anatomy of a Web Page Request. How Messages Are Transmitted. Page Performance. Viewing the Performance of a Page. Identifying Potential Bottlenecks in Performance. Tweaking Your Web Server for Performance.

Use a Content Delivery Network. Compress the Output from the Server. Reduce Domain Name Lookups. Split Components Across Domains. Avoid Linking to Redirects. Tweaking Your Style Sheets for Performance. Speed Up Table Layouts. Use Shorthand Values. Tweaking Your Images for Performance. Understand Image File Formats. Optimize PNG Images. Tweaking Your JavaScript for Performance.

  • Learning JavaScript: Essentials And Guidelines — Smashing Magazine.
  • Pro Javascript RIA Techniques.
  • Marsilio Ficino and His World.
  • Meaning of "ria" in the Malay dictionary.
  • Planets, Stars, and Galaxies?
  • Download Pro Javascript Ria Techniques Best Practices Performance And Presentation.
  • Shop Pro Javascript Ria Techniques Best Practices Performance And Presentation ;

Timing Is Everything. Boost Core JavaScript Performance. Improve Ajax Performance. Improve DOM Performance. Creating Cookies. The Downside of Cookies. Using a Reusable Offline Storage Component. Binary Files. Users Using Assistive Technology.

Other Titles by Den Odell

Users on Mobile Devices. Accessibility for All. He is a web standards and accessibility advocate, with a special passion for user interface development. As a front-end technical architect at the AKQA digital service agency in London, Den built and architected several large-scale web sites and rich Internet applications for a number of clients, including Ferrari, Nike, and Nokia. He now lives in Sweden, where he has been using his technical skills and passion for music to help record labels and artists develop their presence on the Web. In his spare time, Den runs nightclub events, plays records at clubs across Europe, and has a keen eye for digital photography.

He provides a centralized engineering service to different lines of business and consults on content management, collaboration, and mobile strategies. Kunal is an entrepreneur who helps startups define their technology strategy, product road map, and development plans. With strong relationships with several development partners worldwide, he is able to help startups and even large companies build appropriate development partnerships.

He generally works in an advisor or a consulting CTO capacity, and serves actively in the project management and technical architect functions. There are way too many people to name, but I would like to thank you all—you know who you are. Thanks to Clay Andres for seeing the potential in my book and allowing me to run with it. I want to offer massive thanks to Maria for supporting me when I was busy for what must have seemed like endless evenings and weekends as I wrote this book.

Thank you for calming my stress, keeping me together, encouraging me to keep on when times were tough, and going above and beyond what anyone could expect. Thanks most of all to you, my readers, for taking the time to read and study this book. I hope you are able to understand, learn from, and put into practice its contents and build better web applications, and to advance your career as a result. Managing your e-mail through web sites such as Google Gmail, Yahoo! Mail, and Microsoft Windows Live Hotmail is every bit as simple and intuitive as using a desktop e-mail client such as Microsoft Outlook or Apple Mail.

Web page refreshes are not expected when performing actions, and if a new message is received by the mail server, we expect to see it appear in our inbox immediately. Building web sites that behave in this way is seen as a departure from the traditional model on the Web, where performing actions such as a submitting a form or clicking a link to refresh an online forum to see the latest posts were considered the norm. It is this difference that has led some to label these RIAs as Web 2.

In some respects an upgrade has been taking place, but not an upgrade of the Web itself. The improvements are actually in the web browsers we use to browse our favorite sites.

Download Pro Javascript Ria Techniques: Best Practices, Performance And Presentation

Gradually over the past few years, features have been added to each of the major web browsers. Additionally, some attempts at conformance among browser manufacturers have meant that finally, through the power of JavaScript and standardized Document Object Model DOM scripting, live page updates are possible using data loaded dynamically from the web server. The Web is no longer a static place. I have written this book primarily to help you harness the power of JavaScript to add dynamic components to your pages and to create entire RIAs of your own.

With great power comes great responsibility, however. I put emphasis on ensuring that you understand the importance of creating a responsive user experience that excites, rather than frustrates, your site visitors. I also stress that you have the ability to apply creativity through your design, to make your application look and behave superior to any static web site.

Perhaps you completed the project solo; perhaps you built it as part of a team. In any case, congratulations on completing your project! You deserve to feel proud. Looking back to the start of your project with the knowledge and experience you have garnered, I bet you can think of at least one thing that, if done differently, would have saved you from bashing your head against the wall. It is a bit of a loaded phrase, however, and should be treated with caution.

The landscape of web development is constantly changing. Browsers rise and fall in popularity, feature adoption between them is not always in parallel, and the technologies we use to construct web sites for display in such browsers are still fairly immature, constantly undergoing revisions and updates. FAQ Policy. Starting with the essential principles and techniques of semantic markup, build efficient, responsive web applications based on web standard best practices and real—world experience. Apply practical techniques and see how to reuse examples of broadly relevant page components to improve the interface and performance of existing sites.

Explore ways to push the boundaries of the possible with existing browser technology. Show all. A biography for this author is not available. Understanding the Web Browser Pages Performance Tweaking Pages Smoke and Mirrors: Perceived Responsiveness Pages Showing Rating details.

More filters. Sort order. Nov 16, Craig Cecil rated it liked it Shelves: computers. Den Odell takes the reader through the creation of a general purpose utility library via common problems and examples you will probably encounter during your programming endeavors. Dec 09, Giuseppe Pizzimenti rated it liked it Shelves: javascript , informatica , computer , science , web , development.

Zach rated it really liked it Nov 05, Paul rated it liked it Oct 17, Rado added it Jul 24, Ben added it Aug 31, Clodpated marked it as to-read Dec 30, Cezar Popescu added it Jan 16, Stefane Fermigier added it Apr 01, Joao added it Jun 18, Jeremiah Stover added it Mar 01, Bisiar is currently reading it Mar 28, Jessi marked it as to-read Jun 20, Daniel Ervi added it Apr 14, Waseem added it Sep 04, Bryan added it Sep 07,