今更ですが、CoffeeScript をかまってみた。
とりあえず書き方など
ずいぶんラフな書き方ができる、といろんなサイトに書いてあります(嘘です)が、今ひとつイメージできないので、公式サイトにある CoffeeScript -> JavaScript 変換ページで確認しながら見てみます。
CoffeeScript公式 -> TRY COFFEESCRIPT のタブで確認します。
詳しいことなどは、ここ とか ここ などにありますので、参照してください。
今回のポイント
今までは、クラスを定義してそれを利用していました。その資産をなるべく変更せずに使いたいなぁと思います。
ちなみに各クラスはそれぞれ独立したファイルに保存してあります。
例)hoge.js tara.js
書き方(ざっくり)
Rubyライクとかっていうお話ですが、ガッツリ JavaSript な印象ですw
※まだ触ったばっかりなので。。。
インデントが重要な役割をしています。
関数とか条件式とかそういうのの中身?はインデントで認識してるらしいので、気をつけましょう。
それから、基本的には値を返すので、返さない(若しくは返さなくても良い)ものは最後に空の return 行を追加します。
それから、ライン終端の ; は基本いらないので気をつけようw
jQuery も普通に使えます。
class定義
class Hoge
hello: () ->
alert("Hello world!")
return
(function() {
var Hoge;
Hoge = (function() {
function Hoge() {}
Hoge.prototype.hello = function() {
alert("Hello world!");
};
return Hoge;
})();
}).call(this);
※ちなみに 公式サイトのインタプリタでは変換後の (function(){ ... }).call(this); は隠れて見えないようです。
どうやらここがポイントらしく、これは 即時関数 と呼ばれているようです。
これに囲まれると、中身はすべてローカル扱い、ということで、ライブラリを扱うときは注意が必要とのことです。
解決方法としては、CoffeeScript の最後に
class Hoge
hello: () ->
alert("Hello world!")
return
window.Hoge = Hoge
とすると良いようです。windowクラスはグローバルなので、それに登録して利用する、ということのようです。
あと、クラス名の前に @ を付けてもいいらしい。
class @Hoge
これでも大丈夫です。
(function() {
this.Hoge = (function(){ ... })();
}).call(this);
となって、window.Hoge = Hoge とほぼ同じことになります。。。たぶんw
function定義
関数の定義の仕方も簡潔になっています、
calculate_age: (birth_year, name) ->
if name is 'yukari'
age = 17
else
date = new Date()
nowyear = date.getYear() + 1900
age = nowyear - birth_year
return age
(function() {
({
calculate_age: function(birth_year, name) {
var age, date, nowyear;
if (name === 'yukari') {
age = 17;
} else {
date = new Date();
nowyear = date.getYear() + 1900;
age = nowyear - birth_year;
}
return age;
}
});
}).call(this)
まあこんな感じ。
ポイントは -> が function() ということです。
これは例えば jQuery などを使うときも同じです。
$.post(target_url, data_hash,
(html) ->
$("#show_html").html(html)
return
)
です。
その他
条件式とかでなんか ? とか使えたりとかするらしいです
あと == は使えないとか。
でも細かいところはそれくらいかな。
インデントが気になるところですが、それくらいなので、過去の資産を移植するのは意外と楽かもです。
あと、グローバルで使いたい場合はトップの方で
<head>
<script type="text/javascript">
var h = new Hoge();
</script>
</head>
ってしておくと良いでしょう。
Author And Source
この問題について(今更ですが、CoffeeScript をかまってみた。), 我々は、より多くの情報をここで見つけました https://qiita.com/ysomei/items/83b68d8165f0bc37dc9d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .