Java Script Framework

From DevSummit
Jump to navigation Jump to search

Javascript -- things to know about frameworks!

SO many frameworks, it can be tricky

Beginning list of frameworks:

  • Ember
  • Angular [very powerful/complex, "magical"]
  • Meteor [seems most complex/powerful]
  • Express.js
  • Sales.js
  • backbone.jsf [more basic, least "magical" eg we can see what's doing what, is useful] Backbone with express in a backend
  • D3 - data visualizations


WHAT IS A FRAMEWORK

  • Javascript is for a web-based application
  • 2 philosophies
  • 1. set of interlinked libraries -- build out of w/ your own code
    • ex. jquery - langage, doesn't modify code
    • ex. php likes a library
  • 2. framework b which code has flows into a structure & includes libraries, it's

packaged

    • ex. works well w/ Ruby, Python
  • Javascript frameworks vs front end frameworks. Try to separate the logic from the HTML/dom modification.
    • ex. jquery "touching thigns on page all over" -- not a framework
    • ex. manipulating logic behing page, framework
  • Now with increased power applications can be built on the browser, not inside the server; the application existis in the browser

FRAMEWORKS

  • Philosophy: angular, backbone
    • things you can add to your HTML, data tags, how to handle server requests [ajaxy things]
    • convention over configuration
  • Angular "its like magic" -- takes things out of your head and puts it in the framework
  • Ask yourself: how much do you want to get in and do things, vs. a convention-based approach.
    • eg do more vs. you only have so many places of contact
  • Frameworks -- declare functions, apply a "data show"
    • gives you more structure, but also not as clear how it does what it does
    • eg. what if it breaks
    • abstracts further out than a library


WHY USE THESE?

  • Before frameworks, it was all about one-use applying scripts to DOM [HTML] elements, now it's more about redefining tags which themselves are defined applications.
  • eg <map> as a DOM tag relates to a Javascript function
  • The word magic has been used 4 times in the first 20 minutes. People love frameworks!


  • HOW DO YOU DECIDE WHAT FRAMEWORK to USE?
    • For the last few years, ppl chose Backbone bc it worked well
    • where do you do the application-level binding? Is code in HTML or somewhere else =To DOM elements?

WHAT DOES A JAVASCRIPT PAGE LOOK LIKE?

  • LIBRARY: <get some data
  • script to do things to data
  • coordinate libraries
  • configure the page DOM>
  • FRAMEWORK:
  • go out to the frameworks' functions
  • get some data
  • configure the page DOM>


  • COMPARING FRAMEWORKS
  • Backbone* -- backbonejs.org
    • no magic
    • tools for fetching and syncing data
    • DOM manipulation via views function "render" [which do nothing, you have to make those work]
      • to update DOM you have to call render again
  • manually write code to change HTML
  • has a few on-click events
  • very simple objcts taht have clear responsibilities
    • model [data]
    • collection [of modles]
    • view [ties DOM w data]
    • router [ties web to view rendering]
  • SImilar to application, iOS development in terms of haow data and view dev works
  • only answers in-browser side of things
  • Can be very straightforward, doesn't get in the way, also doesn't help out much.
  • Can do "weird" things w/
  • can help you organize well w/o bringing in too much too do
  • need to program in "listen to data, if data changes, render"
  • Use Case scenarios:
    • for complex modal, rather stateful triggering operations
    • yes a blog w real-time filtering; hitting filters so results change w/o reloading page


  • Ember
    • Rails core team wanted a JS framework
    • Aligned w Rails philosophy
    • For profit company

Angualr

  • Came out of a google team
  • USed a lot for shopping carts
  • Separates data from the view
    • ex. change page title via user
  • Good at data binding
    • data binding is "
    • ex. user inputs 2 shirts into cart, bringing info back after user
  • Similar to Phython: taking that it gathers data then spews it back out to you
  • Relatively easy to learn, lots of documentation
  • Hard to debug--2x to debug than to build because it's so automagical
  • will re-render page if data changes; will cycle "detect changes on object"
  • Angular 2 coming out soon, changing API

Meteor

  • both a front-end and a server-side solution
  • will generate page and save data
  • will have one set of codebase
  • if Im on client run x; If I'm on server run x
  • have one set of functions that work on client and server -- don't need server and client validation
  • a plaform as opposed to a framework
    • acts a bit as Apache; creates complex development
    • has deployment, protocol, et al.
  • use case: highly concurrent things
    • eg. replace Web Sockets
  • Its easier to take metor apps to make into iPhone / Android apps --> one script to do so
  • is a for-profit endeavour
  • is a node.js application

node.js

  • node is a runtime environment / virtual machine that allows js to run in your server
  • node is also a collection of utilities
  • is a framework but it's so basic we think of it as a javascript runtim on the server
  • gives u a way to package js code in a library structure - this is how ppl share
  • program runs on browser, node makes server work
  • uses--re-build tools: brunch, grunt, et al [making code changes then show up on browser]


ADDITIONAL LIBRARIES & TOOLS

  • brunch, grunt, make:
    • reload, rebuild tools to update browser-based apps after code updates
  • Share JS*
    • OS implementation of Google Wave
    • "pipe my data w Share.js" and everything syncs across multiple views
  • Marionette
    • extention to Backbone
    • you can read thru source code in a few libraries
    • tied to utility libraries LowDash or UnderScore
  • LowDash or UnderScore
    • libraries with additional functions
    • extention to Backbone
  • TEST YR FRAMEWORKS
    • todo.app --> test various to-do lists in


  • WHATS COMING UP
    • New Javascript is coming: "ES6 Harmony"
    • Will be like Phython + Javascript + CoffeeScript deprecates things like "require JS"
  • HOW DO YOU CHOOSE A FRAMEWORK?
    • community maintainers
    • the community stability
      • eg. backbone is stable, angular has massive changes coming up
      • brunch keeps having changes, make doesn't...
  • How do you evaluate the community of an open source project>
    • issue queues,
    • how do they do updates? major rewrites all the time vs. bug fixes
    • polite responses,
    • who can make commits,
    • how are patches accepted,
    • are there security alerts,
    • enough people are maintaining other libraries that are not centrally controlled
    • are there versions released...
  • WHY MAKE WEB APPS
    • making apps ppl can access on the web makes more open/free applications than the

native apps on devices

    • makes it easier to build components w/o having to learn multiple languages, many

access points


RESOURCES:

  • List of JavaScript libraries: en.wikipedia.org/wiki/List_of_JavaScript_libraries
  • Learn Javascript! "Series of unfortunate events."
  • D3: data visualize what you're building
  • Sideprojects
  • FireFoxOS --> mobile wrapper; mobile version of firefox, put one line in code
    • is a ROM [runs the phone]
    • the new ones, its a much nicer phone, 3rd party wrappers don't work
    • different philosophy in global disto [smart phone under $100]