LoginSignup
3
3

More than 5 years have passed since last update.

イマドキJavaScriptにキャッチアップを試みる(1)

Last updated at Posted at 2015-06-16

Ubuntuではパッケージでnodejsとnpmを入れる。パッケージが存在すれば、原則それを使う。それ以外の個別のものはnpmでglobalインストールするのは気が引けるので、環境変数をやりくりしつつ、ひとまずlocalインストールでしのぐ方向。

Ubuntuはnodeではなくnodejsにリネームされているので、$HOME/bin にsymlinkを置く(そうするとデフォルトではPATHに追加されるように.profileが書いてある)。ちなみにnodeをインストールすると、node.jsとは全く関係が無いax25-nodeというinetd起動のデーモンがインストールされる。

$ ln -s /usr/bin/nodejs $HOME/bin/node

それからPATHにnpmでインストールしたコマンドが検索されるようにする。相対パスにしたのは意図的なもの。

$ export PATH=$PATH:node_modules/.bin

作業場のディレクトリを作って、その中に移動する。

mkdir testapp && cd testapp

jspmをインストールし、github用のtoken設定を入れておく。そうしないと、怒涛のgithubアクセスで、レートリミットに引っかかる。tokenを与えるとanonymousアクセスではなくなるので、上限が引き上げられる。

npm install jspm
jspm registry config github
# この後は対話シェルになる

jspm の設定を作る。yeomanなどを使うと、この辺がすっ飛ばされる。

jspm init

index.htmlapp.js を作り、jspm init で作った public ディレクトリに置く。

index.html
<html>
<script src="jspm_packages/system.js"></script>
<script src="config.js"></script>
<script>
  System.import("app");
</script>
</html>
app.js
console.log("hello");

public ディレクトリがドキュメントルートに見えるようにwebサーバを起動する。何を使ってやっても構わないけれど、例えばここではpythonで。

python3 -m http.server

ブラウザで開くと、javascript console に hello と出力されているのが確認できる。これだけだとモジュールシステムのありがたみ皆無なので、npm:base64-jsを使ってみる。

jspm install npm:base64-js

そしてapp.js側からそれを使う。import文いくつか試行錯誤して、system.jsの期待する方式はこれだなとあたりを付けた。

app.js
import base64 from 'base64-js'
console.log(base64);

ということで、javascript のモジュールの使い方は分かった気分になった。このままだと大量のファイルを読み込むことになるので、最後にまとめる。

jspm bundle app --inject --minify

app.js でインポートしている依存ライブラリがまとめてbuild.jsに取り込まれてminifyされる。injectを指定すると、ローダがbuild.jsから最初に見つけてくれるようになるので、追加の読み込みが発生しない、ということかな。ブラウザをリロードしてもapp.jsbase64-js@0.0.8.jsへのアクセスは発生しないはず。system.jsconfig.jsは相変わらず個別に読み込まれるけど、そこは目をつむる。

つづく

3
3
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
3
3