フロントエンドとJavaScript JavaScriptのMV*向けライブラリ BACKBONE.JSによるWebアプリケーション開発について 「オープンソースカンファレンス 2013 福岡」の HTML5と最近のフロントエンド事情で発表した資料です。
フロントエンドとJavaScript JavaScriptのMV*向けライブラリ BACKBONE.JSによるWebアプリケーション開発について 「オープンソースカンファレンス 2013 福岡」の HTML5と最近のフロントエンド事情で発表した資料です。
型付け力を強化するための Hoogle のすゝめ / Boosting Your Type Mastery with Hoogle
というわけで色々Backbone.jsについて見てはいるものの、いざ自分で作ってみると上手くいかない・・。 ようはどの単位でViewとModelを紐付ければ良いかわからないんですよねー。 というわけで、Todoリストのサンプルからそのヒントを得ようという試み。 参考:Backbone.js Todos Backbone.js Todosについて 見ての通りBackbone.jsで作られたサンプルアプリ。 Todoリストのデータの保管にはLocalStorageを使ってて、別のライブラリを読み込んでます。 ソース全部 せっかくなので、ソースについてるコメントを和訳しときます。 // An example Backbone application contributed by // [Jérôme Gravel-Niquet](http://jgn.me/). This demo uses a
jQueryにはイベント制御のAPIとして、clickやmouseoverの元になるbindの他に、同じような呼び出し方のliveやdelegateが提供されている。 bindはDOM APIで提供されているaddEventListenerのwrapperだが、liveは以下のような実装になっている。 1. 第一引数のイベント名でdocument objectにlive用のイベントハンドラーをbindする 2. 1で設定したイベントハンドラー内でdocument object内に存在する要素上で発生したイベントを全てキャッチする ・イベントの発生元要素がbind時に設定されたセレクタに一致する場合、第二引数に指定されたユーザーのイベントハンドラーを呼び出す これはもともと「多量の要素に対してbindするとUIをロックしてしまう」という問題の対策として知られていた手法だが、liveはそれをj
events とか default とは何か Backbone.js のクラス定義において、特殊なパラメーターがいくつか存在している。たとえば events や defaults は、 Backbone.js のチュートリアル的文書ではまっさきに触れられている特殊なパラメーターだ。 例えば、 defaults は Model の特殊パラメーターで、指定しておくことでクラスをインスタンス化した際に、デフォルトの値として使われるようになる。 var Person = Backbone.Model.extend({ defaults: { name: 'John Doe', age: 25 } }); var person = new Person({ age: 100 }); person.get('name'); // 'John Doe' person.get('age'); // 100
At New Media Campaigns, we love GitHub. For those that aren't familiar, Git is version control software for programmers. GitHub is a service that provides Git hosting and related services. The developers here all use GitHub for their personal and open source projects and as a company we use it for our custom development projects. Since we are website builders, we tend to build separate websites or
以前書いた、Backbone.js Model.save()によるPOSTデータをPHPで読み込むに続いて、 Backbone.jsを使ったリソース参照に関する記事です。 Backbone.jsを使った一覧表示サンプル Backbone.jsのCollectionとModelを使って、Collection.fetchの結果を画面に一覧表示するサンプルを作ってみました。 一覧表示サンプル サンプルの動作 「表示」ボタンをクリックすると、ユーザーリソースにGETリクエストを送信 JSON形式のユーザー一覧データを含むレスポンスが返ってくる backbone_fetch_test.jsがレスポンスを解析して画面に表示する サンプルを構成するファイル サンプルを動作させているファイルの一覧と、ファイルの内容です。ブログ用にコメント多めに入れてます。 ファイル一覧 backbone-fetch-te
便利便利と言われつつも使ってみないと良さがわからないのがDeferred Object。身近なところで言うと、$.ajaxが返す、doneとかfailとかを呼べるアレもDeferred Objectです。使いこなすと色々な処理をコールバックを渡すよりもうちょっと綺麗に書けるようになります。 ということで最近プロジェクトで使ったパターンを中心に例をあげてみます。 コードはすべてCoffeeScriptの擬似コードです。 まず最初に便利な書き方を覚える Deferred Objectは$.Deferred()で作るわけですが、これには「作られたDeferred Object自体を引数にとる関数」を引数として渡せます。これを利用すると d = $.Deferred() doSomethingWithCallback -> d.resolve() d を $.Deferred (d) -> doS
Backbone.js(http://documentcloud.github.com/backbone/)を2,3ヶ月触ってみて、導入して良かったことをまとめます。 Backbone.js単体での威力はそこまでではないかもしれませんが、Server側も含めた設計思想を絡めて考えると大きな効果が期待できます(サーバー側も含めた構造改革が全体的に必要になるとは思いますが・・・)。 ## ViewとControllerの結合強度低下 = Viewのアプリ化 ### viewとcontrollerが1対1対応だった頃 Rails単体で作成している場合、Viewにロジックが入れられない以上、 そのViewで必要な変数などは、全てControllerに書く必要がありました。 この状態では、ControllerがViewによって処理内容を変更する必要があり、結合強度が高くなってしまっていました。 この
object.once(events, callback, [context]) object.listenTo(other, event, callback) object.stopListening([other], [event], [callback]) Backbone.Model Backbone.Model.extend([properties], [classProperties]) Backbone.Model を継承した新しいモデルを作ります。 properties インスタンスメンバを定義します。 var User = Backbone.Model.extend({ say: function () { console.log("Hello."); } }); var user = new User(); user.say(); //-> Hello. classPr
backbone.jsで作成したモデル(Backbone.Model.extendで作成したオブジェクト)はsave(),destroy(),fetch(),create()などのメソッドを持っている。これらは、呼ばれると裏側でsync()メソッドを呼び出している。このsync()がサーバ側に問い合わせて、永続化が行われると言う仕組み。デフォルトでは以下のような形でREST形式で問い合わせが行われる。 モデルのthis.urlが/api/fooの時の例 モデルが呼ぶメソッド url HTTPのメソッド create /api/foo POST save(既にデータが存在している場合) /api/foo PUT destroy /api/foo DELETE fetch /api/foo FETCH backbone.jsのモデルは、このように同じURLに対して、HTTPメソッドを分ける形で
直近で、新規案件に関わることになりそうなので、ライブラリ選定やタスクランナー、そして今回の依存管理のようにベーシックな話が続いてます。次第に、具体的な実装やコード設計のポストが多くなる・・・はず。 今回はVue.jsでも触れましたが、改めてcomponent - modular javascript frameworkについて。 概要 Componentはパッケージマネージャー兼、依存解決込みのビルドツールです。クライアントサイドについて、JSのパッケージマネージャーやビルダーは既にありますが、Componentは HTML/CSS/JSをセットにして扱うことができます。 npmでいうpackage.jsonと同様に、component.jsonという定義ファイルによって、パッケージの依存関係やリポジトリなどの各種情報を示します。 component/component コア部分のリポジト
Angular, Ember, Backbone:どのJavaScriptフレームワークを選ぶべきか? JavaScriptフレームワークの選択は、開発者の好みよりもプロジェクトとの相性が大切だ。 JavaScriptベースのアプリケーションやウェブサイトのアイデアを思いついたとして、次にしなければならないのが正しいオープンソース・フレームワークを選ぶことだ。 この記事を読んでいるということは、あなたはまだ初心者や見習いの開発者かもしれない。あるいは自分のアイデアの開発を外部に委託しようと考えているのかもしれない。Angular、Ember、Backboneの名前ぐらいは聞いたことがあるかもしれないが、それらがどういったもので、なぜそれらがウェブ開発の助けになるかについてまでは知らないかもしれない。 開発者はJavaScriptを様々なウェブ・アプリケーションに使用している。それはJa
数日前@naoiwata師匠に「JavaScriptにパターンマッチってないですよね?」って聞いていたら「Underscore.jsならあるかも」みたいなことをそそのかされたので少し触ってみた。 Underscore.jsは関数型プログラミングをしたい人のための軽量ライブラリだという認識でだいたい良いと思います。最近、「JavaScriptで学ぶ関数型プログラミング」みたいな本も出ているみたいで、ちょっと中身みたけどUnderscore.jsの使い方ぽい感じの本だったので興味ある人は読んでみるといいかと*1。 ちなみに僕が求めているパターンマッチは文字列の正規表現ではなくて、関数型言語でいわれるようなパターンマッチ。Gaucheのutil.match的なやつ。 で、とりあえずUnderscore.jsなんぞということでバーっとひと通りみてみた。 Underscore.js だいたい大きく6
2014/10/14 追記 本書87ページに「母数」という単語が複数回出てきますが、 これは全て「分母」とすべきでした。*1 通常、統計学の文脈では、母数は各確率分布を特徴付ける変数を指す単語であり、 例えば正規分布は平均と分散という二つの母数によって形状が決定されます。 決して母数と分母(あるいは全数)と誤解してはなりません。 しかし母数と分母を混同することは本当によくあることで、 本書はこのような頻出する誤解を訂正し、 皆様が統計を用いる際の失敗を一つでも減らす という目的で執筆に至ったにも拘らず、 まさか本書でこのような重大な失敗をしてしまったことに対し 心からお詫び申し上げ訂正させて頂きます。 なお、問題個所の記述は共著者の森藤氏ではなく 私が記述したものであり、全責任は私にあります。 本を書くに当たり、誤字脱字や言い回しの不備は出来る限り無くすべきですが、 人間であるためミスをす
はいどうも~。Japanese Schoolgirlsが好きなエンジニアの吉田です。 以前「jQuery.tmpl() で HTML の View と Model を分離してみるよ」という 記事を書きましたが、引き続きJavaScriptによるMVCシリーズ第二弾! 今回は、Backbone.jsでViewとModelを分離させてみるという試みです。 ここ最近、JavaScriptのMVCライブラリだと「JavaScriptMVC」や「Knockout.js」 「Backbone.js」などがぼちぼちと知名度を挙げてきているような印象です。 (※注)正確にはKnockout.jsはMVCではなくMVVM(Model-View-ViewModel)ですね。 そんな中SoundCloudなどでも使用されているBackbone.jsがとても気になって いたので、どのような感じで利用できるのか試し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く