SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Websites & 
Frameworks: 
Web at Evernote 
Ryan Burgess 
Lead Front End Engineer, Evernote 
@burgessdryan
How we structure web teams at Evernote 
#ec2014 
• Evernote.com 
• Evernote Market 
• Web Client
Evernote.com 
#ec2014 
• Introducing Evernote 
• Acquisition / sign ups 
• Upgrading accounts 
• Marketing 
• Support
Evernote Web Client 
#ec2014 
• Evernote application in the browser 
• Create and edit notes 
• Upgrading account 
• Update settings
Evernote Market 
#ec2014 
• E-commerce site 
• Showcase our physical products
Websites & Frameworks: Web at Evernote 
#ec2014 
• Overview of web development at Evernote 
• Example projects 
• CSS Pre-processors at Evernote 
• Our Sass build 
• Tools we use for automation 
• Keeping code consistent 
• Future development at Evernote
Overview of web development at Evernote 
#ec2014
Multiple websites 
#ec2014
Responsive web design 
#ec2014
Browser support 
#ec2014
25 languages 
#ec2014
Leveraging the latest and greatest 
#ec2014
Optimization 
#ec2014
#ec2014 
Evernote homepage project
The creative team 
#ec2014 
• Writers 
• Designers 
• Photographers 
• Production designers 
• Translators 
• Developers
Device specific screenshots 
We load device specific images for Mac 
and PC. 
#ec2014
Evernote homepage assets 
#ec2014 
• 1,336 total images 
• 1,082 hero images 
• 50 CSS files
#ec2014 
CSS pre-processors
CSS pre-processors we use at Evernote 
#ec2014
Benefits of CSS pre-processors 
#ec2014 
• Joining of multiple files 
• Ability to define variables 
• Ability to create mixins 
• Mathematical functions
Homepage hero Sass module 
#ec2014
#ec2014 
Evernote Sass build
SMACSS 
#ec2014 
Our Sass structure is based off of the 
SMACSS methodology.
Sass build 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
Our Sass build structure 
• Base 
• Layout 
• Modules 
• Themes
Base 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
• Vendor dependancies (Compass, Foundation) 
• Authored dependancies (Mixins, variables, Extends) 
• Fonts 
• Reset
Layout 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
• Responsive Grid 
• Page specific layouts
Modules 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
Broken up into code blocks 
• Header 
• Footer 
• Navigation 
• Hero image
Example module 
#ec2014
Themes 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
The themes directory contains any specific styles that a page may 
need to change from the generic layout or modules.
Page specific Sass file 
#ec2014
Benefits of our Sass build 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
• Cleaner code 
• More agile development 
• More consistency 
• Modular reusable code 
• Better quality
#ec2014 
Tools that help
JavaScript task managers 
#ec2014
Grunt running in terminal 
#ec2014
Benefits of task managers 
#ec2014 
• Automates tasks while we’re developing 
• Saves time 
• Watch for changes in the code 
• Helps keep files consistent 
• Optimizes our code base 
• Compiles our CSS 
• Minifies CSS and JavaScript
Grunt and Gulp tasks we use 
#ec2014 
• Compile Sass/Less to CSS 
• JShint for JavaScript linting 
• Browserify to compile JavaScript 
• Uglify to minify JavaScript
Browserify 
#ec2014 
Browserify with Grunt and Gulp in our 
build allows us to make our front end 
JavaScript code in modules and share 
them as dependencies and compile 
into one file.
Benefits of Browserify 
#ec2014 
• Allows us to have modular reusable JavaScript 
• Less HTTP calls from the browser 
• Better quality control
JavaScript Browserify modules 
#ec2014
Pootle translation 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /p o o t l e 
Pootle is an online tool that makes the 
process of translating so much simpler.
#ec2014 
Code consistency
Evernote CSS style guide 
An online CSS style guide to help keep 
our CSS more consistent. 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /c s s - s t y l e - g u i d e
Items in our CSS style guide 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /c s s - s t y l e - g u i d e 
• Basic code formatting 
• Property order 
• Commenting 
• Color values
Evernote JavaScript style guide 
An online JavaScript style guide to 
help keep our JavaScript more 
consistent in our builds. 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te / j ava s c r i p t - s t y l e - g u i d e
Items in our JavaScript style guide 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te / j ava s c r i p t - s t y l e - g u i d e 
• Strings 
• Variables 
• Semicolons 
• Commas 
• Naming conventions 
• Tab spacing
Naming conventions 
#ec2014 
• File names are in lowercase 
• Words are spaced with a dash 
• Retina images have “@2x” appended 
• Language specific files have language code appended
Future of Front End Development at Evernote 
#ec2014
Sharing more of our code on Github 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te
Updates to the Evernote API 
#ec2014
Using more Node.js 
#ec2014
Benefits of Node.js 
#ec2014 
• Rapid-innovation and delivery 
• High-performance 
• Developer happiness 
• JavaScript for the backend
#ec2014 
Questions? 
Ryan Burgess 
Lead Front End Engineer, Evernote 
@burgessdryan

Más contenido relacionado

Similar a Websites & framworks: web at Everntoe

Magento 2 Development Best Practices
Magento 2 Development Best PracticesMagento 2 Development Best Practices
Magento 2 Development Best PracticesBen Marks
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Brian Culver
 
APEX HROUG 2019 - Universal Theme: Tips and Tweaks
APEX HROUG 2019 - Universal Theme: Tips and TweaksAPEX HROUG 2019 - Universal Theme: Tips and Tweaks
APEX HROUG 2019 - Universal Theme: Tips and TweaksMarko Gorički
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?C4Media
 
Training presentation.pptx
Training presentation.pptxTraining presentation.pptx
Training presentation.pptxNishchaiyaBayla1
 
Web components the future is here
Web components   the future is hereWeb components   the future is here
Web components the future is hereGil Fink
 
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo Shift Conference
 
ASP.NET 5 Overview - Post Build 2015
ASP.NET 5 Overview - Post Build 2015ASP.NET 5 Overview - Post Build 2015
ASP.NET 5 Overview - Post Build 2015Shahed Chowdhuri
 
Integrating Alfresco with Portals
Integrating Alfresco with PortalsIntegrating Alfresco with Portals
Integrating Alfresco with PortalsPiergiorgio Lucidi
 
ASP.NET 5 Overview: Post RTM
ASP.NET 5 Overview: Post RTMASP.NET 5 Overview: Post RTM
ASP.NET 5 Overview: Post RTMShahed Chowdhuri
 
ASP.NET 5 Overview for Apex Systems
ASP.NET 5 Overview for Apex SystemsASP.NET 5 Overview for Apex Systems
ASP.NET 5 Overview for Apex SystemsShahed Chowdhuri
 
WordPress as a Service
WordPress as a ServiceWordPress as a Service
WordPress as a ServiceAndrew Bauer
 
Professional tools and workflows for theme development
Professional tools and workflows for theme developmentProfessional tools and workflows for theme development
Professional tools and workflows for theme developmentMarius Cristea
 
Angular2.0@Shanghai0319
Angular2.0@Shanghai0319Angular2.0@Shanghai0319
Angular2.0@Shanghai0319Bibby Chung
 

Similar a Websites & framworks: web at Everntoe (20)

Magento 2 Development Best Practices
Magento 2 Development Best PracticesMagento 2 Development Best Practices
Magento 2 Development Best Practices
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
resume
resumeresume
resume
 
APEX HROUG 2019 - Universal Theme: Tips and Tweaks
APEX HROUG 2019 - Universal Theme: Tips and TweaksAPEX HROUG 2019 - Universal Theme: Tips and Tweaks
APEX HROUG 2019 - Universal Theme: Tips and Tweaks
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?
 
Training presentation.pptx
Training presentation.pptxTraining presentation.pptx
Training presentation.pptx
 
Web components the future is here
Web components   the future is hereWeb components   the future is here
Web components the future is here
 
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
 
ASP.NET 5 Overview - Post Build 2015
ASP.NET 5 Overview - Post Build 2015ASP.NET 5 Overview - Post Build 2015
ASP.NET 5 Overview - Post Build 2015
 
Integrating Alfresco with Portals
Integrating Alfresco with PortalsIntegrating Alfresco with Portals
Integrating Alfresco with Portals
 
ASP.NET 5 Overview
ASP.NET 5 OverviewASP.NET 5 Overview
ASP.NET 5 Overview
 
ASP.NET 5 Overview: Post RTM
ASP.NET 5 Overview: Post RTMASP.NET 5 Overview: Post RTM
ASP.NET 5 Overview: Post RTM
 
ASP.NET 5 Overview for Apex Systems
ASP.NET 5 Overview for Apex SystemsASP.NET 5 Overview for Apex Systems
ASP.NET 5 Overview for Apex Systems
 
Style Is Cool
Style Is CoolStyle Is Cool
Style Is Cool
 
Short-Training asp.net vNext
Short-Training asp.net vNextShort-Training asp.net vNext
Short-Training asp.net vNext
 
WordPress as a Service
WordPress as a ServiceWordPress as a Service
WordPress as a Service
 
Professional tools and workflows for theme development
Professional tools and workflows for theme developmentProfessional tools and workflows for theme development
Professional tools and workflows for theme development
 
Angular2.0@Shanghai0319
Angular2.0@Shanghai0319Angular2.0@Shanghai0319
Angular2.0@Shanghai0319
 
Java script
Java scriptJava script
Java script
 
Java script
Java scriptJava script
Java script
 

Último

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 

Último (20)

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 

Websites & framworks: web at Everntoe

  • 1. Websites & Frameworks: Web at Evernote Ryan Burgess Lead Front End Engineer, Evernote @burgessdryan
  • 2. How we structure web teams at Evernote #ec2014 • Evernote.com • Evernote Market • Web Client
  • 3. Evernote.com #ec2014 • Introducing Evernote • Acquisition / sign ups • Upgrading accounts • Marketing • Support
  • 4. Evernote Web Client #ec2014 • Evernote application in the browser • Create and edit notes • Upgrading account • Update settings
  • 5. Evernote Market #ec2014 • E-commerce site • Showcase our physical products
  • 6. Websites & Frameworks: Web at Evernote #ec2014 • Overview of web development at Evernote • Example projects • CSS Pre-processors at Evernote • Our Sass build • Tools we use for automation • Keeping code consistent • Future development at Evernote
  • 7. Overview of web development at Evernote #ec2014
  • 12. Leveraging the latest and greatest #ec2014
  • 15.
  • 16.
  • 17. The creative team #ec2014 • Writers • Designers • Photographers • Production designers • Translators • Developers
  • 18.
  • 19. Device specific screenshots We load device specific images for Mac and PC. #ec2014
  • 20. Evernote homepage assets #ec2014 • 1,336 total images • 1,082 hero images • 50 CSS files
  • 22. CSS pre-processors we use at Evernote #ec2014
  • 23. Benefits of CSS pre-processors #ec2014 • Joining of multiple files • Ability to define variables • Ability to create mixins • Mathematical functions
  • 24. Homepage hero Sass module #ec2014
  • 26. SMACSS #ec2014 Our Sass structure is based off of the SMACSS methodology.
  • 27. Sass build #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re Our Sass build structure • Base • Layout • Modules • Themes
  • 28. Base #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re • Vendor dependancies (Compass, Foundation) • Authored dependancies (Mixins, variables, Extends) • Fonts • Reset
  • 29. Layout #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re • Responsive Grid • Page specific layouts
  • 30. Modules #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re Broken up into code blocks • Header • Footer • Navigation • Hero image
  • 32. Themes #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re The themes directory contains any specific styles that a page may need to change from the generic layout or modules.
  • 33. Page specific Sass file #ec2014
  • 34. Benefits of our Sass build #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re • Cleaner code • More agile development • More consistency • Modular reusable code • Better quality
  • 37. Grunt running in terminal #ec2014
  • 38. Benefits of task managers #ec2014 • Automates tasks while we’re developing • Saves time • Watch for changes in the code • Helps keep files consistent • Optimizes our code base • Compiles our CSS • Minifies CSS and JavaScript
  • 39. Grunt and Gulp tasks we use #ec2014 • Compile Sass/Less to CSS • JShint for JavaScript linting • Browserify to compile JavaScript • Uglify to minify JavaScript
  • 40. Browserify #ec2014 Browserify with Grunt and Gulp in our build allows us to make our front end JavaScript code in modules and share them as dependencies and compile into one file.
  • 41. Benefits of Browserify #ec2014 • Allows us to have modular reusable JavaScript • Less HTTP calls from the browser • Better quality control
  • 43. Pootle translation #ec2014 h t t p s : //g i t h u b .com/eve r n o te /p o o t l e Pootle is an online tool that makes the process of translating so much simpler.
  • 45. Evernote CSS style guide An online CSS style guide to help keep our CSS more consistent. #ec2014 h t t p s : //g i t h u b .com/eve r n o te /c s s - s t y l e - g u i d e
  • 46. Items in our CSS style guide #ec2014 h t t p s : //g i t h u b .com/eve r n o te /c s s - s t y l e - g u i d e • Basic code formatting • Property order • Commenting • Color values
  • 47. Evernote JavaScript style guide An online JavaScript style guide to help keep our JavaScript more consistent in our builds. #ec2014 h t t p s : //g i t h u b .com/eve r n o te / j ava s c r i p t - s t y l e - g u i d e
  • 48. Items in our JavaScript style guide #ec2014 h t t p s : //g i t h u b .com/eve r n o te / j ava s c r i p t - s t y l e - g u i d e • Strings • Variables • Semicolons • Commas • Naming conventions • Tab spacing
  • 49. Naming conventions #ec2014 • File names are in lowercase • Words are spaced with a dash • Retina images have “@2x” appended • Language specific files have language code appended
  • 50. Future of Front End Development at Evernote #ec2014
  • 51. Sharing more of our code on Github #ec2014 h t t p s : //g i t h u b .com/eve r n o te
  • 52. Updates to the Evernote API #ec2014
  • 54. Benefits of Node.js #ec2014 • Rapid-innovation and delivery • High-performance • Developer happiness • JavaScript for the backend
  • 55. #ec2014 Questions? Ryan Burgess Lead Front End Engineer, Evernote @burgessdryan