ども、コツツミです。
「あ”〜」だの「ぎゃ〜」だのいいながら作っているNext JSについてですw
マニュアルこれから書くので(笑)下書きもかねて、ちょっとメモっていこうかなとおもって、やっと重い腰を・・・。
Next JSってなんですか?
はい、よく聞かれますがw
node(Node JS)用の、アプリケーションサーバーです。
「んじゃ、アプリケーションサーバーってなにすんの?」ってことですが、nodeを使ったことのある人はわかると思いますが、Webサーバーは自作する必要があるんですね。
様々なミドルウェアもでてるので、ひっぱってきて自分で作れるっていうのが一つのおもしろさかな、と思います。
でも、「これから、アプリケーションをサーバーサイドJavaScriptでやろう!」と思っている人が、いきなり突きつけられるつらい現実の1つでもあると思います。
Next JSは、まず、Webサーバーとしての機能を提供します。
「じゃぁ、Webサーバーなの?Apacheみたいなもん?」
いいえ違います。
Next JSは、Node + Ext JS からNext JSという名前にしました。
Node上で、Ext JS 4のクラスアーキテクチャーと似たような記述ができるようにしたものです。
さらに、フレームワーク構造を取り入れ、開発を即座に開始できます。
ようするに、こいつ入れて起動すれば、「Apache + PHP + フレームワーク」みたいな状態をnodeで実現しようとしているものです。
どうやってインストールするの?
はい、まず2点。
1.nodeがインストールされていること。
2.npmがインストールされていること。
です。
マニュアルには、詳しくインストールから記述していきたいなぁと思っていますが、今日は省きます。
ググればわかるべ。
ちなみに、開発は最新版の0.5.2で行っています。
[sudo] npm install NX
でインストールが完了します。
Next JSはプロセスをデーモン化したり、ワーカーで動作させるのがデフォルトになっています。
もちろん、変更できますが、このデーモン化するプログラムは、npmでインストールするときに自動的にコンパイルされます。
もし、ソースコードから直接持ってきた場合は、展開したディレクトリに、wscriptというファイルがあります、同じディレクトリで
node-waf configure;
node-waf;
とすれば、必要なモジュールがコンパイルされますが、可能な限りnpmでインストールしてください。
どうやって使うの?
はい、インストールが終わっているってことは、NXというモジュールが読み込めるようになっています。
サーバーやコンテンツを配置するディレクトリをまずきめます。
どこでもいいですが、仮に
/home/nextjs/www
としましょう。
www下に、server.jsという名前で(名前は何でも良いですが)ファイルを作成します。
中に、次のようにコードを記載します。
1 2 3 4 5 |
require('NX'); NX.service({ }); |
保存します。
そして、wwwディレクトリの下にpublicというディレクトリを作成しましょう。
publicはApacheでいうドキュメントルートです。
この下に任意のファイルを配置します。
試しにindex.htmlでもおいてみてください。
そして、コマンドラインから
1 2 |
node server start |
とwwwディレクトリで実行します。
そして
1 2 |
http://localhost:3000/ |
にアクセスしてみてください。
publicに配置したindex.htmlが参照できるはずです。
ちなみに、サーバーを停止するには、
1 2 |
node server stop |
とします。
「nodeって、http.createServerでサーバー作って・・・実行した、コマンドライン止まるし、Ctrl+Cとかで終わらせたら終わるんじゃないの?」
っておもった方は、先ほどの説明にもありますが、プロセスがデーモン化されているため、Apacheのように起動・停止ができます。
「え、開発してるときは、普通がいいよ。」
ってひとは、
1 2 3 4 5 |
require('NX'); NX.service({ enableDaemon: false }); |
としてください。
コンソールがちゃんと止まるはずです。
さらに、Next JSはデュアルコア、クァッドコアなどのマルチコアCPUの場合、自動的にワーカーを起動してパフォーマンスを最大まで引き出そうとします。
つまり、createServerがコアの数だけ作成されて連携して動いているんですね。
「いやいや、開発中は1つでいいんです。」
ってひとは、さらに
1 2 3 4 5 6 |
require('NX'); NX.service({ workers: false, enableDaemon: false }); |
としてください。
workersはワーカーの数を設定します。
何も設定されていないと、コアの数だけワーカーを作成しますし、任意の数値を入力することも可能です。
簡単だべ?w
これだけ?!
いえいえ、んなわけありません。
実は、ここまで動作させている時点で、アクションと呼ばれるフレームワークの実行する機能が動作しています。
さらに、データベースへの接続や、テンプレートエンジンの利用、MVC構造が提供されています。
アクションの説明は、次にしましょう。
Pingback: NextJSの勉強再開するぞ | Sunvisor Lab. Ext JS 別館