livescriptはaltJSの類です。
現状、Wikipediaに雑な紹介記事がある位の知名度ですが、極めて強力なやつです。
私はcoffeeスクリプトですら恐ろしくて触れない軟弱者なのですが、
知人から受け取ったサンプルがlivescriptで記述されていたので、
読み込みがてら、ちょっと構文について調べてみました。
導入
npmで入れます。現代的ですね
$ npm install -g livescript
とりあえず結果を知りたいだけなら、-pオプションで結果を見ることができます。
livescript驚異の超絶記法
数値周り
Rubyよろしく、可視性向上のアンダーバーは削ってくれます。
……しかも、末尾にくっついた記号まで消してくれるという謎仕様。
$ echo '37_000JPY' | lsc -p 37000
また、JS系のくせにN進数記法にも対応しています
$ echo '16~ff' | lsc -p 255
requireまわり
今回一番驚愕したのが、こちら。
node.jsなんかではお馴染みの以下のような記法
var foo = require('foo') ,bar = require('bar');
「なんだって同名のパラメータを用意しなきゃならんのよ?」てな感じでしたが
Livescriptは、そういった問題を斜め上な記法ですっ飛ばします。
package.jsで必要なものを導入しておいた上で、
$ cat require.ls require! <[ express express-session passport errorhandler path ]> require! 'passport-http': {BasicStrategy, DigestStrategy}
てなlivescriptを
$ cat require.ls | lsc -pc
コンバートしてみます。すると……
// Generated by LiveScript 1.4.0 (function(){ var express, expressSession, passport, errorhandler, path, ref$, BasicStrategy, DigestStrategy; express = require('express'); expressSession = require('express-session'); passport = require('passport'); errorhandler = require('errorhandler'); path = require('path'); ref$ = require('passport-http'), BasicStrategy = ref$.BasicStrategy, DigestStrategy = ref$.DigestStrategy; }).call(this);
いや、これオカシイでしょ(困惑
必要な関数に突っ込むところまで、よろしくやってくれます。
詳しくみていくと、
require! jQuery: $
と、ライブラリ名のあとに変数名を突っ込むと
var $; $ = require('jQuery');
と展開されたりします。
まとめ
と、ザックリとlivescriptのイカれた部分を見てきました。
他にも色々カッ飛んだ記法があるのですが、それは別の機会に書いていこうとおもいます。
参考もと
LiveScript - a language which compiles to JavaScript
編集履歴
- 2015/06/27 一部不適当な表現を修正(サンプルコードという表現、livescriptをコレ扱い等々)