ノード11.11.14
ノード0.11.14は、
uv
、
http_parser
、
npm
、
openssl
、および
v8
更新を伝達する光を見ました。
この更新には、ほとんどすべてのモジュールの修正が含まれているようです:
cluster
はバージョン0.10にロールバックされ(
setupMaster
動作)、
console.dir
はオプションを受け入れ、イベントは続行できる他のイベント(リークしているイベント)を出力/返すことができます つまり、アップグレードする前に知っておく必要がある多くの変更があります。
11.11.14に含まれている
uv
バージョンはrc1です。 さらに、最新のコミットを確認するために
uv
リポジトリにアクセスしたときに、unicornorex(ユニコーン恐竜)のクールなロゴに気付きました。
svgexport
Ali Shakibaによるsvgexport(GitHub: shakiba / svgexport 、npm: svgexport )は、SVGファイルをPNG、JPEG、およびPDFに変換するためのコマンドラインユーティリティです。
このユーティリティは
PhantomJS
基づいており、作成者はこれを使用してiOSおよびAndroidプロジェクトのアイコンを自動的に変換しました。 これは、非Webネイティブアセンブリチェーンの一部としてNode / Gulp / Gruntをクールに使用するのと似ていますが、以前は疑っていませんでした。
node-webkitgtk
node-webkitgtk(GitHub: kapouer / node-webkitgtk 、License: MIT 、npm: webkitgtk )JérémyLalによるNodeのwebkitgtkバインディングのコレクションです。 製品のプログラミングインターフェースはチェーンで呼び出すことができるため、次のようなことができます。
WebKit().load('http://github.com').png('github.png').pdf('github.pdf')
この製品は問題なく使用するために作成されたため、Webサイトのサムネイルの生成や統合テストなどに役立ちますが、私は使用しようとしませんでした。
悪夢
テストの中で最も脆弱で混乱を招く部分は、完全なスタック統合テストです。 私は
PhantomJS
または
Selenium
に基づいたさまざまなアプローチを使用し
PhantomJS
が、それらはすべて困難を引き起こしていました。
一般的な問題の1つは、対話インターフェイス(API)にあります-特にNodeアプリケーションの標準開発に慣れている場合、
PhantomJS
自体には奇妙なAPIがあります。 そのため、
PhantomJS
とやり取りするためのプログラミングインターフェイスを簡素化することを目的としたNightmare (GitHub: segmentio / nightmare 、ライセンス: MIT 、npm: nightmare )について聞いてうれしく思いました。
Nightmare
を実際に試してみたい場合は、注意してください
PhantomJS
をシステムにインストールする必要があります。 これは、ポピーで
Homebrew
を使用して実行できます。 ここ(メインプロジェクトサイト)では 、他のプラットフォーム用のパッケージを見つけることができます。
Nightmare
は、ターゲットページのDOMでJavaScriptを実行できるチェーン可能なプログラミングインターフェイス(API)があります。 たとえば、
jQuery
でロードされたページがある場合、コールバック中に
evaluate
関数の
$
にアクセスできます。
ここで、サーバーを起動するWebアプリケーション(
app.js
)をダウンロードし、入力フォームに記入してサーバーに送信しました。
evaluate
関数のコードはページで実行されるため、
jQuery
を使用してDOMを操作できます。
var server = require('./app'); var Nightmare = require('nightmare'); new Nightmare() .goto('http://localhost:3000') .type('input[name="email"]', 'alex@example.com') .type('input[name="password"]', 'password') .click('.sign-in') .evaluate(function() { return $('.sign-out').is(':visible'); }, function(visible) { assert(visible, '.sign-out should be visible'); }) .run(function() { server.close(); });
当然、この製品は
PhantomJS
を使用する一般的なタスクに使用できますが、クライアント側で複雑なコードをテストするために
Nightmare
を使用するのは非常にクールだと思われます。
プロトタイプ
アレックスフェルナンデスは、注目のプロトタイプを紹介しました(GitHub: alexfernandez / prototypes 、ライセンス: MIT 、npm: prototypes )。 このモジュールはプロトタイプオブジェクトを変更するため、慎重に使用しますが、いくつかの便利なメソッドを見つけることもできます。
以下に使用例を示します。
'pepitus'.startsWith('pep'); 'hi.there'.substringFrom('.'); // 'there' { a: 1, b: 2 }.forEach(function(value, key) { console.log(key, value); });
node-libpqおよびnode-pg-native
node-libpq(GitHub: brianc / node-libpq 、ライセンス: MIT 、npm: libpq )Brian M. CarlsonのPostgreSQL用クライアントCライブラリのネイティブlibpqバインディングのコレクションです。
このモジュールのタスクは、libpq
提供するCプログラミングインターフェイスを可能な限り近くに反映し、絶対に最小限の抽象化レベルを提供することです。 この製品は、非常に低レベルであり、node.jsを除き、Cから直接取得できるlibpqへの同じアクセスをユーザーに提供することを目的としています。 すべての費用を支払う必要があるため、「ハードウェアに近接」するための費用は、JavaScriptのスタイルでCに似たプログラミングインターフェイスを使用する必要があることです。
Brianは人気のある
PostgreSQL
ライブラリpgの著者であり、最近node-pg-nativeもリリースし
node-libpq
。これは
node-libpq
を使用した高性能
PostgreSQL
モジュールです。
Sean Levyがnode-pg-nativeを紹介してくれたのは、同期ソフトウェアインターフェイスに夢中だからです。
var rows = client.querySync('SELECT NOW() AS the_date') console.log(rows[0].the_date) //Tue Sep 16 2014 23:42:39 GMT-0400 (EDT)
本当に簡単です!
翻訳者から
Alex Young Jungによる 2つの記事tytsとtytsの 翻訳があります 。
しばらくの間、私はオープンソースソフトウェア開発の分野に入ることを決めました。だから誰かがレビューの翻訳のバトンをアレックスから受けたいと思うなら、私とおそらくコミュニティ全体はこれらの翻訳を喜んで見るでしょう。
ご清聴ありがとうございました。