Note by Reinout beforehand: the company I work for (DutH sponsor Nelen&Schuurmans) has a job opening for a front-end engineer. If you speak Dutch and are interested, give us a ping.
So you have the browser world and the node world. Packaging for the browser is by hand or with bower and so. Packaging for node is done with “npm”.
ES6 can be used safely, all modern browser support almost everything. It is not bleeding edge.
Modules. No more
var math = require('lib/math'). Now you can use
import math from 'lib/math'.
You now have default arguments to functions.
Template strings! Multiline strings!
Prototype based inheritance is still weird, but the way you write it in ES6 makes much more sense and is actually readable.
Actually, there is a real
class keyword that works like you expect it
this. Where python’s
self is clear,
this can mean various things in various places based on who asks for
it. The new ES6
=> syntax helps here.
Promises. A solution for the callback hell. “then/catch”. If a promise, which would normally be a callback, is resolved, the “then” parts are handled. If the promise fails, the “catch” will be invoked. It makes it much easier to reason about then regular callbacks.
So… the core language is now nicer. What also improved: the tooling. Every week the tools you should use change. Best practice from 4 months ago is ridiculed as out-of-date today. It is a cambrian explosion.
The upside: lots of nice experiments are done. Lots of nice stuff comes out of those experiments.
And… you don’t need to use the latest library just because it is mentioned on hackernews!
And you don’t need to update your npm packages every day. He updates it once per month on a specific “npm update day”. It does also take a day, btw.
A problem: hypermodularity. On the other hand: it takes unix’ “a tool should do only one thing” to its logical extreme.
Everybody applauded when Idan named and thanked Donald Stufft for his work on python’s packaging infrastructure that works very nice.
Look at yarn. If you see NPM as “easy_install”, yarn is “pip”.
Also use ESlint to check your code and warn about formatting problems. You can also use “StandardJS”. So set it up in your editor and on your testing machine.
If you want something like ipython/jupyter: look at https://runkit.com/home
React tastes like Django. And it has the clearest mental model of all the front end frameworks.
Ember tastes like Rails. He likes it less. There is a lot of convention instead of configuration.
Angular: he hasn’t done any work with it. There are two versions, angular and angular2. They are completely different animals. Completely incompatible.
There are lots and lots more.
Modularity invites a wealth of tooling, but you don’t want to run separate tools all the time to package it all up. So tools like “grunt” and “gulp” came along.
My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):