SlideShare une entreprise Scribd logo
1  sur  72
Télécharger pour lire hors ligne
Rapid Templating:
“DESIGNING IN THE BROWSER”
with Sass, Compass, and Serve
  Nathan Smith — Principal UI Architect, projekt202
     HTML5.tx — Austin, TX — February 2, 2013
I do mobile/web
UX + JavaScript at



 (me, on Twitter: @nathansmith)


          http://projekt202.com
Relax, don’t stress out
taking notes. You can
get the slides here…

http://j.mp/get-serve
It used to be, that you could make
a picture of a website, chop it up,
put it back together with code,
and with a little luck, maybe even
turn it into a real website!

(Confession: I miss those days.)
Which isn’t to say we weren’t using CSS…


  html body * div#id table
  tbody tr td a.special span {
    /*
      Dear next developer:
      Please forgive me!
    */
    color: red !important;
  }
…but at least we had a reliable design workflow.
Then this happened…
Which of course,
now looks like this…
And, can dynamically
 change into this…
The term “Responsive Web Design”
was coined by Ethan Marcotte, in an
an article published by A List Apart.

Loosely defined, it means adapting
to various screen sizes, using a fluid
grid and @media queries in CSS.
Ethan also wrote a book…




  http://abookapart.com/products/responsive-web-design
Upon hearing about this
new design technique, I…
1. Felt shock and denial: “Whoa, no way!”
2. Felt guilty for making a fixed-width grid.
3. Bargained: “Maybe it’ll just go away?”
4. Felt depressed, over how little I knew.
5. Started looking up: “Maybe I can learn?”
6. Reconstructed my way of thinking.
7. Felt acceptance and hope: “I can do this!”

         http://www.recover-from-grief.com/7-stages-of-grief.html
Yes, those are (very loosely
interpreted) the various
stages of grief. Essentially,
responsive design has both
obliterated, and breathed
new life into, our field.
Like accessibility, RWD works best with advanced planning…




#FAIL
Designers “throwing it over
the wall” to developers is no
longer an ideal workflow.

Nowadays, all of the cool kids
are working collaboratively.

       http://flickr.com/photos/camknows/8374910613
We’ve had to rethink our vantage point.
Venerable tools like Photoshop
still have their place, but other
(equally important) front-end
tools have arisen as well…
Neatly organized *.sass                                      CSS served to browser




 http://thingsorganizedneatly.tumblr.com/post/9494864300/submission-the-compulsively-tidy-ursus-wehrli
CSS                    Sass                             Compass
      http://sonspring.com/journal/sass-for-designers
Compass makes vendor prefixes easy...
Compass brings sanity to gradients...
Text editors and IDE’s that support Sass/SCSS syntax

         Aptana                              BBEdit                             Chocolat                              Coda
       http://aptana.org            http://barebones.com/bbedit             http://chocolatapp.com              http://panic.com/coda




     E Text Editor                          Eclipse                               Emacs                            Espresso
    http://e-texteditor.com               http://eclipse.org             http://gnu.org/software/emacs      http://macrabbit.com/espresso




           GEdit                           Komodo                              Netbeans                           PhpStorm
http://projects.gnome.org/gedit   http://activestate.com/komodo-ide           http://netbeans.org           http://jetbrains.com/phpstorm




       PyCharm                            RubyMine                           SubEthaEdit                        Sublime Text




                                                                                                                      ^
 http://jetbrains.com/pycharm         http://jetbrains.com/ruby       http://codingmonkeys.de/subethaedit    http://sublimetext.com/dev




       TextMate                                Vim                           Visual Studio
                                                                                                                         nd
   http://macromates.com                    http://vim.org             http://microsoft.com/visualstudio
                                                                                                             We  recomme




                                                  http://sass-lang.com/editors.html
For the past two years or so, my preferred
approach to rapid prototyping templates
(with Sass & Compass) has been Serve…

http://get-serve.com
Continuing the analogy, Serve is like…




        http://hdwallpapers.in/the_avengers-wallpapers.html
Since I can’t show you NDA’d client stuff
 I’ve made using Serve, we are going to
   look at one of my personal projects.

   http://unsemantic.com
I think of wireframes and prototypes like this…




           http://blogs.pennmanor.net/hstsa/nasa/nasa-space-project
Ultimately, what we’re aiming to launch is
not a PSD file or PDF wireframe. Nor is it
the flat HTML, CSS, and JavaScript that
comprise a dynamic prototype.

Everything except the final product exists
just to facilitate the launch. It’s chaff that
burns up, once the real thing takes flight.

To that end, Serve is like the V of Ruby on
Rails’ MVC. It is similar to the “real thing.”
This is the index.html.erb home page “view” file.
_layout.html.erb points to application.html.erb




               This file has one code snippet…

               <%= render :template =>
               "/layouts/application" %>
<%= yield %> outputs the view file (index, etc.)
This file also renders the <head> partial.
Which then renders the stylesheets partial.
That has all sorts of interesting goodies.
Next up, let’s look at the
Sass variables partial…
Which is imported by
 the base grid file…

    Okay, cool.
Which is imported by
the responsive partial…

Eh? Another @import?
Which is finally imported
 by application.sass…

 Seriously, what the?
Bear with me. There’s a point
 to all of this. We’ll get to it.

  Dude, there’d better be.
So, after all of that, we end
up with a tightly compiled,
single application.css file.

Eh? What about all the
@import statements? HTTP
requests, fool. C’mon man!
That’s the beauty of Sass. If you
@import a *.sass (or *.scss)
file, it becomes part of the
single, compiled *.css file.

Rage subsiding? Okay, good.
Still, why all the @import daisy
chaining? Glad you asked! :)
← The astute observers
  amongst you perhaps
  have noticed what looks
  like a big compost heap
  of compiled CSS files.

  Oh, you saw that? Well…
Most of those files aren’t used directly, but…
…exist to show grid CSS, apart from the site.
Those are also the flat CSS files on GitHub.
This is why grid code is in separate partials…
Hat tip to Nicolas Gallagher for the idea!
Yep. I can identify with that! :)
Maybe I (don’t) know what
I’m doing. Here’s an idea…
Simple view helper function, named “html”
Variable set in… /views/partials/_vars.html.erb
Then, we do/don't end links with *.html
Further evidence that I (probably
  don't) know what I'm doing…
A voodoo-magic Z shell (or Bash) recipe…
I hate repetitive typing, so I’ve aliased
the export command — which also
recursively creates a *.zip file — to…

unsemantic_site_html
Being lazy, FTW… Computer, do my bidding!
That builds all the flat files, and a *.zip of it all…
DEMO TIME! :)
Also, don’t forget you can
download the slides here…

  http://j.mp/get-serve

Contenu connexe

Tendances

Tendances (11)

Tooling per il tema in Drupal 8
Tooling per il tema in Drupal 8Tooling per il tema in Drupal 8
Tooling per il tema in Drupal 8
 
Javascript native OOP - 3 layers
Javascript native OOP - 3 layers Javascript native OOP - 3 layers
Javascript native OOP - 3 layers
 
My best grunt
My best gruntMy best grunt
My best grunt
 
Windows Azure loves OSS
Windows Azure loves OSSWindows Azure loves OSS
Windows Azure loves OSS
 
Avoiding common Accessibility mistakes
Avoiding common Accessibility mistakesAvoiding common Accessibility mistakes
Avoiding common Accessibility mistakes
 
ISTE 2016 - Custom 3D for AR
ISTE 2016 - Custom 3D for ARISTE 2016 - Custom 3D for AR
ISTE 2016 - Custom 3D for AR
 
Real solutions, no tricks
Real solutions, no tricksReal solutions, no tricks
Real solutions, no tricks
 
Javascript fullstasck
Javascript fullstasckJavascript fullstasck
Javascript fullstasck
 
The backend-of-frontend Drupaljam 2014
The backend-of-frontend Drupaljam 2014The backend-of-frontend Drupaljam 2014
The backend-of-frontend Drupaljam 2014
 
Practical guide for front-end development for django devs
Practical guide for front-end development for django devsPractical guide for front-end development for django devs
Practical guide for front-end development for django devs
 
WebGL: The Next Generation
WebGL:  The Next GenerationWebGL:  The Next Generation
WebGL: The Next Generation
 

En vedette

JdbcTemplate aus Spring
JdbcTemplate aus SpringJdbcTemplate aus Spring
JdbcTemplate aus Spring
tutego
 
Children’S Rights Practicum
Children’S Rights PracticumChildren’S Rights Practicum
Children’S Rights Practicum
trammai
 
P161_Vietnam_Economics_Quarter_1_2008
P161_Vietnam_Economics_Quarter_1_2008P161_Vietnam_Economics_Quarter_1_2008
P161_Vietnam_Economics_Quarter_1_2008
internationalvr
 
Self Organized Air Tasking
Self Organized Air TaskingSelf Organized Air Tasking
Self Organized Air Tasking
John Bordeaux
 
Curriculumlibrary Present
Curriculumlibrary PresentCurriculumlibrary Present
Curriculumlibrary Present
Steve Kashdan
 
Camtasia relay presentation final
Camtasia relay presentation finalCamtasia relay presentation final
Camtasia relay presentation final
Steve Kashdan
 

En vedette (20)

JdbcTemplate aus Spring
JdbcTemplate aus SpringJdbcTemplate aus Spring
JdbcTemplate aus Spring
 
DSVC Design Talk
DSVC Design TalkDSVC Design Talk
DSVC Design Talk
 
The Cave
The CaveThe Cave
The Cave
 
Children’S Rights Practicum
Children’S Rights PracticumChildren’S Rights Practicum
Children’S Rights Practicum
 
Gospelcon 2006
Gospelcon 2006Gospelcon 2006
Gospelcon 2006
 
P161_Vietnam_Economics_Quarter_1_2008
P161_Vietnam_Economics_Quarter_1_2008P161_Vietnam_Economics_Quarter_1_2008
P161_Vietnam_Economics_Quarter_1_2008
 
What do you need to run
What do you need to runWhat do you need to run
What do you need to run
 
My Open Archive
My Open ArchiveMy Open Archive
My Open Archive
 
Omega USPs
Omega USPsOmega USPs
Omega USPs
 
Beekman5 std ppt_01
Beekman5 std ppt_01Beekman5 std ppt_01
Beekman5 std ppt_01
 
Blocks Extensible Exchange Protocol
Blocks Extensible Exchange  ProtocolBlocks Extensible Exchange  Protocol
Blocks Extensible Exchange Protocol
 
Jenn 6 C 2
Jenn 6 C 2Jenn 6 C 2
Jenn 6 C 2
 
Self Organized Air Tasking
Self Organized Air TaskingSelf Organized Air Tasking
Self Organized Air Tasking
 
Beekman5 std ppt_04
Beekman5 std ppt_04Beekman5 std ppt_04
Beekman5 std ppt_04
 
Beekman5 std ppt_14
Beekman5 std ppt_14Beekman5 std ppt_14
Beekman5 std ppt_14
 
Curriculumlibrary Present
Curriculumlibrary PresentCurriculumlibrary Present
Curriculumlibrary Present
 
Nectec Digital Archive Concept
Nectec Digital Archive ConceptNectec Digital Archive Concept
Nectec Digital Archive Concept
 
Online Video Format Experiment
Online Video Format ExperimentOnline Video Format Experiment
Online Video Format Experiment
 
Camtasia relay presentation final
Camtasia relay presentation finalCamtasia relay presentation final
Camtasia relay presentation final
 
Tle I And Ii Know More About Self
Tle I And Ii   Know More About SelfTle I And Ii   Know More About Self
Tle I And Ii Know More About Self
 

Similaire à Rapid Templating with Serve

Integrating Browserify with Sprockets
Integrating Browserify with SprocketsIntegrating Browserify with Sprockets
Integrating Browserify with Sprockets
Spike Brehm
 
960 grid psd
960 grid psd960 grid psd
960 grid psd
Raju Nag
 

Similaire à Rapid Templating with Serve (20)

Death of a Themer
Death of a ThemerDeath of a Themer
Death of a Themer
 
CCSP 2012F 早點下班的工具
CCSP 2012F 早點下班的工具 CCSP 2012F 早點下班的工具
CCSP 2012F 早點下班的工具
 
3d web
3d web3d web
3d web
 
CSS Architecture - JSIL.pdf
CSS Architecture - JSIL.pdfCSS Architecture - JSIL.pdf
CSS Architecture - JSIL.pdf
 
Modern Front-End Development
Modern Front-End DevelopmentModern Front-End Development
Modern Front-End Development
 
Shifting Gears
Shifting GearsShifting Gears
Shifting Gears
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
 
RESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web DesignRESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web Design
 
Testable client side_mvc_apps_in_javascript
Testable client side_mvc_apps_in_javascriptTestable client side_mvc_apps_in_javascript
Testable client side_mvc_apps_in_javascript
 
Fowa Miami 09 Cloud Computing Workshop
Fowa Miami 09 Cloud Computing WorkshopFowa Miami 09 Cloud Computing Workshop
Fowa Miami 09 Cloud Computing Workshop
 
Using Ember to Make a Bazillion Dollars
Using Ember to Make a Bazillion DollarsUsing Ember to Make a Bazillion Dollars
Using Ember to Make a Bazillion Dollars
 
HTML5 for Web Designers
HTML5 for Web DesignersHTML5 for Web Designers
HTML5 for Web Designers
 
Integrating Browserify with Sprockets
Integrating Browserify with SprocketsIntegrating Browserify with Sprockets
Integrating Browserify with Sprockets
 
Lightning fast sass
Lightning fast sassLightning fast sass
Lightning fast sass
 
How i made the responsive mobile version of
How i made the responsive mobile version ofHow i made the responsive mobile version of
How i made the responsive mobile version of
 
Mobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web DesignMobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web Design
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
960 grid psd
960 grid psd960 grid psd
960 grid psd
 
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
 
[H3 2012] 우리가 모르는 Node.js로 할 수 있는 몇가지
[H3 2012] 우리가 모르는 Node.js로 할 수 있는 몇가지[H3 2012] 우리가 모르는 Node.js로 할 수 있는 몇가지
[H3 2012] 우리가 모르는 Node.js로 할 수 있는 몇가지
 

Plus de Nathan Smith

Plus de Nathan Smith (20)

Getting Started with React
Getting Started with ReactGetting Started with React
Getting Started with React
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
 
Proactive Responsive Design
Proactive Responsive DesignProactive Responsive Design
Proactive Responsive Design
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile Apps
 
Red Dirt JS
Red Dirt JSRed Dirt JS
Red Dirt JS
 
Refresh OKC
Refresh OKCRefresh OKC
Refresh OKC
 
DrupalCon jQuery
DrupalCon jQueryDrupalCon jQuery
DrupalCon jQuery
 
Think Vitamin CSS
Think Vitamin CSSThink Vitamin CSS
Think Vitamin CSS
 
Adobe MAX 2008: HTML/CSS + Fireworks
Adobe MAX 2008: HTML/CSS + FireworksAdobe MAX 2008: HTML/CSS + Fireworks
Adobe MAX 2008: HTML/CSS + Fireworks
 
Meet Clumsy
Meet ClumsyMeet Clumsy
Meet Clumsy
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
 
Accelerated Grid Theming
Accelerated Grid ThemingAccelerated Grid Theming
Accelerated Grid Theming
 
Urban Leadership Slides
Urban Leadership SlidesUrban Leadership Slides
Urban Leadership Slides
 
Themes from Ascent of a Leader
Themes from Ascent of a LeaderThemes from Ascent of a Leader
Themes from Ascent of a Leader
 
7 Storey Mountain
7 Storey Mountain7 Storey Mountain
7 Storey Mountain
 
Marketing 450 Guest Lecture
Marketing 450 Guest LectureMarketing 450 Guest Lecture
Marketing 450 Guest Lecture
 
Fundamental Design Principles
Fundamental Design PrinciplesFundamental Design Principles
Fundamental Design Principles
 
Striking a Balance: Middle Ground in Front-End Development
Striking a Balance: Middle Ground in Front-End DevelopmentStriking a Balance: Middle Ground in Front-End Development
Striking a Balance: Middle Ground in Front-End Development
 
Echo Conference 2008
Echo Conference 2008Echo Conference 2008
Echo Conference 2008
 
Bible Tech 2008
Bible Tech 2008Bible Tech 2008
Bible Tech 2008
 

Dernier

怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
eeanqy
 
Simple Conference Style Presentation by Slidesgo.pptx
Simple Conference Style Presentation by Slidesgo.pptxSimple Conference Style Presentation by Slidesgo.pptx
Simple Conference Style Presentation by Slidesgo.pptx
balqisyamutia
 
一比一原版(ANU毕业证书)澳大利亚国立大学毕业证原件一模一样
一比一原版(ANU毕业证书)澳大利亚国立大学毕业证原件一模一样一比一原版(ANU毕业证书)澳大利亚国立大学毕业证原件一模一样
一比一原版(ANU毕业证书)澳大利亚国立大学毕业证原件一模一样
yhavx
 
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
wpkuukw
 
Anupama Kundoo Cost Effective detailed ppt with plans and elevations with det...
Anupama Kundoo Cost Effective detailed ppt with plans and elevations with det...Anupama Kundoo Cost Effective detailed ppt with plans and elevations with det...
Anupama Kundoo Cost Effective detailed ppt with plans and elevations with det...
sriharipichandi
 

Dernier (20)

Sweety Planet Packaging Design Process Book.pptx
Sweety Planet Packaging Design Process Book.pptxSweety Planet Packaging Design Process Book.pptx
Sweety Planet Packaging Design Process Book.pptx
 
How to Turn a Picture Into a Line Drawing in Photoshop
How to Turn a Picture Into a Line Drawing in PhotoshopHow to Turn a Picture Into a Line Drawing in Photoshop
How to Turn a Picture Into a Line Drawing in Photoshop
 
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
 
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
 
Abortion pills in Riyadh +966572737505 <> buy cytotec <> unwanted kit Saudi A...
Abortion pills in Riyadh +966572737505 <> buy cytotec <> unwanted kit Saudi A...Abortion pills in Riyadh +966572737505 <> buy cytotec <> unwanted kit Saudi A...
Abortion pills in Riyadh +966572737505 <> buy cytotec <> unwanted kit Saudi A...
 
BLOCK CHAIN PROJECT block chain project
BLOCK CHAIN  PROJECT block chain projectBLOCK CHAIN  PROJECT block chain project
BLOCK CHAIN PROJECT block chain project
 
Simple Conference Style Presentation by Slidesgo.pptx
Simple Conference Style Presentation by Slidesgo.pptxSimple Conference Style Presentation by Slidesgo.pptx
Simple Conference Style Presentation by Slidesgo.pptx
 
Just Call Vip call girls Fatehpur Escorts ☎️8617370543 Two shot with one girl...
Just Call Vip call girls Fatehpur Escorts ☎️8617370543 Two shot with one girl...Just Call Vip call girls Fatehpur Escorts ☎️8617370543 Two shot with one girl...
Just Call Vip call girls Fatehpur Escorts ☎️8617370543 Two shot with one girl...
 
LANDSCAPE ARCHITECTURE PORTFOLIO - MAREK MITACEK
LANDSCAPE ARCHITECTURE PORTFOLIO - MAREK MITACEKLANDSCAPE ARCHITECTURE PORTFOLIO - MAREK MITACEK
LANDSCAPE ARCHITECTURE PORTFOLIO - MAREK MITACEK
 
NO1 Top Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakist...
NO1 Top Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakist...NO1 Top Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakist...
NO1 Top Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakist...
 
Independent Escorts Goregaon WhatsApp +91-9930687706, Best Service
Independent Escorts Goregaon WhatsApp +91-9930687706, Best ServiceIndependent Escorts Goregaon WhatsApp +91-9930687706, Best Service
Independent Escorts Goregaon WhatsApp +91-9930687706, Best Service
 
Eye-Catching Web Design Crafting User Interfaces .docx
Eye-Catching Web Design Crafting User Interfaces .docxEye-Catching Web Design Crafting User Interfaces .docx
Eye-Catching Web Design Crafting User Interfaces .docx
 
Jordan_Amanda_DMBS202404_PB1_2024-04.pdf
Jordan_Amanda_DMBS202404_PB1_2024-04.pdfJordan_Amanda_DMBS202404_PB1_2024-04.pdf
Jordan_Amanda_DMBS202404_PB1_2024-04.pdf
 
Furniture & Joinery Details_Designs.pptx
Furniture & Joinery Details_Designs.pptxFurniture & Joinery Details_Designs.pptx
Furniture & Joinery Details_Designs.pptx
 
Raebareli Girl Whatsapp Number 📞 8617370543 | Girls Number for Friendship
Raebareli Girl Whatsapp Number 📞 8617370543 | Girls Number for FriendshipRaebareli Girl Whatsapp Number 📞 8617370543 | Girls Number for Friendship
Raebareli Girl Whatsapp Number 📞 8617370543 | Girls Number for Friendship
 
一比一原版(ANU毕业证书)澳大利亚国立大学毕业证原件一模一样
一比一原版(ANU毕业证书)澳大利亚国立大学毕业证原件一模一样一比一原版(ANU毕业证书)澳大利亚国立大学毕业证原件一模一样
一比一原版(ANU毕业证书)澳大利亚国立大学毕业证原件一模一样
 
Just Call Vip call girls Kasganj Escorts ☎️8617370543 Two shot with one girl ...
Just Call Vip call girls Kasganj Escorts ☎️8617370543 Two shot with one girl ...Just Call Vip call girls Kasganj Escorts ☎️8617370543 Two shot with one girl ...
Just Call Vip call girls Kasganj Escorts ☎️8617370543 Two shot with one girl ...
 
How to Create a Productive Workspace Trends and Tips.pdf
How to Create a Productive Workspace Trends and Tips.pdfHow to Create a Productive Workspace Trends and Tips.pdf
How to Create a Productive Workspace Trends and Tips.pdf
 
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
一比一定(购)卡尔顿大学毕业证(CU毕业证)成绩单学位证
 
Anupama Kundoo Cost Effective detailed ppt with plans and elevations with det...
Anupama Kundoo Cost Effective detailed ppt with plans and elevations with det...Anupama Kundoo Cost Effective detailed ppt with plans and elevations with det...
Anupama Kundoo Cost Effective detailed ppt with plans and elevations with det...
 

Rapid Templating with Serve

  • 1. Rapid Templating: “DESIGNING IN THE BROWSER” with Sass, Compass, and Serve Nathan Smith — Principal UI Architect, projekt202 HTML5.tx — Austin, TX — February 2, 2013
  • 2. I do mobile/web UX + JavaScript at (me, on Twitter: @nathansmith) http://projekt202.com
  • 3. Relax, don’t stress out taking notes. You can get the slides here… http://j.mp/get-serve
  • 4. It used to be, that you could make a picture of a website, chop it up, put it back together with code, and with a little luck, maybe even turn it into a real website! (Confession: I miss those days.)
  • 5. Which isn’t to say we weren’t using CSS… html body * div#id table tbody tr td a.special span { /* Dear next developer: Please forgive me! */ color: red !important; }
  • 6. …but at least we had a reliable design workflow.
  • 8.
  • 9. Which of course, now looks like this…
  • 10.
  • 11. And, can dynamically change into this…
  • 12.
  • 13. The term “Responsive Web Design” was coined by Ethan Marcotte, in an an article published by A List Apart. Loosely defined, it means adapting to various screen sizes, using a fluid grid and @media queries in CSS.
  • 14. Ethan also wrote a book… http://abookapart.com/products/responsive-web-design
  • 15. Upon hearing about this new design technique, I… 1. Felt shock and denial: “Whoa, no way!” 2. Felt guilty for making a fixed-width grid. 3. Bargained: “Maybe it’ll just go away?” 4. Felt depressed, over how little I knew. 5. Started looking up: “Maybe I can learn?” 6. Reconstructed my way of thinking. 7. Felt acceptance and hope: “I can do this!” http://www.recover-from-grief.com/7-stages-of-grief.html
  • 16. Yes, those are (very loosely interpreted) the various stages of grief. Essentially, responsive design has both obliterated, and breathed new life into, our field.
  • 17.
  • 18. Like accessibility, RWD works best with advanced planning… #FAIL
  • 19. Designers “throwing it over the wall” to developers is no longer an ideal workflow. Nowadays, all of the cool kids are working collaboratively. http://flickr.com/photos/camknows/8374910613
  • 20. We’ve had to rethink our vantage point.
  • 21. Venerable tools like Photoshop still have their place, but other (equally important) front-end tools have arisen as well…
  • 22.
  • 23.
  • 24. Neatly organized *.sass CSS served to browser http://thingsorganizedneatly.tumblr.com/post/9494864300/submission-the-compulsively-tidy-ursus-wehrli
  • 25. CSS Sass Compass http://sonspring.com/journal/sass-for-designers
  • 26. Compass makes vendor prefixes easy...
  • 27. Compass brings sanity to gradients...
  • 28. Text editors and IDE’s that support Sass/SCSS syntax Aptana BBEdit Chocolat Coda http://aptana.org http://barebones.com/bbedit http://chocolatapp.com http://panic.com/coda E Text Editor Eclipse Emacs Espresso http://e-texteditor.com http://eclipse.org http://gnu.org/software/emacs http://macrabbit.com/espresso GEdit Komodo Netbeans PhpStorm http://projects.gnome.org/gedit http://activestate.com/komodo-ide http://netbeans.org http://jetbrains.com/phpstorm PyCharm RubyMine SubEthaEdit Sublime Text ^ http://jetbrains.com/pycharm http://jetbrains.com/ruby http://codingmonkeys.de/subethaedit http://sublimetext.com/dev TextMate Vim Visual Studio nd http://macromates.com http://vim.org http://microsoft.com/visualstudio We  recomme http://sass-lang.com/editors.html
  • 29. For the past two years or so, my preferred approach to rapid prototyping templates (with Sass & Compass) has been Serve… http://get-serve.com
  • 30.
  • 31. Continuing the analogy, Serve is like… http://hdwallpapers.in/the_avengers-wallpapers.html
  • 32. Since I can’t show you NDA’d client stuff I’ve made using Serve, we are going to look at one of my personal projects. http://unsemantic.com
  • 33.
  • 34.
  • 35. I think of wireframes and prototypes like this… http://blogs.pennmanor.net/hstsa/nasa/nasa-space-project
  • 36. Ultimately, what we’re aiming to launch is not a PSD file or PDF wireframe. Nor is it the flat HTML, CSS, and JavaScript that comprise a dynamic prototype. Everything except the final product exists just to facilitate the launch. It’s chaff that burns up, once the real thing takes flight. To that end, Serve is like the V of Ruby on Rails’ MVC. It is similar to the “real thing.”
  • 37. This is the index.html.erb home page “view” file.
  • 38. _layout.html.erb points to application.html.erb This file has one code snippet… <%= render :template => "/layouts/application" %>
  • 39. <%= yield %> outputs the view file (index, etc.)
  • 40. This file also renders the <head> partial.
  • 41. Which then renders the stylesheets partial.
  • 42. That has all sorts of interesting goodies.
  • 43. Next up, let’s look at the Sass variables partial…
  • 44.
  • 45. Which is imported by the base grid file… Okay, cool.
  • 46.
  • 47. Which is imported by the responsive partial… Eh? Another @import?
  • 48.
  • 49. Which is finally imported by application.sass… Seriously, what the?
  • 50.
  • 51. Bear with me. There’s a point to all of this. We’ll get to it. Dude, there’d better be.
  • 52.
  • 53. So, after all of that, we end up with a tightly compiled, single application.css file. Eh? What about all the @import statements? HTTP requests, fool. C’mon man!
  • 54.
  • 55. That’s the beauty of Sass. If you @import a *.sass (or *.scss) file, it becomes part of the single, compiled *.css file. Rage subsiding? Okay, good. Still, why all the @import daisy chaining? Glad you asked! :)
  • 56. ← The astute observers amongst you perhaps have noticed what looks like a big compost heap of compiled CSS files. Oh, you saw that? Well…
  • 57. Most of those files aren’t used directly, but…
  • 58. …exist to show grid CSS, apart from the site.
  • 59. Those are also the flat CSS files on GitHub.
  • 60. This is why grid code is in separate partials…
  • 61. Hat tip to Nicolas Gallagher for the idea!
  • 62. Yep. I can identify with that! :)
  • 63. Maybe I (don’t) know what I’m doing. Here’s an idea…
  • 64. Simple view helper function, named “html”
  • 65. Variable set in… /views/partials/_vars.html.erb
  • 66. Then, we do/don't end links with *.html
  • 67. Further evidence that I (probably don't) know what I'm doing…
  • 68. A voodoo-magic Z shell (or Bash) recipe…
  • 69. I hate repetitive typing, so I’ve aliased the export command — which also recursively creates a *.zip file — to… unsemantic_site_html
  • 70. Being lazy, FTW… Computer, do my bidding!
  • 71. That builds all the flat files, and a *.zip of it all…
  • 72. DEMO TIME! :) Also, don’t forget you can download the slides here… http://j.mp/get-serve