It's the future

Boopathi Rajaa

@heisenbugger

The story begins,

yo angular

Criteria

What are your expectations?

Complex asset pipelines 

Different kinds of files

Not a single executable, Large assemblage of files

Clean up of resources

this.state

Transpile

Bundle

Minify

CSS Preprocessors

CSS Postprocessors / Style transforms

Cache busting - hashes in filenames

Separate dev & prod configs / env / pipeline

Image optimization

Source maps

watch for changes

Increment rebuilds

Development web server

Unit tests

Live reloading & Hot module replacement

Linting

Continuous Integration

Package management to handle dependencies

webpack

grunt

jspm

coffee

yeoman

jenkins

gulp

broccoli

babel

traceur

cssi

browserify

uglifyjs

VirtualCSS

css in js

brunch

postcss

sass

autoprefixer

less

cssnext

express

node-haste

jest

mocha

jshint

requirejs

systemjs

selenium

phantomjs

istanbul

jsdom

chai

eslint

jscs

and lots more,

Sorry if I've not listed your favorite tool

Choice paralysis

What did we choose ?

  • webpack
  • react
  • postcss
  • babel
  • eslint
  • jest

Configuration as a Service

Convention over Configuration

OKAY.

What's the moon shot?

When will this stabilize?

When can I start writing code without any of these tools?

The only time you can say that the Web is “good enough” is when you’re building for yesterday’s Web

Tooling is not the problem of the Web.

Tooling is the future of the Web

Libraries and Frameworks are a different problem altogether

The conundrum: My framework is better than your framework

this.setState( nextState )

React

Webpack

output: {
  path: path.join(__dirname, "build"),
  filename: "MyDll.[name].js",
  library: "[name]_[hash]"
},
plugins: [
  new webpack.DllPlugin({
    path: path.join(__dirname, "build", "[name]-manifest.json"),
    name: "[name]_[hash]"
  })
]
new webpack.DllReferencePlugin({
  context: path.join(__dirname, "..", "dll"),
  manifest: require("../dll/js/alpha-manifest.json")
}),

ES7 / ES2016

Async / Await

Observables

Comprehensions

class properties

function bind

General Theory of Reactivity

Value

Promise

Iterable

Observable

Sync

Async

Single value (1)

Multiple values (*)

var a = 1;
var b = 2;
var p = fibonocciGenerator()
  .filter(i => i !== 0)
  .map(i => 5/i);
p.forEach( // ...
a = asyncA()
  .then(() => ...)
b = asyncB()
  .then(() => ...)
var p = fibonocciAsync()
  .filter(i => i !== 0)
  .map(i => 5/i);
p.forEach( // ...

Macros - sweet js

Sure, we'd want that. And sweet.js can handle a lot (it handled classes, destructuring, and other ES6 features before they were implemented in popular engines). This may take a while. Best way to ensure this outcome: more people learning, using, and helping improve sweet.js.

Is it becoming a spec?

When will macros get into JavaScript?

Will the core get slimmed in favour of macro-definitions?

Always bet on JS

Boopathi Rajaa

@heisenbugger

componentWillUnmount() {
  doCleanup({
    value: 'Thank You',
    done: true
  });
}

It's the future - React Conf Flipkart

By Boopathi Rajaa

It's the future - React Conf Flipkart

  • 1,757