ユゲタです。
「ライブラリ」とかけまして、
「未熟なエルフ」と、ときます。
そのココロは・・・
ハンヨウセイ(汎用性と半妖精)が高いでしょう。
Nodejsライブラリについて
javascriptをそのままサーバーサイドで扱えるNodejsは、なれるとこんなに便利なツールはありません。
apacheやnginx無しでもwebサイトが作れて、プログラミングをjavascriptに統一できるので、フロントエンジニアの人が容易にサイト構築することができるという事で、その構成で作っているwebサービスをいくつか目にしたことがあります。
ただし、こうしたサイトを作る時に、一般公開でアクセスが増えるような処理をするのには、nodejsは負荷に強いわけではなく、サーバー処理スピードはnginxには遠く及ばないので、環境設計をちゃんと行ってから構築するのがいいでしょうね。
そんなnodejsのライブラリを便利につくって、自分の作業効率のために使い回すことは、非常に有効なのですが、nodejsのenvって、システムで固定化されていて、なかなか簡易にセットできないようです。
できれば、起動したプログラム単位で、個別にライブラリディレクトリを指定できれるようにしたいのだが、
以前あった"require.paths"という命令がそれを実現できたのに、いつからか使えなくなってしまったらしい。
できた!
古いバージョンを使い続けることは、システムの堅牢性を考えるとあまりよろしくないので、最新バージョンで動く事を前提に考えていたら、
なんと裏技っぽく実現しているブログ記事を見つけたので、それをご紹介します。
module.exports = (function(){
return "Success";
})();
process.env['NODE_PATH'] = __dirname + '/libs';
require('module')._initPaths();
console.log(require('foo')); // Success
参考 :
https://hokaccha.hatenablog.com/entry/20130523/1369288474
便利にライブラリを作るためのコツ
ライブラリフォルダを指定することができたのであれば、"node_modules"フォルダ以外に自分のライブラリ環境を構築することができるので、次に考えたいのは、ライブラリjs自体の記述方法です。
"module.exports = ***"という記述をしていると、nodejsで使う時には便利なのですが、普通にjavascriptとしてブラウザに読み込むときには使うことはできません。
"modules..."という記述以外では使えないのでしょうか?
やってみます。
console.log("..sample2...");
(function(){
return "Sample-2-loaded !!!";
})();
..sample2...
{}
やはり何かに代入しないとうまく関数化できないようですね。
逆にwebブラウザで使うjavascriptをmodule.exportsに対応させるというのもアリかもしれません。
環境設定したurl(ディレクトリ)を、ajaxで読み込んで変数に代入するという処理でいけそうですね。
なかなか興味深い実験でした。
便利な環境構築は、終わりが見えないですが、次回以降の自分が便利になる姿を夢見て楽しみましょう!!!
0 件のコメント:
コメントを投稿