アスベスト・ロングジョンズの着用...
昨日、Packt Publications、JavaScriptを使用したリアクティブプログラミングでの私のタイトル。これは実際にはNode.js中心のタイトルではありません。初期の章は理論をカバーすることを目的としており、後半のコードが多い章は実践をカバーしています。私は読者にウェブサーバーを提供し損なうのは適切だとは本当に思っていなかったので、Node.jsははるかに明らかに明白な選択の。ケースは開かれる前に閉じられました。
Node.jsでの私の経験の非常にバラ色のビューを与えることができたでしょう。代わりに、私が遭遇した良い点と悪い点について正直でした。
ここに関連するいくつかの引用を含めましょう:
警告:Node.jsとそのエコシステムは高温になっています。
私が数学の教師の助手だったとき、私に言われた自明ではない提案の1つは、何かが「簡単」であることを生徒に話さないことでした。その理由は振り返ってみると幾分明白でした:人々が何かが簡単だと言った場合、解決策を見ていない人は、問題を解決する方法が得られないだけでなく、問題が愚かに感じられるかもしれません(さらに)彼らは愚かすぎて理解しにくいです!
Python / Djangoから来る人を困らせるだけでなく、何かを変更するとすぐにソースをリロードする落とし穴があります。Node.jsでは、デフォルトの動作では、1つの変更を行うと、古いバージョンは、時間の終わりまで、または手動でサーバーを停止して再起動するまでアクティブのままになります。この不適切な振る舞いは、Pythonistaを悩ませるだけではありません。また、さまざまな回避策を提供するネイティブNode.jsユーザーを苛立たせます。StackOverflowの質問「Node.js内のファイルの自動再読み込み」には、この記事の執筆時点では200以上の賛成票と19の回答があります。編集により、ホームページは次の場所にある乳母スクリプト、node-supervisorにユーザーを誘導します http://tinyurl.com/reactjs-node-supervisorの。この問題は、新しいユーザーが問題を修正したと思っていたので、愚かに感じる絶好の機会を与えていますが、古いバグのある動作はまったく変わっていません。そして、サーバーをバウンスすることを忘れがちです。私は何度もそうしました。そして、私が伝えたいメッセージは次のようなものです。Node.jsの設計者が適切な動作を提供する理由をここで見なかっただけです。おそらくノードスーパーバイザまたは別のソリューションから少し助けを借りて、それに対処するようにしてください。しかし、あなたが愚かであると感じて離れないでください。あなたは問題を抱えているのではありません。問題はNode.jsのデフォルトの動作にあります。」
議論の末、このセクションは残されました。これは、「簡単だ」という印象を与えたくないからです。私は物事がうまくいくように何度も手を切りましたが、問題を解決し、Node.jsとそのエコシステムを適切に機能させることは簡単なことであり、それも簡単ではないと信じるように設定したくありません。 、あなたは自分が何をしているかわからない。Node.jsを使用して厄介な問題に遭遇しない場合、それはすばらしいことです。もしそうなら、私は「私は愚かです-私に何か間違っているに違いない」という気持ちを捨てないでほしいと思います。Node.jsの扱いに厄介な驚きがあったとしても、馬鹿ではありません。あなたじゃない!それはNode.jsとそのエコシステムです!
付録では、前の章での上昇するクレッシェンドと結論の後で本当に望んでいませんでしたが、エコシステムで見つけたものについて話し、モロニックな文字主義の回避策を提供しました。
完全に適合しているように見え、まだ利用可能かもしれないもう1つのデータベースは、HTML5キー値ストアのサーバー側の実装です。このアプローチには、最も優れたフロントエンド開発者が十分に理解しているAPIの基本的な利点があります。さらに言えば、ほとんどのそれほど良くないフロントエンド開発者が十分に理解しているAPIでもあります。しかし、node-localstorageパッケージでは、辞書構文アクセスは提供されていませんが(localStorage.setItem(key、value)またはlocalStorage.getItem(key)を使用したいが、localStorage [key]ではありません)、完全なlocalStorageセマンティクスが実装されています、デフォルトの5MBクォータを含む— なぜですか?サーバー側のJavaScript開発者は自分自身から保護する必要がありますか?
クライアント側のデータベース機能の場合、Webサイトごとに5MBの割り当ては、開発者が作業できるようにするための寛大で有用な余地です。割り当て量を大幅に減らしても、Cookieの管理に加えて、リンピングを大幅に改善することができます。5MBの制限は、ビッグデータのクライアント側の処理にはすぐには適していませんが、リソースの豊富な開発者が多くのことを行うために使用できる非常に寛大な許容量があります。しかし、その一方で、最近購入されたほとんどのディスクの5MBは特に大きな部分ではありません。つまり、あなたとWebサイトがディスク領域の合理的な使用方法について意見の相違がある場合、または一部のサイトが単に煩わしい場合、実際にはコストはかかりません。あなたの多くはあなたのハードドライブがすでにいっぱいになっていない限り、あなたは沼地のハードドライブの危険にさらされません
ただし、サーバーのコードを記述している場合は、データベースを許容できる5MBを超えるサイズにすることからの追加の保護は不要であることが穏やかに指摘される場合があります。ほとんどの開発者は、乳母として機能し、5MBを超えるサーバー側データを格納することから保護するツールを必要とせず、必要もありません。また、クライアント側でのゴールデンバランシングアクションである5MBの割り当ては、Node.jsサーバーでは少しばかげています。(そして、この付録で説明されているような複数ユーザー用のデータベースの場合、ユーザーアカウントごとにディスク上に個別のデータベースを作成しない限り、ユーザーアカウントごとに5MBではないことが指摘されます。これは、5MBの間で共有されます。すべてのユーザーアカウントを一緒にします。痛いです話題になったら!)ドキュメントには割り当てがカスタマイズ可能であると記載されていますが、StackOverflowの質問と同じように、割り当てを変更する方法を尋ねる1週間前の開発者へのメールには回答がありません。私が見つけた唯一の答えはGithub CoffeeScriptソースにあり、コンストラクターへのオプションの2番目の整数引数としてリストされています。したがって、これは簡単で、ディスクまたはパーティションのサイズと同じクォータを指定できます。しかし、意味のない機能を移植することに加えて、ツールの作成者は、0を変数または関数の「無制限」を意味するものとして解釈するという非常に標準的な規則に完全には従うことができません。この誤った機能を使用する最良の方法は、クォータが無限であることを指定することです。
if (typeof localStorage === 'undefined' || localStorage === null)
{
var LocalStorage = require('node-localstorage').LocalStorage;
localStorage = new LocalStorage(__dirname + '/localStorage',
Infinity);
}
2つのコメントを順番に入れ替える:
JavaScriptを常に全体として使用している人々は不必要に自分の足を撃ち、JavaScriptの一部を立派な言語にしたのは、本質的にダグラス・クロックフォードでした。ここに良い部分があります。他に何かがあることを忘れてください。」おそらく、ホットなNode.jsエコシステムは独自の「Douglas Crockford」を成長させ、「Node.jsエコシステムはコーディングのワイルドウエストですが、実際に見つかる宝石がいくつかあります。これがロードマップです。ここでは、ほとんどすべてのコストで避けるべき領域があります。ここに、あらゆる言語または環境で見られる、最も裕福な給与の一部がある地域があります。」
おそらく他の誰かがそれらの言葉を挑戦として取り、Crockfordのリードに従い、Node.jsとそのエコシステムの「良い部分」や「より良い部分」を書くことができます。コピーを買います!
そして、すべてのプロジェクトの熱意と純粋な労働時間を考えると、この執筆時点で作成された未成熟なエコシステムについての発言を鋭く抑えるために、1、2、3年で保証される可能性があります。「2015年のNode.jsエコシステムにはいくつかの地雷原がありました。2020 Node.jsエコシステムには複数のパラダイスがあります。」