Vue.jsの足りない機能を補うために死活管理付きのルーター作った

誕生日だけど誰とも会わずにひたすら家でコード書いてた、朝から何も食べていない。

というわけで賢いルーターできた。

mizchi/warden

Vue.jsはいいんだけど、興味がビューだけでルーティング機能を持たない。まともなアプリを作ろうとしたら何かしら組み合わせる必要がある。

で、自分は、Chaplin.jsを仕事で使ってて、そのコントローラとインスタンス管理の仕組みが結構便利なんだけど、Promise挟めなかったり、それなりに不満があったので、薄いルーティングライブラリの上に再実装した。

概念

ルーターが自分に必要なインスタンスを知ってて、遷移前後で同じインスタンスを使うならば、そのインスタンスを引き継ぐ。それ以外のインスタンスはdisposeされて死ぬ。

だいたいレイアウトを使いまわしてコンテナの中身を入れ替える的な用途を想定している。あるいはページング相当のことをする際に、部分的な書き換えで済むような設計を実現できる。

たぶん、データバインディングと相性がいい。というかvue.jsの足りない機能を補うために作った。

サンプルコード

# resouce target must be implemented with `dispose` function
class Layout
  dispose: ->
class MyView
  dispose: ->

# app/controllers/home-controller.coffee
module.exports = class HomeController extends Warden.Controller
  beforeAction: (req) ->
    @reuse Layout
  index: (req) ->
    view = @reuse MyView 

# app/controllers/foo-controller.coffee
module.exports = class HomeController extends Warden.Controller
  beforeAction: (req) ->
    @reuse Layout
  index: (req) ->

# app/initialize.coffee
$ ->
  router = new Warden
  router.match '', 'home#index'
  router.match 'foo/:bar', 'foo#index'

Vue.jsとの連携

Vue.prototypeに$destoryを呼ぶようなdisposeを足す。methodsでもいいが。 Vue.prototype.dispose = function(){ this.$destroy(); }

Vue.extendしたインスタンスをreuseすればおk.

MyComponent = Vue.extend({})

module.exports = class HomeController extends Warden.Controller
  index: (req) ->
    @reuse MyComponent

最後に

26歳にもなると同世代の連中がどんどん結婚していく。最近最初のラッシュがきてる。そんな中一人で家にこもって心を持たない相手の死活管理とか作ってて非常に侘しい感じがする。自分の人生はこれでいいのか、せめてこういう時ぐらいはもっと華やかな場所に行くべきではないのか。

いや、言い訳するならば仕事がリリース前で忙しすぎて連休休めるか不安だったので予定何も入れてなかったんだけど、それにしても、せつない。僕は昔からGWが誕生日だから、なにかと誕生日を忘れられがちだった。学校でもクラス分けで一ヶ月ぐらい経って、微妙に仲良くなったが微妙、みたいな時期にGWが来るので、自分も厚かましいのは嫌なのでとくにそういう素振りを見せることなく、誕生日が過ぎ去る。それを義務教育の間にずっと繰り返してきた。

腹が減りすぎてぐるぐるしてきた。何も食べてないのはただの出不精で、とにかくだるくてコードを書く以外の気力が起きない。クソコードなんて放っておいても湧いてくるんだからそれに身を委ねるだけなんだし、その程度のコードで喜んじゃう自分は本当に安い人間だと思う。

昔痩せていたときはそれなりにモテたりしていたんだけど、プログラミング取り組んでる間に自分の見た目にどんどん無頓着になっていって、今体重が75kgとかまで増えててヤバい感じがしている。2年前にあった人間に誰だかわからないとか言われる。そりゃ10kgぐらい増えてるし…

恋愛とか結婚に無茶苦茶に興味があるわけではないが、そもそも選択肢としてそれらを選べない現状に恐怖を感じている。まあこれほどデブってしまっている現状、現状の相手に失礼だと感じるわけで、自分が拒否している。

今はまだ若さや能力を資本として消費しているが、このまま人間としての価値を証明できないと、いずれ死活管理される側になって、都合のいい感じに捨てられるという恐怖がある。とくに実家との関係をほとんど切ってるので、東京で一人で生き抜くならば、そういう縁は生命への保険としてあったほうがよい、という認識がある。

それはともかく、最後にとても役に立つリンクを紹介したいと思う http://t.co/CsuJWpKXrM