frontend development for backend developers...- sass (the one we’ll use) - less (nearly identical...

53
Frontend Development for Backend Developers

Upload: others

Post on 25-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Frontend Development forBackend Developers

Page 2: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Swimming for Birds

Page 3: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Bicycling for Fish

Page 4: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Creative Writing for Professional Wrestlers

Page 5: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Why would someone do this?

Page 6: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 7: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 8: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 9: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 10: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 11: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 12: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 13: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 14: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 15: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 16: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 17: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 18: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 19: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Level 1: NPM

NPM (Node Package Manager)

- Frontend package manager- Javascript equivalent of pip- Initialized via ‘npm init’- Afterwards, packages can be installed with ‘npm install _____’- Dev dependencies are installed with `npm install ____ --save-dev`

Page 20: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 21: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 22: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 23: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 24: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 25: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Level 2: CSS Preprocessors

- Program for turning things that aren’t CSS into things that are CSS- Can run as a one-off command or as a listener- Common preprocessors include:

- Sass (the one we’ll use)- Less (nearly identical to less, but less ruby-y, more node-y)- Stylus (CSS without {‘s, }’s, and ;’s )

Page 26: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 27: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Why would someone do this?- Ability to use variables and mixins outside of CSS3- Nesting CSS rules within each other saves typing- Easier to namespace CSS- If we care about minification, it’s there for us to use- Introduction to the world of “CSS and JS are compiled assets”

Page 28: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 29: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 30: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Level 3: BrowserSync

- Frontend development utility- Removes the need to reload the page for many code

changes- Can run as part of a build process, or run its own

server that mirrors `localhost:8000`- It’s what gives frontend projects “Hot module

reloading”

Page 31: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 32: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Level 4: Webpack

- Build process manager- Accomplishes similar goals to Browserify, Gulp, or Grunt

- Installed via NPM- Bundles frontend assets together- Tracks assets within a dependency graph- Has its own configuration file: webpack.config.js- Runs in two different modes:

- Development: Includes development dependencies- Production: Barebones, minified build

Page 33: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Why would someone do this?- Explicit project dependencies (“I know we have Backbone installed

in package.json, but are we actually using it anywhere?”)- More modular compartmentalization of JS code without polluting

the global namespace- Also organizes other assets, such as photos, fonts, and CSS- Makes your development process smoother and faster

- ...but also, maybe not.

Page 34: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

webpack.config.js

Page 35: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 36: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

package.json

Page 37: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 38: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 39: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 40: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 41: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 42: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 43: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 44: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Level 5: React

- Javascript library for building user interfaces- Written in a HTML/JS-y hybrid syntax called “JSX”- Used by defining “components” representing

distinct portions of the webpage- Components maintain properties and a state.

Together, the two inform how/where/if the component will be rendered on the page

- Utilizes a “Virtual DOM” to avoid unnecessary re-renderings.

- I prefer: Vue

Page 45: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,

Why would someone do this?- Convenient way of modularizing your HTML

- Disclaimer: This is already pretty easy within Django Templates or Jinja- State management- Fits nicely into component driven design (and designer tools)- Make mobile apps with React Native

- ...but also, maybe not.

Page 46: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 47: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 48: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 49: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 50: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 51: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 52: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,
Page 53: Frontend Development for Backend Developers...- Sass (the one we’ll use) - Less (nearly identical to less, but less ruby-y, more node-y) ... - Accomplishes similar goals to Browserify,