[mas 500] web basics

18
MAS.500 - Software Module - Rahul Bhargava Web Development 2014.11.14

Upload: rahulbot

Post on 13-May-2015

149 views

Category:

Education


1 download

TRANSCRIPT

Page 1: [Mas 500] Web Basics

MAS.500 - Software Module - Rahul Bhargava

Web Development

2014.11.14

Page 2: [Mas 500] Web Basics

Topics

1. MVC and Web Dev

2. A Variety of Approaches

3. Microframeworks

4. Frameworks

Page 3: [Mas 500] Web Basics

Model-View-Controller

Page 4: [Mas 500] Web Basics

Separates storage from interaction

❖ Helps separate code into unique pieces that don’t overlap

❖ Keeps your data storage separate from any specific representation of it to a user

❖ Facilitates code reuse

❖ read more about “Separation of Concerns”

Page 5: [Mas 500] Web Basics

MVC Summary

❖ Model: stores your data and any logic needed to use it

❖ Controller: takes user input, manipulates models, sets things up for the views

❖ View: renders the model data for a user

Page 6: [Mas 500] Web Basics

MVC: Use

❖ Many application and web frameworks have this baked in

❖ Rails has Models, Views and Controllers

❖ iOS has CoreData (NSManagedObject), UIView subclasses, UIViewController subclasses

❖ In-browser JS frameworks use this too

❖ This way of thinking about your software will pay off down the road

Page 7: [Mas 500] Web Basics

MVC dominates the Web

❖ fat Model represents the data❖ Database access + “business logic”❖ (sometimes) tells view when data changes

❖ skinny Controller is glue❖ Parse user input, gather data, clean and pass

to view

❖ lightweight View is the UI❖ HTML + inline code❖ Put re-used code in helper libraries

Page 8: [Mas 500] Web Basics

MVC: Web App Example

Page 9: [Mas 500] Web Basics

A Variety of Approaches

❖ “CGI”: roll your own quick scripts❖ Don’t usually play well with others

❖ Microframeworks (microkernel)❖ Quick spin up, lightweight❖ Sinatra (ruby), Flask (Python), etc…

❖ Frameworks (macrokernel)❖ French is easy once you speak French❖ Rails (ruby), Django (Python), CakePHP etc…

❖ Content Management Systems (CMS)❖ Core rigid, flexible module system, can get features for free❖ Drupal (php), Wordpress (php), etc…

❖ PS: Javascript is HOT right now❖ NodeJS (+express), Meteor, BackboneJS

Page 10: [Mas 500] Web Basics

Microframeworks

Page 11: [Mas 500] Web Basics

Microframeworks

❖ Positives❖ Easier learning curves

❖ Not many assumptions to learn❖ Not many commands to understand

❖ Get results quickly❖ Real web app in just a few lines of code

❖ Negatives❖ Only do a few things out of the box (need

libraries to do more)❖ Don’t scale well with features

Page 12: [Mas 500] Web Basics

Microframework: Flask

❖ Dependencies❖ Python (I still recommend v2.7)❖ Python Setup Tools

❖ Install❖ > pip install flask❖ Or❖ > easy_install flask

❖ Quickstart❖ demo

Page 13: [Mas 500] Web Basics

Microframework: BackboneJS

❖ In-browser MVC❖ demo

Page 14: [Mas 500] Web Basics

Frameworks

Page 15: [Mas 500] Web Basics

Frameworks

❖ Positives❖ Lots of simplifying assumptions❖ Built for production environments❖ More basics built-in (db, email, etc)

❖ Negatives❖ Opaque

❖ Takes a while to learn common patterns❖ Annoying if you don’t do things “right”

Page 16: [Mas 500] Web Basics

Framework: Rails

❖ Dependencies❖ Ruby (use RVM to install)❖ RubyGems

❖ Install❖ > gem install rails

❖ Quickstart❖ Demo

❖ Install Aptana’s RadRails to get started quickly!

Page 17: [Mas 500] Web Basics

Examples

❖ Backbone❖ https://github.com/rahulbot/GV-GetToKnow-b

ackbone

❖ Flask❖ https://github.com/rahulbot/GV-GetToKnow-fl

ask

❖ Rails❖ https://github.com/rahulbot/GV-GetToKnow-ra

ils

Page 18: [Mas 500] Web Basics

Homework

❖ see course outline