How to survive the Front End
(front) end (of the) world
Jason Brown
Front End @
Co-Organizer of this thing
The front end moves very fast.
Categories
- Package Managers
- JS Processors
- Templating
- Application Frameworks
- CSS Pre Processors
- CSS Post Processors
- CSS Frameworks / Grids
- App Build Systems
- Boilerplate Generators
- Testing Frameworks
- BDD/TDD
- Data Flow libraries
- Routing
- Visualization Libraries
- DOM
- Animations
- C# / SQL / NoSQL / Java /Python / PHP / WordPress/ Drupal / ASP / Docker
All the things you should know if you want to get an entry level/junior development position.
aka
Bower
NPM
Babel
ClojureScript
Bublé
jQuery
BackBone
Angular 1.X
Angular 2.X
Ember
React
Vue
Riot
Meteor
Knockout
React Native
React Art
React Test Utils
Enzyme
ReactCSSTransition
SASS
Compass
LESS
Stylus
PreCSS
PostCSS
CSS Modules
CSSNext
CSSnano
AutoPrefixr
RuckSack
Inline Styles
Bootstrap
Foundation
Grunt
Gulp
Brunch
Brocolli
Webpack
Browserify
SystemJS
Gobble
JSPM
RequireJS
Yeoman
QUnit
Karma
Mocha
Jest
AVA
Tap
TypeScript
Flow
rx.js
underscore
lodash
Flux
Redux
Redux Saga
Cycle.JS
Observables
Event Emitters
D3
Victory
Pixi.js
redux-form
Server Rendering
NPM
React
React-Router
Redux
PostCSS - CSS Modules
WebPack
Anything That Tests (check out AVA)
Lodash/FP
Babel ( I just mean ES6/ES2015, mostly just arrow functions () => and using const everywhere )
The less overwhelming list
- Dependecies
- Dev Dependencies
- Peer Dependencies ( NPM V2 vs V3 )
- How to use scripts
- How to use pre/post script hooks
- How to run private npm repos (sinopia/nexus)
Basic
- Create a component
- Understand props vs state (when to use what)
- Smart vs Presentational components
- How to cause a re-render with setState
Mid
- Create a component w/ ES6 class
- Create a functional component
- Understand tradeoffs between all 3
- When to use lifecycle methods
- When to use a ref
- Understanding `children` prop
- What PropTypes are used for
- When to use React.cloneElement
- shouldComponentUpdate strategies not just comparing data
- Using context
- Use key outside of array
- 3rd party library integration
- Integrate React partially into existing app
- When to use setState in componentWillReceiveProps. (doesn't cause additional render)
- Debugging perf with React Perf Tools
- When to write HOC vs Function Child
- Portals
Advaced
- Setup simple router
- Setup nested routes
- Setup nested named routes
- push/pop/replace inside components
- push/pop/replace outside components
- Integrate with react component lifecycle
- Integrate authentication
- Add in navigation confirmations
- Integrate react-router into existing app w/ partial react rendering
- Setup async routes (code splitting)
- Server Rendering
- Setup basic project
- Understand connect
- Add multiple reducers
- Add middleware
- Integrate dev middleware w/ correct dev/prod builds
- Write store enhancer
- Write custom middleware
PostCSS
(CSSModules)
- Setting up PostCSS
- Add a plugin (like CSSModules)
- Understand integrating global CSS + scoped CSS
- Organize CSS for reuse/composition w/ React
- Write a plugin (need to understand AST)
Webpack
- Webpack config to bundle JS
- Understand the different devtool settings
- Webpack config to integrate CSS
- Webpack config to chunk CSS
- Webpack config for images/CSS chunking + CDN
- Understand basic loader options
- Understand basic plugins
- Create a loader
- Create a plugin
- Write a dev server with middleware tools
- Realize you'll never understand Webpack give up and copy a boilerplate that exists, figure out how to modify it to meet your needs and call it a god damn day.
Testing
- Setup test framework with NPM
- Setup JSDOM if needed for testing
- Understand enzyme static/full DOM/static rendering and when to use which
- Figure out selenium integration with your test framework
- Setup code coverage collection
Just pick one
- Mocha
- Karma
- Jasmine
- Tape
- AVA
- Jest
Functional Programming
- Immutability - Don't mutate data, return new structure
- Stateless - Basically perform things in a vacuum without knowing what happened before
- Tail call optimization
- When to derive values in render vs store them
- Setup simple .babelrc w/ 2015/React
- Add Plugins
- Add environment specific overrides
- Understand pollyfill vs runtime-transform
- Write a plugin
Imposter Syndrome
Burn Out
What is exhausting for you?
Specific Resources
- https://developmentarc.gitbooks.io/react-indepth/content/
- https://github.com/fullstackreact/react-yelp-clone
- https://egghead.io/courses/getting-started-with-redux
- https://egghead.io/courses/building-react-applications-with-idiomatic-redux
- http://courses.reactjsprogram.com/courses/reactjsfundamentals
- https://github.com/reactjs/react-router-tutorial
- https://medium.com/@dabit3/introduction-to-using-npm-as-a-build-tool-b41076f488b0#.y2kqb6gz8
- http://survivejs.com/webpack/introduction/
Cool stuff built in React
- http://vision-explorer.reactive.ai/ ( https://github.com/reactiveai/cloud-vision-explorer )
- http://stevenhauser.com/i-have-to-return-some-videotapes/ ( https://github.com/stevenhauser/i-have-to-return-some-videotapes )
- https://soundredux.io/ ( https://github.com/andrewngu/sound-redux )
- http://joshwcomeau.github.io/react-flip-move/examples/
Thank You
Twitter: @browniefed
Github: @browniefed
Email: browniefed@gmail.com
Website: browniefed.com
Check us out on Slack
Surviving the front end
By Jason Brown
Surviving the front end
- 942