Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lift evolved: New in 2.4 and the road ahead
Search
Indrajit Raychaudhuri
April 18, 2012
Technology
1
76
Lift evolved: New in 2.4 and the road ahead
Lift presentation at Scala Days 2012 (18/04/2012 @ London)
Indrajit Raychaudhuri
April 18, 2012
Tweet
Share
More Decks by Indrajit Raychaudhuri
See All by Indrajit Raychaudhuri
Lift evolved: New in 2.4 and the road ahead
indrajitr
1
220
Lift Introduction
indrajitr
1
140
Simple Build Tool Introduction
indrajitr
3
190
Other Decks in Technology
See All in Technology
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
220
AIとともに進化するエンジニアリング / Engineering-Evolving-with-AI_final.pdf
lycorptech_jp
PRO
0
110
250627 関西Ruby会議08 前夜祭 RejectKaigi「DJ on Ruby Ver.0.1」
msykd
PRO
2
310
Amazon ECS & AWS Fargate 運用アーキテクチャ2025 / Amazon ECS and AWS Fargate Ops Architecture 2025
iselegant
17
5.6k
生成AIで小説を書くためにプロンプトの制約や原則について学ぶ / prompt-engineering-for-ai-fiction
nwiizo
4
2.1k
Postman AI エージェントビルダー最新情報
nagix
0
110
PostgreSQL 18 cancel request key長の変更とRailsへの関連
yahonda
0
120
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
5
510
急成長を支える基盤作り〜地道な改善からコツコツと〜 #cre_meetup
stefafafan
0
120
Liquid Glass革新とSwiftUI/UIKit進化
fumiyasac0921
0
230
How Community Opened Global Doors
hiroramos4
PRO
1
120
AWS Summit Japan 2025 Community Stage - App workflow automation by AWS Step Functions
matsuihidetoshi
1
280
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
KATA
mclloyd
29
14k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
330
24k
GitHub's CSS Performance
jonrohan
1031
460k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Practical Orchestrator
shlominoach
188
11k
Code Reviewing Like a Champion
maltzj
524
40k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Faster Mobile Websites
deanohume
307
31k
GraphQLとの向き合い方2022年版
quramy
48
14k
Adopting Sorbet at Scale
ufuk
77
9.4k
Transcript
Indrajit Raychaudhuri @indrajitr
Full stack Scala Web application Framework
Full stack Scala Web application Framework Secure Scalable Designer friendly
Interactive
Lift: The Scala Companion
Retaining NodeSeq helps in secure type-safe transformation Page generation is
functional and type-safe Simple transformation as NodeSeq => NodeSeq And not, say, just () => String Lift: The Scala Companion
But dive deeper and deal with HTTP and HTML Higher
Level Abstraction Page compositions UI behaviors Helpers Lift: The Scala Companion
Simple ≠ Easy after all, ‘tis about correctness Steeper Learning
Curve (compared to MVC based frameworks) But you cruise once you hit the plateau Lift: The Scala Companion
Lift: The Core Tenets
Grab the readily available ones, or build your own Lift:
The Core Tenets Lift's Abstraction are generalized With sane readily usable defaults
Lift: The Core Tenets Lift's Responses are XSS Safe ".name
*" #> "<script>alert('hi');</script>"
Lift: The Core Tenets Elegant Comet support Requests multiplexed through
single request Requests are versioned Auto-detects containers for best fit
Lift: The Core Tenets Secure and maintainable REST support object
MyRestHelper extends RestHelper { serve { case "api" :: "user" :: AsLong(id) :: _ XmlGet _ => <b>ID:{id}</b> case "api" :: "user" :: AsLong(id) :: _ JsonGet _ => JInt(id) case "api" :: "user" :: AsLong(id) :: _ XmlGet _ => RestContinuation.async { reply => for { i <- lengthyCompute(id) } reply(<x>{i}</x>) } }
Lift: The Core Tenets Secure and maintainable REST support //
Stateful LiftRules.dispatch.append(MyRestHandler) // Stateless (choose one!) LiftRules.statelessDispatch.append(MyRestHandler)
Lift: The Core Tenets Designer friendly Templates <!DOCTYPE html> <html>
<head><title>Home</title></head> <body> <div class="lift:surround?with=default;at=content"> <h2>Welcome to Awesome website!</h2> <div class="lift:helloWorld.howdy"> Current time: <span id="time">Time goes here</span> </div> </div> </body> </html>
Lift: The Core Tenets Designer friendly Templates class HelloWorld {
def howdy = "#time" #> Helpers.formattedTimeNow }
Lift: Evolved in 2.4
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<span><span id="event"/></span> "#event" #> "Scaladays 2012" <span>Scala Days 2012</span>
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<span><span id="event"/></span> "#event *" #> "Scala Days 2012" <span><span id="event">Scala Days 2012</span></span>
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<a href="#" id="event">Scala Days 2012</a> "#event [href]" #> "http://days2012.scala-lang.org" <a href="http://days2012.scala-lang.org" id="event">Scala Days 2012</a>
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<span class="cool" id="event">Scala Days 2012</span> "#event [class+]" #> "fancy" <span class="cool fancy" id="event">Scala Days 2012</span>
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<span><span id="event"/></span> "#event" #> List("Scala ", "Days ", "2012") <span>Scala Days 2012</span>
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<table><tr class="r"><td class="c">???</td></tr></table> ".r *" #> (".c *" #> "Scala") <table><tr class="r"><td class="c">Scala</td></tr></table>
Lift: Evolved in 2.4 Exclusive XHTML to HTML5 preferred
Lift: Evolved in 2.4 Stateless or Stateful – you decide
trait StatelessBehavior { def statelessDispatch: PartialFunction[String, NodeSeq => NodeSeq] }
Lift: Evolved in 2.4 Better Mock support, ability to test
better
Lift: Evolved in 2.4 Utilities and Helper updates JSON Serializer
improvements Mailer improvements BsonDSL additions to JsonDSL Build system on SBT
Lift: The Upcoming
Lift: The Upcoming Refinements Netty support giter8, lifty templates Explore
Scala 2.10 support Likely have to drop 2.8 support
Lift: The Upcoming Moar Refinements Modules’ owned and supported by
community Comply with upstream libraries Long deprecation for bolted-in JS libraries H5BP, Bootstrap support
Lift: Resource Code: https://github.com/lift Wiki: http://assembla.com/spaces/liftweb/wiki Cookbook: http://cookbook.liftweb.net Books: http://simply.liftweb.net
http://www.manning.com/perrett
Thank you!