Transpilers:
JS In Disguise
Ryan Hayes
@RyannosarusRex
TriJS Meetup
4/14/2015
What's a transpiler??
A Type
of
compiler!
Compilers are evidently scary enough to warrant a dragon on every textbook.
Transpilers are compilers
That turn source code into source code!
At tri.js We've Seen:
Typescript
Unity/C#
...But there are 100+ Language to js transpilers!
https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS
I already know JS, so, Pfft, WHO CARES!
(Future you! That's who cares!)
Let's talk about a few important transpilers
Coffeescript
...The first on the scene
-
Ruby-ish syntax
-
Much less code
-
Long-in-the-tooth (Few/No new ES6+ features)
- Requires your whole team to be on board
Dart
Google's "JavaScript Replacement"
-
Types! Woo!
-
C#/C++-ish syntax
-
Has its own runtime (Dartium)
-
Have to use Eclipse (er....)
Bridge.net (or Duoco.de)
C# to JavaScript
-
Includes JQuery Support
-
Class libraries
-
Have to use Visual Studio (er...)
The takeaway of non-js transpilers
- Still compile down to JS
- Totally different languages
- Requires team buy-in
- Requires Specific language knowledge
- Use When:
- You need an existing library in JS
- Multi-Platform (Unity/Xamarin/etc)
So what should i look for in a transpiler?
Supersets!
A single, but distinct feature:
Regular javascript is valid
Typescript
ES2015+ with types
-
Types! Woo!
-
Javascript is valid TypeScript!
-
Angular 2 is built using TypeScript
Traceur
ES2015+ with experiments
-
Future JavaScript Today!
-
Maybe/Maybe Not Future JavaScript Today Gone Tomorrow!
ES2015+ with standard stability
-
Future JavaScript Today!
-
Follows Web Standards without Experiments
Let's recap
Use non-JS transpilers for:
Use JS superset transpilers for:
- For multiple platforms
- For existing C++/C#/etc libraries
- Use new features inside existing libraries
- Business case!
- Use regular JS in a pinch
Transpilers:JS In Disguise
By Ryan Hayes
Transpilers:JS In Disguise
- 1,600