ラベル closure-library の投稿を表示しています。 すべての投稿を表示
ラベル closure-library の投稿を表示しています。 すべての投稿を表示

2012年3月27日火曜日

Google API Expertが解説するClosure-libraryプログラミングガイドを読む(2)



今日も上記のClosure-library本を読み進めているのですが、
少し、DOM操作のコードを動かしてみたので、
DOM操作についてのメモを残しておきたいと思います。

まず、base.jsとdeps.jsを取り込むコードを入れておきます。
  <link rel="stylesheet" href="closure-library/closure/goog/css/common.css" />
  <link rel="stylesheet" href="closure-library/closure/goog/css/hsvpalette.css" />
  <script src="closure-library/closure/goog/base.js"></script>
  <script src="deps.js"></script>

で、最初にDOMのモジュールを読み込みます。
<script>
    // DOMの追加モジュールの読み込み
    goog.require('goog.dom');
    goog.require('goog.dom.DomHelper');
</script>

次に実際にDOMの追加です。
<script>
    // iframeをbodyに追加する。
    var iframe = goog.dom.createDom('IFRAME', {'src': 'about:blank'});
    goog.dom.appendChild(document.body, iframe);

    var fdoc = goog.dom.getFrameContentDocument(iframe);
    var helper = goog.dom.getDomHelper(ifdoc);

    // iframeの中にdivとspanを追加
    var node = helper.createDom(
          'DIV', null,
          helper.createDom('SPAN', { 'style': 'color: red;' }, 'Hello '),
          helper.createDom('SPAN', { 'style': 'color: blue;'}, 'World!'));
    helper.appendChild(ifdoc.body, node);
</script>

ソースコードを見ていただくと分かりますが、 bodyにiframeを追加して、iframeの中にHello World!が追加されます。 createDom()が要素の生成で、appendChild()が要素の追加。 getDomHelper()でhelperを取得して、helperを通じて、 要素の子要素を追加するという感じになっています。

CSSセレクタを使った要素の取得もできるようなのですが、
どうやら、closure-libraryと違うライセンスが適用されるようで、
商用利用の場合は、気をつけたほうが良いようです。

使い方は、こんな感じだそうです。

var hoge = goog.dom.query('#list > li:nth-child(hoge)');


2012年3月21日水曜日

Google API Expertが解説するClosure-libraryプログラミングガイドを読む(1)


土曜日(3/18)に上記の本を購入したので、読んでみることにしました。
Closure-libraryというのはGoogleが開発したJavaScriptライブラリで
GmailやGoogle Docsなどで利用されているそうです。

このライブラリは「手軽な開発」を助けるというのが目的ではなく、
開発を「より大きくする」事を実現するためのライブラリのようです。

したがって、小規模なアプリケーションを作成するのは不得意だと
書籍に書かれていました。

今回は2章の最初のサンプルを作る所まで読み進めました。
最初のサンプルは、HsvPaletteクラスを利用した色選択パレットを表示する
ものでした。

先にポイントを整理しておきます。
ポイント:

  • 書籍はローカルのファイルアクセスで結果を確認しているが、現時点でローカルファイルアクセスだと正常に動作しない可能性がある。(HsvPaletteはグラデーションが表示されなかった。どうやら、url指定があり、外部サイトにアクセスするみたい。)
  • Webサーバを用意する必要がある。(私は、GAE/Gの開発サーバを利用)

動作確認環境の構築方法です。(※GAE/Gを利用する場合)
GAE/G SDKのバージョンはgo1beta4を利用しました。(static_fileの設定を付けるので、ローカルの確認だけなら、バージョンは何でも良いと思います)


  • closure-libraryをダウンロードする。

ダウンロードは書籍の通りで大丈夫です。


  • 書籍の通りにサンプルのソースコードを実装。



  • app.yamlを作成する。

application: sample
version: 1
runtime: go
api_version: go1beta

handlers:
- url: /style\.css
  static_files: html/style.css
  upload: html/style.css

- url: /closurelib
  static_dir: closurelib

- url: /closure-library/closure/goog/css
  static_dir: closurelib/closure-library/closure/goog/css

- url: /closure-library/closure/goog/base\.js
  static_files: closurelib/closure-library/closure/goog/base.js
  upload: closurelib/closure-library/closure/goog/base.js

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon.ico

- url: /.*
  script: _go_app


  • 開発サーバの起動

python [SDKのパス]/dev_appserver.py [プロジェクトディレクトリ]


  • http://localhost:8080/closurelib/index.htmlを表示する。


Google+のメモ
https://plus.google.com/u/0/114183076079015753160/posts/hUJwV935qnd