The synatx is familiar. The let and var keywords are comfortable coming from ES6. Built in optionals are nice. The weirdest thing so far is the optional binding in if statements. For example:
I guess it saves you the unboxing shuffle you’d otherwise do, e.g in Java:
It’s interesting how Swift differentiates between structs and classes by how they are passed as arguments. Structs are
pass by value and classes/objects are pass by value. Structs can have functions and initializers, just like normal
classes. However, structs aren’t compatible with inheritance or type casting. Here’s an example struct in Swift.
Lo-Dash is a fork of underscore originally intended to make certain feature consistent across environments (e.g. browsers and Node). It's API-compatible with underscore, and bills itself as a better-tested, better-performing, alternative. It started in 2012.
Angular feels similar to rails in that it establishes a standard folder structure and set of components (controllers, views, services, directives). Thus it establishes conventions, making it easier to start or learn an Angular-based project once a baseline understanding of Angular is established. A notable difference is that Angular runs entirely in the web browser rather than on the server.
Backbone.js was initially released in 2010. It's known for being a lightweight Model-View-Presenter framework. It was written by Jeremy Ashkenas, who also wrote Underscore.js and CoffeeScript.
Flux is another Facebook tool that was developed in concert with React. It appears to have been released in 2014. It's described much more capably in the Cartoon Guide to Flux . Basically it solves the problem of multiple views updating multiple models and also responding to their updates by enforcing a unidirectional data flow (from models to views).
Redux was created as a refinement on Flux, solving similar problems in a manner that also allows better support for developer tools, hot reloading, and time travel. The Cartoon Guide to Redux is a great intro.
Relay is yet another Facebook product (released in August 2015) that works in concert with GraphQL to consolidate data queries across multiple components. They are described by Lin Clark with exceptional clarity in the cartoon guides to Relay part 1 and 2. Essentially it consolidates, optimizes, and prioritizes data fetching (via GraphQL) so that round-trips are minimized without consuming unnecessary bandwidth. It sounds like this is actually a critical front-end half of GraphQL.
GraphQL (also Facebook, also 2015) is a syntax for querying data from a server. The graph refers to an object graph. This is completely independent of whether data is stored in a graph database or a traditional relational database. GraphQL offers an alternative to REST API design. Instead of using URL components to request data, you use the message body with GraphQL syntax to specify which objects and fields are needed. Thus the response structure can be somewhat tailored to the client's needs--it won't contain any data other than what the client specifically requests.
Aurelia is a new (c.a. 2015) alternative to Angular, built by a guy who was involved in Angular 2.0 direction, but decided to build his own alternative. It sounds like the goal is to be more flexible than Angular--allowing you to choose your own parts to the framework. It also uses ES 2016 out of the box.
For now, I plan to learn more about Relay and GraphQL. I really like what I'm reading about the architecture patterns that Facebook has established for front end.