Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 210 lines (172 sloc) 7.534 kb
9681159 @tjweir Lets seed
authored
1 Table of Contents: 
2
3 Pick an application to build from scratch.
4 Should we compare and contrast with other frameworks? I don't know many others
5
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
6 Ideas:
7 1. Include a "Lift quick reference card": all of the lift template tags, brief overview of the render flow (with cross-refs)
8
9 --------------------
10 IMHO we should start with an introduction that gives a brief overview
11 of what Lift is trying to solve, how it works and why it does it
12 well. The first half would explain some basics about it (built on
13 Scala, incredible template support, clean separation of V and C), and
14 then the second half would walk the user through running the HelloLift
15 example just to get something going out of the box. From my
16 understanding at this point that would involve just three things:
17 installing Java (if required), installing Maven2, and then downloading
18 and running the HelloLift project zip. Of those three, I think
19 installing Maven is probably the most complex  - Derek
9681159 @tjweir Lets seed
authored
20
21 So you see 2 distinct Sections: Generalized info and intro, and getting into and building an app?  Sounds good to me.  -Tyler
22 --------------------
23
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
24 ====== Intro Section ======
25
26 1. Introduction
27 * Welcome to lift
28 * What is lift?
29 * Fast, flexible template-based web framework built on Scala
30 * Full-featured template system
31 * Clean separation of M,V and C
32 * Powerful Web 2.0 (AJAX, COMET) support baked in
33 * Thriving community of developers
34 * Brief overview of Scala
35 * OO/FP Hybird
36 * Compiles to JVM Bytecode
37 * Made by the good people who brought us generics
38 * You get a new powerful language with access to all of Java's libs
39 * Why another framework?
40 * Too much boilerplate in other frameworks (Struts, we're talking about you)
41 * Exposure of programming logic in templates makes things difficult (JSP, etc)
42 * Scala has higher efficiency in terms of LoC per function point
43 * Powerful AJAX, COMET and JS support
44 * Let's try out HelloLift
45 * Prerequisites
46 * Java 1.5 or newer (Scala is not required directly since Maven will pull it down)
9681159 @tjweir Lets seed
authored
47 * Maven 2 - include a very brief synopsis on Maven. Anything more detailed should point to the Maven site or go in an appendix
3f3ec1e Fixed some whitespace that git was complaining about
Derek Chen-Becker authored
48 * Some sort of programming editor is recommended: mention emacs, Eclipse, NetBeans, JEdit, etc.
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
49 * Download the HelloLift project and unzip it
50 * "mvn jetty:run"
51 * Profit!
52 * Cursory examination of:
53 * Index template (shows surround and snippet)
54 * Default template
55 * Hello snippet
56
57 2. Getting to know Maven and Project layout (based on HelloLift example)
58
59 - I think this should be a small, but self-contained section with
60 enough info so that someone who wanted to do "standard" things with
61 Maven wouldn't need to go digging around on the site. In other
62 words, enough info on maven in this book to handle all of the
63 examples we use in the book.
64
65 * What is maven
66 * Comprehensive project and build management
67 * Structured project layout (conventions)
68 * Dependency management
69 * Automated testing and packaging
70 * Automated reporting
71 * Archetypes: project "templates"
72 * Directory layout
73 * Scala-specific stuff
74 * web content
75 * resources
76 * Introducing the POM
77 * Project info (author, date, version, etc)
78 * Repo definitions
79 * Dependencies
80 * Special build targets
3f3ec1e Fixed some whitespace that git was complaining about
Derek Chen-Becker authored
81
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
82 ====== General Topics ======
83
84 3. Lift Architecture in general (need info from dpp and marius)
85 * Everything handled by LiftFilter
86 * Show example config in web.xml
87 * Handling in LiftFilter allows fall-through to default handlers for things that Lift doesn't handle (Static content, primarily)
88 * Rendering pipeline (This can be high-level right now, with links to detailed info in the advanced section - Derek)
89 * Dispatch to proper code
90 * dispatch methods in effect?
91 * rewrite methods in effect?
92 * SiteMap matching and access control
93 * template or view matched?
94 * recursive processing of template and any snippets contained therein
95 * direct processing of view
96 * Error handling
97 * List of tags that are handled by Lift (stolen from http://liftweb.net/index.php/LiftTags, not sure how up-to-date this is)
98 * surround
99 * embed
100 * comet
101 * ignore
102 * snippet (and, the alternative lift:<class>.<method>)
103 * additional attribute handling in tags (via S.attr)
104
105 4. A detailed look at lift user components
106 * SiteMap
107 * Performs two primary duties: generates the menu for your site (customizable) and performs per-page access control
108 * Cover Menu, Loc objects to define paths and superpaths (my term for paths that match anything under them)
109 * Additional attributes
110 * If
111 * Unless
112 * etc
113 * Templates
114 * Static xml that may embed or surround other templates, and may embed snippets (reference tag list)
115 * well-formed XML
116 * Special template-hidden directory not directly accessible
117 * Use of prefixed elements to assist with binding in snippets
118 * Re-cover how templates are located/dispatched
119 * Snippets
120 * Chunks of code that generate pieces of a final output page. May themselves generate template code that is interpreted
121 * Generic Scala classes (stateless)
122 * How to deal with state in snippets
123 * RequestVars
124 * SessionVars
125 * StatefulSnippets
126 * Using Helpers.bind. In particular, cover view vs. forms usage
127 * Using Helpers.chooseTemplate for nested templates
128 * Views
129 * Chunks of code intended to generate a complete page
130 * Can be shoehorned to process template code via processSurroundAndInclude
131 * Re-cover how views are located/dispatched
132 * Path-based (/my/view)
133 * addDispatchBefore/After
134 * What are the use cases for snippets vs. views?
135
136 5. Intro to the Mapper package
560764e @tjweir Small additions, fleshing out topics.
authored
137 ... This may be Mapper, or it may be Record
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
138
139 6. AJAX and COMET
560764e @tjweir Small additions, fleshing out topics.
authored
140 - The Spreadsheet example is good, but potentially too complex for an illustrative example
141 - The Clock is nice and nice, so maybe the Clock and the simple Chat service
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
142
143 7. Deployment
560764e @tjweir Small additions, fleshing out topics.
authored
144 - Ask the list what they are deploying with
145 - Jetty, resin, tomcat, whatever
146
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
147
148 ====== Advanced Topics ======
149
150 8. Detailed request/response handling info
560764e @tjweir Small additions, fleshing out topics.
authored
151 - Track a request lifecycle
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
152
153 9. URL Rewriting
154 * Why and how?
155 * Example: user-friendly URLs
156
157 10. JSON handling
560764e @tjweir Small additions, fleshing out topics.
authored
158 * this is getting used more often so this is important
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
159
160 11. JsCommands
161 * Integrated javascript handling without hard-coding it in templates
162 * jQuery intro
163 * Utility library that makes IE6 less ugly ;)
164 * Powerful support for dynamic attributing of elements
165 * Based on CSS selectors
560764e @tjweir Small additions, fleshing out topics.
authored
166 * Talk about Marius JS abstraction
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
167
168 12. AJAX and COMET in depth
560764e @tjweir Small additions, fleshing out topics.
authored
169 - this is probably the place for the Spreadsheet example
170 - talk about design "patterns" ex. the proper TagCloud example
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
171
172 13. JPA Integration
560764e @tjweir Small additions, fleshing out topics.
authored
173 - [I know nothing about this -Tyler]
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
174
175 14. Using Scala Actors
560764e @tjweir Small additions, fleshing out topics.
authored
176 - this is a broad topic, ask the committor list for opinions
177
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
178
179 ====== Advanced Examples ======
180
181 15. OpenID Integration
182
183 16. Lucene/Compass Integration
184
185 17. Tagging support
186
187 ====== Appendices ======
188
189 A. Lift message handling
560764e @tjweir Small additions, fleshing out topics.
authored
190 - What happens now
191 - How to Fade them web2.0 stylee!
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
192
193 B. Helpers methods, in particular Can/Empty/Full
560764e @tjweir Small additions, fleshing out topics.
authored
194 - Can is super important, as it's everywhere
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
195
196 C. I18N and L10N
197 * S.?(String)
198 * lift:loc tag
560764e @tjweir Small additions, fleshing out topics.
authored
199 * Proper placement of language resources
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
200
201 D. Logging
202 * Configuring built-in log4j
203 * Using slf4j instead
560764e @tjweir Small additions, fleshing out topics.
authored
204
79972f3 Major expansion started on the ToC/Outline. Lots more work to do but I
Derek Chen-Becker authored
205
206 E. Mailer
207 * Configuring the mailer lib
208 * Sending email
9681159 @tjweir Lets seed
authored
209
Something went wrong with that request. Please try again.