0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Chrome Dev Editor で Dart を書く

Last updated at Posted at 2014-11-29

2015年に爆発的に流行する事が(俺の中で)予測されているDartですが、Dart EditorはEclipseすぎてキモいので、皆さんIntelliJ IdeaのDart Pluginを当然のように使ってることと思います。とはいえItelliJ Ideaに毎年1万円も課金してる信者の方ばかりでは無いのも事実。そんなDartのEditor難民の方は、公式のChrome Dev Editorを使うといいと思うのです。

install

Chrome Dev Editor

ChromeウェブストアからDLするので、当然のようにChrome Appです。

Create Project

Chrome_Dev_Editor__developer_preview_-3.png

左上の三本線から New Project を選んで、とりあえずサンプルを開いてみましょう。

Chrome_Dev_Editor__developer_preview_.png

名前とかは適当でいいんじゃないかな。

Chrome_Dev_Editor__developer_preview_.png

何かできた

左のところが赤かったり黄色かったりするやつは、そこにエラーあるよって感じ。

Pub Get

Dartのパッケージ管理ツールである pub もここから使える。
pubspec.yaml (npmのpackage.jsonみたいなやつ)を右クリック

Chrome_Dev_Editor__developer_preview_-3.png

左下でくるくるしながら pub get が実行されて、 /packages ディレクトリの中にぶちこんでく。

そしたら赤いのとか黄色いのとかも消える。

赤いのは、「んなパッケージねーよ!」エラーだったみたい。

Launch app

Chrome_Dev_Editor__developer_preview_-3.png

何も考えずに再生ボタン押す。適当に右クリックでコンテキストメニューから Run でもいいと思う。

HelloWorld_2.png

やったね!

でも、Chrome Dev Editor の左下のくるくるが終わるまでまとう。

Chrome_Dev_Editor__developer_preview_-2.png

Dartium じゃないとDartで動かないからせこせことDartをJSにコンパイルしてくれてるので、しばらく待とう。

Play app

Type your name... のところに文字列を入れると、何と反転表示してくれる!!神アプリ!!

あとは、メニューの About を押すとURLと画面が切り替わるんだけど、これはSPAになってる。

main.dart
var router = new Router();
  router.root
    ..addRoute(name: 'about', path: '/about', enter: showAbout)
    ..addRoute(name: 'home', defaultRoute: true, path: '/', enter: showHome);
  router.listen();

main.dartのrouting処理のところみると分かるね。

ちなみにRouterは、route_hierarchical パッケージを使ってて、これはAngularのRouterみたいですね。

main.dart
import 'package:route_hierarchical/client.dart';

ちゃんとうえのほうでimportしてるから使える感じだね。

Add new page

せっかくなのでいじってみましょう。新しく /hoge ページを追加してみます。

index.html+0900
@@ -53,6 +53,7 @@
     <ul>
       <li><a href="/">Home</a></li>
       <li><a href="/about">About</a></li>
+      <li><a href="/hoge">Hoge</a></li>
     </ul>
   </nav>

@@ -83,6 +84,11 @@
       </p>
     </div>

+    <div id="hoge" style="display:none">
+      <p>This is additional page.</p>
+      <p>"Hoge" is Japanese culture.</p>
+    </div>
+
     <div class="sass-hidden">
       <p>
         Note: to use Sass with this application, switch the stylesheet
main.dart
@@ -15,6 +15,7 @@
   var router = new Router();
   router.root
     ..addRoute(name: 'about', path: '/about', enter: showAbout)
+    ..addRoute(name: 'hoge', path: '/hoge', enter: showHoge)
     ..addRoute(name: 'home', defaultRoute: true, path: '/', enter: showHome);
   router.listen();
 }
@@ -23,9 +24,17 @@
   // Extremely simple and non-scalable way to show different views.
   querySelector('#home').style.display = 'none';
   querySelector('#about').style.display = '';
+  querySelector('#hoge').style.display = 'none';
 }

 void showHome(RouteEvent e) {
   querySelector('#home').style.display = '';
   querySelector('#about').style.display = 'none';
+  querySelector('#hoge').style.display = 'none';
+}
+
+void showHoge(RouteEvent e){
+  querySelector('#home').style.display = 'none';
+  querySelector('#about').style.display = 'none';
+  querySelector('#hoge').style.display = '';
 }

大したことはやってないす。

ちなみに .. について

ちな router.route..addRoute()..addRoute() の部分の ..addRoute().. はDartのシンタックスで、メソッド呼ぶんだけど常に return this してくれる的なやつです。

addRoute
void addRoute({String name, Pattern path, bool defaultRoute: false,
        RouteEnterEventHandler enter, RoutePreEnterEventHandler preEnter,
        RoutePreLeaveEventHandler preLeave, RouteLeaveEventHandler leave,
        mount, dontLeaveOnParamChanges: false});

addRouteの実装みるとreturnはvoidなんだけど、メソッドチェーンが使えるんだよ!的なあれ。

show hoge page

HelloWorld.png

そんなこんなでちゃんとHogeページが追加されてて、メニューの切り替えも動作してます。すばらしい。

まとめ

  • Dartの開発がChrome Appでできる
  • Pub Getもできるしコンパイルもできる
  • ブラウザでの確認もできる

感想

コードヒントとかコードジャンプとか何かひと通り必要な事は全部できるすごい。
これがDartで書かれてるってのがすごい。
大規模なクライアントサイドアプリケーションとして実用に耐えてる証左になるんじゃないかな。
結構重い処理もあると思うんだけど、そんなに重さは感じなかった。

ただ、Dart2JSのコンパイルが重い。激重い。やってらんない。糞。

Dart2JS通さずにDartiumで直実行できるのであればいい感じかなぁ。
そのへんを簡単に設定するオプションは見つからず。
DartiumにChromeDevEditorをインストールして起動してもRunすると普通のChromeの方でURL開いちゃったりするしどうしたもんかね。

結論

IntelliJ Idea に課金すればいいと思うよ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?