Skip to content

Latest commit

 

History

History
125 lines (105 loc) · 3.92 KB

frameworks.md

File metadata and controls

125 lines (105 loc) · 3.92 KB

Frameworks

Don't reinvent the wheel.

Web frameworks fall into 3 categories: Frontend, Backend, and CSS (or UI frameworks).

Web applications often use a lot of duplicated features. For example:

  • User authentication
  • Pages that render
  • Connecting to databases
  • Profiles to look at
  • Stylized feeds of info

Formatting code in specific ways help us become more efficient and help other developers understand our code.

Frameworks help achieve structure and standardization in our applications and give us additional features without too much extra work. They allow us to focus on features, rather than on configuration details.

Code is READ many more time than it is written. It is important that other developers know where code for certain tasks is written so they can use it in their own code.

Most websites share a very similar structure. Frameworks provide a common structure so developers don't have to redo it from scratch and can the reuse code provided.

Frameworks are just code libraries (other people's code).

User Interface Frameworks

UI frameworks help create stylized & professional looking web apps. Most include:

  • Grid system (aligning elements)
  • Color schemes
  • Stylize HTML components using CSS

UI Frameworks are within the frontend and typically are JavaScript frameworks.

  • Bootstrap
    • Built by twiiter
    • Easy to learn, professional
    • Easy to spot bootstrap sites
    • Difficult to customize
  • Materialize
    • Clean looking
    • More fun than bootstrap
    • Lots of styling/color options
    • Follow's Google's Material guide
  • Foundation
    • Lots of examples
    • Professional
  • Semantic UI
    • Lots of built-in
    • Built-in themes, customizable
  • Grommet
    • Huge focus on accessibly
    • Really clean
    • Not as popular as others
    • Made for React JS

Frontend Frameworks

Frontend frameworks are mostly written in JavaScript.

They organize functionality and interactivity of your site.

  • Vue
    • Easy to learn
    • Very fast
    • Tools are packaged well
    • Takes parts from Angular/React and optimizes them
    • Less widely adopted
    • Flexible, useful in many ways
  • AngularJS
    • Built by Google
    • Well supported
    • Huge number of features
    • Improves scalability
    • Difficult to debug
    • Large learning curve
  • Angular 2+
    • Built by Google
    • Well supported
    • Encourages reusability
    • Improves scalability
    • Large learning curve
  • React
    • Built by Facebook
    • Bundles frontend code into components
    • Organizes code/data to make code more reusable
    • Large learning curve
  • Ember
    • Large amount of functionality out of the box
    • Opinionated, formatting is enforced
    • Steep learning curve

Backend Frameworks

  • Spring MVC
    • Java
    • Very fast
    • Less opinionated
  • Django
    • Python
    • Happy medium between being very opinionated and less structured
    • Gives you a lot of functionality out of the box (like user authentication, database connections, and view rendering)
    • Can be difficult to integrate a fancy front-end.
    • Python's data handling is amazing
  • Flask
    • Python (easier language to learn)
    • Less opinionated and more customizable than Django
    • Gives you less out of the box (you have to build more)
  • Ruby on Rails
    • Ruby (easier language to learn)
    • Very opinionated
    • Has great tools like scaffolding so you can build things fast
    • Gives you a lot of functionality out of the box (like user authentication, database connections, and view rendering)
    • The asset pipeline helps with front-end development
    • Ruby takes longer to run programs than some other programming languages
  • Meteor
    • JavaScript (easier language to learn)
    • Gives you a lot of functionality out of the box (like user authentication, database connections, and view rendering)
    • Integrates very well with modern front-ends
  • Express
    • JavaScript (easier language to learn)
    • Very customizable
    • Very lightweight
    • Less built-in features
    • Node is very fast