Node.jsを使用してブラウザに直面しているアプリケーションを作成することは面倒です。 express.js. はAです JavaScriptフレームワーク Node.js環境でホストされているシングルページとマルチページアプリケーション専用。
それはあなたがすでに慣れ親しんでいるnode.jsの機能を不明瞭にしないという基本的なWebアプリケーションの薄型化された層を提供します。また、HTTPユーティリティメソッドとMiddleWareの使用準備完了のおかげで、堅牢なAPIを作成するのに最適です。
より少ない複雑なオプションが必要な場合は、コーディングなしでサイトを作成できます。 ウェブサイトビルダー 。いずれにせよ、あなたがあなたを得ることを確認してください ウェブホスティング サービス権。始めたいですか?これがExpress.jsについて知る必要があるものです。
Express.jsは「非ピニー化」であることを誇りにしています。つまり、フレームワークはアーキテクチャ、テンプレートエンジン、マークアップエンジンに関して開発者がミックスして一致させることができます。悲しいことに、大きな力が大きな責任があります。
Express Developerチームは、プロジェクトジェネレータを導入して打撃を和らげようとしています(チームと一緒にデザインしている場合は、最善を展開する場合 クラウドストレージ 物事をまとめるために)。それはあなたのワークステーションに来て、NPMパッケージの形で来て、次のフレームワークで私たちの実験を助けます。
Tamhan @ Tamhan-ThinkPad:〜/デスクトップ/
もの/ 2018AUG / FutureExpressJS /
ワークスペース$ sudo NPMインストール
Express-Generator -G
ジェネレータには数十のプロジェクトオプションも含まれています - この手順に付属の図は完全ヘルプ出力を示しています。簡単にするために、デフォルト設定に基づいてプロジェクトに自分自身を制限します。の生成プロセスを開始します。
Tamhan @ Tamhan-ThinkPad:〜/デスクトップ/
もの/ 2018AUG / FutureExpressJS /
ワークスペース$ Express FutureTest
警告:デフォルトのViewエンジンは将来のリリースではJADEではありません。
完了したら、現在の作業ディレクトリに 'FutureTest'という新しいフォルダが含まれています。それは私たちのテストプロジェクトの本拠地であり、NPMのパッケージダウンロードコマンドを使用して構成する必要があります。書き込み時に、ジェネレータにはJade View Generatorが含まれています。プロジェクトは、近い将来これを変更する予定で、意図したビューエンジンを選択するパラメータを渡すことを義務付けています。あるいは、PUGの使用を要求する - それはJadeエンジンの公式の後継者です。
CD FUTURETEST /
NPMインストール
プロジェクトジェネレータがそのことをしたことを、選択したエディタでapp.jsを開いましょう。そのような要約 - 構造は、次のようにそれ自体を提示します。
var indexRouter =要求( './ ./
ルート/インデックス ');
var userseRouter =要求( './
ルート/ユーザー ');
var app = express();
//エンジンの設定を表示します
app.set( 'views'、path.join(__
DirName、 'Views'))。
app.set( 'View Engine'、 'Jade');
app.use(ロガー( 'dev'));
app.use(express.json())。
app.use(Express.URLENCODED({
拡張:偽}))
app.use(cookieparser())。
app.use(express.static(パス。
join(__ dirname、 'public'))));
Express.jsは非常にモジュール式です。 App.jsはエントリポイントとして機能します。ここで、1つ以上の 'use()'関数は、さまざまな要求を処理することを目的としたコンポーネントの追加を可能にします。 'set()'の呼び出しをエンジン内のパラメータを調整できます - そのうちの1つが前の手順で説明したJade View Engineのインストールです。
Webコンテンツの実際の排出量は、ルータクラスで行われます。簡潔にするために、index.jsに自分自身を制限しましょう。
VAR Express =要求( 'Express')。
var router = express.router();
Router.get( '/'、関数(Req、Res、
次) {
res.render( 'index'、{title:
'Express'});
});)
module.exports =ルーター
'get()'には、対応するイベントが発生するたびに呼び出される抹消文字列とイベントハンドラがあります。私たちの場合、選択されたテンプレートエンジンのレンダリング方法は、ログインしたユーザーのブラウザにコンテンツを返すように言われます。
この時点で、私たちは初めてスピンのためにウェブサイトを取る準備ができています。 Express.jsインストールを含む端末に戻り、Debug Flag Setを使用してNPMを起動します。
debug = myapp:* npm start
完了したら、Project Generatorによって作成された足場を見るために、選択したブラウザにhttp:// localhost:3000を入力します。完了したら、を押します Ctrl. + c ウィンドウを閉じてコマンドラインインタプリタへのコントロールを閉じるには - これがデバッグWebサーバも閉じることに注意してください。
簡単にするために、Webアプリケーションが通常一連のエントリポイントで構成されていることに同意しましょう。 Express.jsはルータクラスを介してこれらを処理します - それを受信要求に応答して呼び出されるメソッドのリポジトリとして考えます。
アプリケーションに新しいエンドポイントを追加することは、キューに新しいワーカーを追加することによって実行されます。私たちの自動生成された例は2つのルータータイプを作成し、それぞれ 'require'メソッドを使用して上げられます。
var indexRouter =要求( './ ./
ルート/
インデックス ');
var userseRouter =要求( './
ルート/
ユーザー ');
次のステップで、 'app.use'はルータを登録し、それらを要求文字列に接続します。既存のURLがシステムに入力されている場合、このコードはさらに呼び出されるエラーハンドラを追加します。
App.Use( '/'、IndexRouter);
app.use( '/ Users'、UsersRouter);
app.use(関数(Req、Res、Next)
{
次(CreateError(404));
;
users.jsを開き、以下のようにそのコードを変更します。
Router.get( '/ user1'、関数(Req、
res、
次) {
res.send( '未来とこんにちは
1 ');
});)
Router.get( '/'、関数(Req、Res、
次) {
res.send( 'Aに応答する
資源');
;
Express.jsへの新しいルートを追加することは機械的プロセスです。選択したルータオブジェクトをつかみ、ハンドルに対応するメソッドを呼び出します。次に、 'app.use'に登録されている 'offset'に追加される文字列を渡します。その瞬間以降、http:// localhost:3000 / users / user1とhttp:// localhost:3000 /ユーザー/有効な応答を返す。
Express.jsは 'Get'リソースの処理に限定されないことに注意してください。 'POST()'、 'put()'と 'delete()'は、従来の4つのHTTPリクエストを処理します。最後に、 'req'オブジェクトはリクエストヘッダーへのアクセスを提供します - パラメータやクライアント情報を解析するときにそれを良い使用にします。
手作業でルートを追加すると、プログラムの複雑さが成長するにつれて面倒になります。 express.jsは、ワイルドカードと正規表現の両方のサポートを導入することによってこの問題のために収まる。たとえば、文字シーケンス犬を含むさまざまな文字列と一致するように正規表現を使用する次の宣言を調べてください。
app.get(/* dog $ /、関数(Req、
res){
...})
4つのHTTPリクエストを処理している間は、誰かに十分であるべきである(HAT TIPからBill Gatesへ)、express.jsも追加のプロトコルを扱うことができます。 Express-WS このセクションのための特においしい候補です - WebSocket通信を含めるためにexpress.jsのreactを拡張します。
プラグインがMain Express.jsプロジェクトに追加されると、それを有効にすると、 'require'呼び出しによって達成されます。それはすべてのメソッドを含むヘルパーオブジェクトを返します - ルータとプラグインの間の接続を確立するためにそれを呼び出します。
var expressws =要求( 'Express-
WS ')
アプリ);
その後、「WS()」という新しいメソッドを呼び出して、WebSocketテクノロジに基づいて新しいルートを追加できます。
app.ws( '/'、function(ws、req){
WS.ON( 'メッセージ'、機能(MSG)
{
console.log(msg);
});)
console.log( 'socket'、req。
テスト); ;
プロトタイプは、「WS」オブジェクトが存在するため、通常のルートとは異なります - 接続を担当するクライアントに接続されている基盤となるWebSocketインスタンスへのアクセスを提供します。
Node.jsに基づくことは、Webベースのアプリケーションに取り組むときに、リッチプラグインの生態系がコマンドにあることを意味します。たとえば、SQLデータベースとNOSQLデータベースへのアクセス - 通常は非常に面倒なタスク - データベースベンダによって提供されるプラグインを使用して処理できます。実際の展開は、必要なNPMモジュールをインストールするのと同じくらい簡単です - コードがRedisデータベースにアクセスする場合は、次のものを追加してください。
var redis =要求( 'redis')
var client = redis.createClient()
client.set( 'stringkey'、 'Aval'、
redis.print)
。 。 。
もちろん、メモリ内SQLiteもサポートされています。
var sqlite3 = require( 'sqlite3')。
冗長()
VAR DB =新しいSQLite3。
データベース( ':メモリ:')
db.SERIALIZE(関数(){
db.run( 'table loremの作成
(情報テキスト) '
node.js統合はデータベースプラグインに限定されないことに注意してください。冒険的な開発者は、Tesselのような製品を含むことだけで、それによって対話することができるWebアプリケーションを作成することができました。 モノのインターネット デバイス
単純なプログラムと実際のプログラムが異なる1つの領域は、ビューの作成です。小さな例のプロジェクトは通常、手作りの文字列を使用しているが、HTMLの大きな帯を接続されたものに組み立てることは非常に厄介です。
テンプレートエンジンはきちんとした回避策を提供します。それらは事前定義されたスキーマファイルの作成を許可します。これはプログラム的に実行されます。
プログラム例の例では、ビューは.Jadeファイルにあります。開封指数は次のような構造を明らかにする。
レイアウトを拡張します
コンテンツをブロックします
h1 =タイトル
Pへようこそ#{title}
カーリブラケットに囲まれた式は、実行時に値を置き換えるテンプレートフィールドとして機能します。 index.jsはパラメータオブジェクトを使用してレンダリングを呼び出し、このステップに付属の図に示す開始ページのレンダリングにつながります。
Router.get( '/'、関数(Req、Res、
次) {
res.render( 'index'、{title:
'Express'});
;
ほとんどのテンプレートエンジンは、アイテムテンプレートを備えたときにアレイを解析することもできます。この場合、ARRAYのすべてのラインがDOMモデルの1つのインスタンスで表示されます.Androidで見つかったリスト表示モデルとの類似点は純粋に一致しています。 Express.jsは事前定義されたテンプレートエンジンに限定されません。何らかの理由であなた自身を転がすのように感じるべきです、単に概説された手順に従う ここに - 原則として、1つの機能をすべて上書きする必要があります。
express.jsアプリケーションは、CSSファイルと写真を含む傾向があります。レンダリング関数を介してこれらを提供することは非効率的です - よりスマートな方法で彼らの従来のHTTP要求を使って彼らの陽気な方法でそれらを送ることが含まれます。これは、「Express.Static()」関数を介して実現できます。これは、エクスポート用のフォルダ全体をマークできます。
App.Use(Express.Static( 'public'))
app.use(express.static( 'ファイル'))
最後に、私たちがミドルウェアという用語を間もなく言及させます。 Express.js Parlanceでは、ミドルウェアは、反対側のフローチャートに自分自身を統合する1つ以上のコンポーネントのセットです。そして、それらがルーティングシステムを通過するときに要求を変更するために使用されることができます - 正しく実装されたときに、無限の機能を達成することができます。
さらに、いくつかの準備ができているコンポーネントを見つけることができます ここに - 大規模な開発プロジェクトに着手する前にこのサイトをご覧ください。
Express.jsベースのアプリケーションのテストは簡単です。ページが第三者からアクセス可能になるようになると問題が発生します.Node.js環境によって生成されるため、WebホスティングサービスへのFTP展開に静的イメージが適合する方法はありません。
理論的には、ラズベリーPI、OrangePi、専用サーバー、またはクラウドサービスからレンタルされた仮想マシン、または仮想ホスティングを提供するWebホストプロバイダの使用には何もありません。ただし、フルバーチャルマシンを借りると、実行環境とオペレーティングシステムを最新の状態に保つ責任があります。
このタスクがあなたの好みではない場合、プラットフォームAS-Aサービスプロバイダは、より魅力的な(ほとんどの場合、かなり価格)の選択になることができます。
多くの開発者はHerokuを検討して、このボックスウトに付随する図には、Node.jsホスティングに関連するすべてのもののゴールドスタンダードになることを考えています。
しかし、これは真実の少し不公平です。これらすべてのシステムでは、主な問題は取り扱いです - Azureはその遅い展開では知られています。その他のプロバイダーは、非常に複雑な構成システムの使用困難なバックエンドサービスを備えた負担が困難です。
さらに、サポートされているversion of node.js環境はプロバイダとプロバイダとは異なります。もちろん、トピックを深さでカバーするのに十分なスペースがありません。訪問 Mozillaの展開チュートリアル とexpress.js ' 性能と信頼性 そして 安全 関与するいくつかの問題についてのベストプラクティスページ。より多くのベストプラクティスを手ばすためのプロバイダのドキュメンテーションを確認してください。
Express.jsの開発サイクルはスムーズからはほど遠いです。開発者は、クライアントコードの書き換えを必要とする頻繁なAPI変更でよく知られています。 3.xから4.xへのスイッチは特に痛いものでした。そのため、5.xの差し迫ったリリースでは、不快感を感じているのはかなりの数の2つのリリースです。
Express.js 5.0がいくつかの破断の変化をもたらしながら、それらの影響はより限られています。まず最初に、Real-Ifコードで使用している場合は、既に廃止予定の関数のセットが削除されます。
View Enginesの設計者は「Res.Render()をチェックする必要があります。フレームワークのバージョン5は、非同期レンダリングを強制することによってパフォーマンスを強化します。
それに加えて、一連の夏の改善と変化 ここに 以前のバージョンからのいくつかの絶滅の特長の戻りを見ています - さらに、いくつかの長年のバグは新しいリリースで修正されます。
最後に、新しいバージョンをすでに試すことができることに注意してください。ソースコードのコピーを作成し、ターミナルをつかみ、次のコマンドを入力して、アーカイブの価値のないブリードエッジJavaScriptをダウンロードします。安全になる。
$ NPM Install Express @> = 5.0.0-
Alpha.1 - Save
この記事はもともとCreative Web Design Magazine Web Designerの第279号に発行されました。 ここに問題279を購入してください または ここでWeb Designerを購読してください 。
関連記事:
Photoshopでフォトコラージュを作る方法を学ぶと、さまざまな状況が多いです。個々の写真は間に合うようにシングルモーメントをキャプチャ�..
(画像クレジット:Renaud Rohlinger) Parallax Scrollingを持つサイトは、その理由で普及し続�..
このプロジェクトはさまざまな部分に分割されます。私たちはHerokuの概要を述べる、3.jsでPhysijs�..
先週Adobeは、それを自分の役に立つように多くのビデオをリリースしました。 最新のアップロードの中には、イラストレーターで3D..