A presentation by Ryan Burgess - Lead Front Engineer at Evernote. The presentation gives insights into some of the front end technologies leveraged at Evernote (Grunt, Gulp, JavaScript, Node.js, Sass). Find out how Evernote handles multiple websites in 26 languages.
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
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.
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
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