Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
How working on Riot.js has changed me forever
Search
Gianluca Guarini
September 02, 2016
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How working on Riot.js has changed me forever
Frontend Conference Zürich 2016
Gianluca Guarini
September 02, 2016
Other Decks in Programming
See All in Programming
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
650
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
510
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
760
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
Verilogで学ぶCPU自作入門
uyuki234
8
4.2k
Next.js: The final boss of Web Performance
guaca
0
280
Domain-Driven Transformation
hschwentner
2
2.3k
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
280
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
190
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.6k
ChromeでローカルLLM
ryu1013
0
140
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Code Reviewing Like a Champion
maltzj
529
40k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Between Models and Reality
mayunak
4
500
How to train your dragon (web standard)
notwaldorf
96
6.9k
A better future with KSS
kneath
240
18k
Designing for Performance
lara
612
70k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Transcript
Riot.js How working on Riot.js has changed me forever
Gianluca Guarini @gianlucaguarini Frontend Conference 2016
2 var categoryProperties = _.omit(this.activeCategory.attributes, "types"); var productsArray = this.activeCategory.get("types");
var rowModelSelected = App.Views.FurnituresView.RowModelSelectedl var currentSection = App.Views.MainView.currentStatus; var newProductsArray = []; this.idProductsToAdd = []; this.$subMenu.find("li.product input").each(function () { var $input = $(this); var productId = $input.closest("li input").attr("id"); if ($input.is(":checked")) { var productToAdd; var isProductAlreadyThere = rowModelSelected.containsProduct(productId, currentSection); self.idProductsToAdd.push(productId); if (!isProductAlreadyThere) { productToAdd = _.clone(self.collections[currentSection].getProductById(productId)); } else { productToAdd = isProductAlreadyThere; } newProductsArray = _.union(newProductsArray, self.addProductsPack(productToAdd)); } }); My code yesterday
3 My code today <timer> <p>Seconds Elapsed: { time }</p>
<script> this.time = opts.start || 0 tick() { this.update({ time: ++this.time }) } var timer = setInterval(this.tick, 1000) this.on('unmount', function() { clearInterval(timer) }) </script> </timer>
4 What’s the problem?
5 It occurs when the amount of input to a
system exceeds its processing capacity. Information overload
6 Some everyday examples
7 {{diagnostic}} <div class="form-group"> <label for="name">Name</label> <input type="text" class="form-control" id="name"
required [(ngModel)]="model.name" name="name"> </div> <div class="form-group"> <label for="alterEgo">Alter Ego</label> <input type="text" class="form-control" id="alterEgo" [(ngModel)]="model.alterEgo" name="alterEgo"> </div> <div class="form-group"> <label for="power">Hero Power</label> <select class="form-control" id="power" required [(ngModel)]="model.power" name="power"> <option *ngFor="let p of powers" [value]="p">{{p}}</option> </select> </div>
8 todo.view = function() { return [ m("input", { onchange:
m.withAttr("value", todo.vm.description), value: todo.vm.description() }), m("button", {onclick: todo.vm.add}, "Add"), m("table", [ todo.vm.list.map(function(task, index) { return m("tr", [ m("td", [ m("input[type=checkbox]", { onclick: m.withAttr("checked", task.done), checked: task.done() }) ]), m("td", { style: { textDecoration: task.done() ? "line-through" : "none"} }, task.description()), ]) }) ]) ]; };
9 var Profile = React.createClass({ render: function () { return
( <InlineCss stylesheet={` & .card { cursor: pointer; margin: 15px; padding: 15px; text-align: center; height: 200px; } & img { width: 130px; height: 130px; } & p { margin: 10px; } `}> <div className="card"> <img src="mao.jpg" /> <p>Mao</p> </div> </InlineCss> ); } }); <div id="InlineCss-1"> <div class="card"> <img src="mao.jpg"> <p>Mao</p> </div> <style> #InlineCss-1 .card { cursor: pointer; margin: 15px; padding: 15px; text-align: center; height: 200px; } #InlineCss-1 img { width: 130px; height: 130px; } #InlineCss-1 p { margin: 10px; } </style> </div> WTF
10 before the project Backenders reactions
11 Backenders reactions after the project
12 What’s the solution?
13 Use what you know best and learn the foundation
of the technology you are currently using
14 User interface micro-library ( 9kb )
15 Simplicity is everything
16 …yes cool but How?
17 New codestyle • less code • shorter variables names
• less API methods • no semicolons • elegant and beauty source code
18 New ideas & approaches • thinking in components •
automating everything • building by myself for myself • experimenting with other programming languages
19 Always share your knowledge doing Open Source
20 Conf Greeting: bit.ly/2bxU7di Other cool examples: bit.ly/2bxTErJ It’s demo
time
21 Think with your mind code with your heart
22 @gianlucaguarini github.com/GianlucaGuarini dreipol.ch riotjs.com Thanks !