1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
h2. AJAX on Rails
This guide covers the built-in Ajax/Javascript functionality of Rails (and more); it will enable you to create rich and dynamic AJAX applications with ease! We will cover the following topics:
* Quick introduction to AJAX and related technologies
* Handling Javascript the Rails way: Rails helpers, RJS, Prototype and script.aculo.us
* Testing Javascript functionality
* Becoming an Ajax Master on Rails: Plugins, Best Practices, Tips and Tricks
endprologue.
h3. Hello AJAX - a Quick Intro
If you are a 'show me the code' type of person, you might want to skip this part and jump to the RJS section right away. However, I would really recommend to read it - you'll need the basics of DOM, http requests and other topics discussed here to really understand Ajax on Rails.
h4. Asynchronous Javascript + XML
Basic terminology, new style of creating web apps
h4. The DOM
basics of the DOM, how is it built, properties, features, why is it central to AJAX
h4. Standard HTML communication vs AJAX
How do 'standard' and AJAX requests differ, why does this matter for understanding AJAX on Rails (tie in for *_remote helpers, the next section)
h3. Built-in Rails Helpers
Mostly a reference to standard JS helpers like link_to_remote, remote_form_for etc + some explanation
h3. Responding to AJAX the Rails way: RJS
In the last section we sent some AJAX requests to the server; now we need to respond, and the standard Rails way to this is using RJS; RJS intro, function reference
h3. I Want my Yellow Thingy: Prototype and Script.aculo.us
Walk through prototype and script.aculo.us, most important functionality, method reference etc.
h3. Testing Javascript
Javascript testing reminds me the definition of the world 'classic' by Mark Twain: "A classic is something that everybody wants to have read and nobody wants to read." It's similar with Javascript testing: everyone would like to have it, yet it's not done by too much developers as it is tedious, complicated, there is a proliferation of tools and no consensus/accepted best practices, but we will nevertheless take a stab at it:
* (Fire)Watir
* Selenium
* Celerity/Culerity
* Cucumber+Webrat
* Mention stuff like screw.unit/jsSpec
Note to self: check out the RailsConf JS testing video
h3. Useful Plugins
This was in the ticket description, but at the moment I don't really have clue what to add here, so please tell me
h3. Tips and Tricks
* Unobtrusive Javascript (Prototype events, maybe the jQuery way (esp. jQeury.live()))
* Minimize communication with the server - there does not have to be a communication at all!
** If you absolutely don't have to, don't use Rails observers
** Cache stuff on the client side, e.g. with auto-complete
* Using AJAX to load stuff asynchronously
** To avoid page blocking
** Tricking page caching
*** inserting user-specific info into a cached page
*** anti-CSFR bit
* Jumping to the top? Try event.stopPropagation
* Performance
** pack your javascript (minify, asset packager)
** require your JS at the end of the file
** other perf tricks and optimization
* Don't overuse AJAX
** Usability first, cool effects second
** situations where AJAX is discouraged
* Last but not least: Javascript is your friend :)
|