くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | プログラム | | 模型]

2012-02-22

日記

朝全然起きれねー!

そりゃまあ帰ってきて気がついたら0時過ぎてててふとんに入ってからなかなか寝れずにふと時計を見ると1時半とかやってれば起きれるわけもない。強い意思を持って帰ってきてから何もしないをしないといけない。

PeerCastStation日記

JavaScripter日記。

JsRenderは便利だった。

いきなり話はかわるが、HTML埋め込みでひたすらJavaScriptを書いてる時にvimではなぜか埋め込みのスクリプトがオレンジ色というか特殊文字扱いの色で表示されてこまる。JavaScriptのシンタックスハイライト自体はされてるんだが、そのうえで通常の色で表示されるべきところが特殊文字扱いになってしまいとてもうざい。あとscriptタグ内は全部JavaScriptになってるけど、JsRenderのテンプレートは普通にHTML扱いして欲しいなぁ。

ということでなんとか作ってみたhtml.vimがこちら

source $VIMRUNTIME/syntax/html.vim

syn region  javaScript start=+<script [^>]*type *=[^>]*x-jquery-tmpl[^>]*>+ keepend end=+</script>+me=s-1 contains=@htmlTop,htmlScriptTag,@htmlPreproc
hi def link javaScript NONE

特殊文字扱いになるのは、標準のhtml.vim内でなぜか特殊文字扱いにされてたのでNONEにしてそんなへんなことしないように回避。テンプレートを判別するのは標準のhtml.vimにVBScript対応なんかが入ってたのを参考に普通にHTML扱いにするようにした。テンプレート対応はもしかしたらもっと上手いこといけるかもしれないけど十分それっぽく動いてるのでこれでいいや。

こいつを~/vimfiles/syntaxなり~/.vim/syntaxにhtml.vimとしてぶちこんでおけばおk。

さて、JsRenderは便利だなーとやってたんだが、こいつは文字列を組み立てるだけの機能しかない。一旦作ったDOMの中身というかテーブルの中身を、あとから再取得して更新されたデータで書き換えましょう!ということをやろうとしたら大変だった。バインディング的なことをやりたいんだが、そう簡単にはいかなそうだなぁ。

こういう時に使うんだなJsViewsって奴は!ということで見てみたけど便利そう。便利そうだけどやばそうな臭いもする。そもそも何やってるかサンプルコード見てもよくわからん。何をやりたいコードなのかはなんとなくわかるんだが、一体どういう仕組みで動くんだかすぐ想像できなくて、上手く動かないときにひどいことになりそうだ。中で何かすごいことが起きてんじゃないかなにこれこわい的な。

サンプルをさらに見ていくとできるだけバインディングでなんとかする方向が自然になるようにできてるっぽい。そりゃまあそうだろうけど、やばそうだな。たぶんJsViewsを知らない人が見たら何がおきてるのかさっぱりわからんコードが完成するだろう。JsRenderは文字列置き換えしかしないからわかりやすいんだけどね。 ちょっとJsViewsに手を出すのはやめてめんどいところもせっせと書いていくことにしよう……。

また話はかわるが、jQueryのappendでどっかのノードにHTML文字列をくっつけることができるけど、これで作ったノードの参照を名前とかつけないで取得したかった。appendの戻り値はくっつけた親のノードだし無理っぽいなーと諦めてたんだが。jQueryだと$()にHTML文字列渡すと新しいノード作ってその参照を返してくれるらしい。それをそのままappendに渡せばおっけーと。おいおい$()ってセレクタ渡すとマッチするノードを検索して返してくれるだけだと思ってたがそんな機能もあったのかよ。他にも$()に関数渡すと$.ready()のかわりになるらしい。なにこれ万能すぎてきもちわるいだろ。そのうち$(‘なんかいい感じの動作’)とかやればもう全部出来るようになるんじゃねーかな。


ページのトップへ | トップ «前の日記(2012-02-20) 最新 次の日記(2012-02-29)» | 編集 | kumaryu.net by kumaryu