ホームページ >ウェブフロントエンド >jsチュートリアル >node.js MVCアプリケーションの構築と構造の方法

node.js MVCアプリケーションの構築と構造の方法

Lisa Kudrow
Lisa Kudrowオリジナル
2025-02-10 10:32:17685ブラウズ

How to Build and Structure a Node.js MVC Application

複雑なアプリケーションを構築する場合、アーキテクチャ設計はコードの品質と同じくらい重要です。コードがよく書かれているが、組織構造が良好である場合でも、複雑さが増すにつれて維持とスケーリングが非常に困難になります。したがって、ベストプラクティスは、プロジェクトが開始される前にアーキテクチャを計画し、プロジェクトの目標をガイドし、情報に基づいた選択を行うことです。

Ruby on Railsなどのフレームワークとは異なり、node.jsには、特定のアーキテクチャとコード組織を実施するための事実上の標準フレームワークがありません。これにより、完全なnode.js Webアプリケーションを構築するときにアーキテクチャの選択が比較的無料になりますが、課題も追加されます。

このチュートリアルでは、MVCアーキテクチャを使用して基本的なメモ削減アプリケーションを構築し、node.js 'hapi.jsフレームワーク、sqliteデータベース(sequelize.jsを介して動作)、および効率的なテンプレートエンジンを使用する方法を示します。発達。

コアポイント:

MVC(Model-View-Controller)アーキテクチャを使用してnode.jsアプリケーションを効率的に整理して、保守性とスケーラビリティを向上させます。
  • npmでプロジェクトを初期化し、依存関係を管理するために
  • ファイルを作成します。
  • package.jsonhapi.jsフレームワークを使用してサーバーを構築し、SQLiteデータベースとSequelize.jsを使用してデータを管理します。
  • node.jsルートを定義し、アプリケーションの機能を明確にし、各ルートが正しいHTTPメソッドとハンドラーに関連付けられていることを確認します。
  • コントローラーを実装して、ビジネスロジックを処理し、モデルとビューを接続し、データを取得し、出力形式を決定します。
  • PUGテンプレートエンジンを使用してビューを作成して、HTTP応答をより読みやすく構造化します。
  • hapi.jsの不活性プラグインを使用して静的ファイルサービスを提供し、CSSおよびJavaScriptファイルを効率的に管理します。
  • MVCとは何ですか?

Model-View-Controller(MVC)は、おそらく最も人気のあるアプリケーションアーキテクチャの1つです。 MVCパターンは、グラフィカルユーザーインターフェイスアプリケーションの組織的な問題を解決するために、SmallTalk言語向けにPARCで設計されていました。もともとデスクトップアプリケーションで使用されていましたが、この概念はWeb開発に成功裏に適用されています。

単純に言えば、MVCアーキテクチャには次のものが含まれます

モデル:データベースの処理またはデータ関連の機能の一部。

  • view(view):ユーザーが見るすべて - ページがクライアントに送信されます。
  • コントローラー: Webサイトのロジック、およびモデルとビューの間のブリッジ。コントローラーはモデルを呼び出してデータを取得し、データをビューに渡し、最終的にユーザーに送信します。
  • このアプリケーションにより、プレーンテキストノートの作成、表示、編集、削除が可能になります。機能はシンプルですが、堅実なアーキテクチャにより、将来的に新しい機能を簡単に追加できます。
  • このチュートリアルでは、マシンにnode.jsの最新バージョンをインストールしたことを前提としています。そうでない場合は、関連するチュートリアルを参照してください。 最終アプリケーションコードはGitHubリポジトリにアップロードされており、完全なプロジェクト構造を表示できます。

基礎 node.jsアプリケーションを構築する最初のステップは、すべての依存関係とスクリプトを使用してpackage.jsonファイルを作成することです。このファイルは、npmのinitコマンドを使用して自動的に生成できます。

<code class="language-bash">mkdir notes-board
cd notes-board
npm init -y</code>
が終了すると、使用可能な

ファイルがあります。 package.json

注:これらのコマンドに慣れていない場合は、NPM Getting Guideをご覧ください。

次に、hapi.jsフレームワークをインストールします:

このコマンドはhapi.jsをダウンロードし、
<code class="language-bash">npm install @hapi/hapi@18.4.0</code>
ファイルの依存関係に追加します。

package.json

注:hapi.jsのv18.4.0バージョンを指定しました。これは、ノード8、10、12バージョンと互換性があるためです。ノード12を使用している場合は、最新バージョン(HAPI V19.1.0)をインストールすることを選択できます。

次に、エントリファイルを作成します - すべてを使用してWebサーバーを起動します。アプリケーションディレクトリに

ファイルを作成し、次のコードを追加します。

server.jsこれがアプリケーションの基礎です。まず、厳密なモードを使用し、依存関係を導入し、接続ポートを3000に設定します(最初のルートは任意の数字になります。 world! "メッセージで十分です。最後に、

メソッドを使用してサーバーを起動します。
<code class="language-javascript">"use strict";

const Hapi = require("@hapi/hapi");
const Settings = require("./settings");

const init = async () => {
  const server = new Hapi.Server({ port: Settings.port });

  server.route({
    method: "GET",
    path: "/",
    handler: (request, h) => {
      return "Hello, world!";
    }
  });

  await server.start();
  console.log(`Server running at: ${server.info.uri}`);
};

process.on("unhandledRejection", err => {
  console.log(err);
  process.exit(1);
});

init();</code>

server.start()ストレージ設定

ベストプラクティスは、構成変数を専用ファイルに保存することです。このファイルは、各キーに独立した環境変数が割り当てられているデータを含むJSONオブジェクトをエクスポートしますが、代替値を忘れないでください。 このファイルでは、環境(開発や生産など)に応じて、異なる設定を持つこともできます。たとえば、開発目的でSQLiteのメモリインスタンスを使用できますが、実稼働環境で実際のSQLiteデータベースファイルを使用します。

現在の環境に基づいて設定を選択するのは非常に簡単です。ファイルに開発または生産を含むENV変数もあるため、データベース設定を取得するために以下を実行できます。

したがって、Env変数が開発である場合、dbsettingsにはインメモリデータベースの設定が含まれます。

さらに、開発目的のためにローカル環境変数を保存できる

ファイルのサポートを追加できます。これは、Dotenvのようなnode.jsパッケージを使用して実行できます。Dotenvは、プロジェクトのrootに

ファイルを読み取り、見つかった値を環境に自動的に追加します。

<code class="language-javascript">const dbSettings = Settings[Settings.env].db;</code>

注:

ファイルも使用することにした場合は、

を使用してパッケージをインストールし、.envに追加して、機密情報の投稿を避けてください。 .env

ファイルは次のとおりです .env npm install dotenv次に、次のコマンドを実行して、Webブラウザーで.gitignoreに移動することでアプリケーションを開始できます。

<code class="language-bash">mkdir notes-board
cd notes-board
npm init -y</code>

注:このプロジェクトは、ノードv12.15.0でテストされました。エラーが発生した場合は、更新されたバージョンがインストールされていることを確認してください。

(次の手順、スペースの制限により、次のコンテンツを簡単に要約します。具体的な実装の詳細については、元のテキストを参照してください)

ルートの定義:get、投稿、配置、および削除するファイルのアプリケーションのルートを定義して、メソッドの作成、読み取り、更新、削除を処理するメソッドを削除します。 lib/routes.js

モデルの構築: aを作成して、ノートのデータ構造(日付、タイトル、コンテンツなど)を定義します。モデルをNoteで定義します。 lib/models/note.js

コントローラーを構築します:ルーティングリクエストを処理するコントローラーを作成します。 ホームページの処理、lib/controllers/home.jsメモに関連するCRUD操作の処理。 lib/controllers/note.js

ビルディングビュー:PUGテンプレートエンジンを使用してビューを作成します。 メモのリストを表示しますlib/views/home.pug個々のメモの詳細を表示します。 lib/views/note.pugノートコンポーネントを定義します。 lib/views/components/note.pug

Service Static Files: hapi.jsの不活性プラグインを使用して、静的ファイル(JavaScriptおよびCSS)を提供します。不活性プラグインをに登録し、静的ファイルルートをに追加します。 server.js routes.js

クライアントjavaScript:

クライアントjavaScriptコードを書き込み、モーダルウィンドウを表示/非表示にし、ajaxを使用してフォームを送信します。

概要

このチュートリアルは、hapi.jsおよびMVCアーキテクチャに基づいた基本的なメモ削減アプリケーションを構築します。洗練される詳細(入力検証、エラー処理など)はまだたくさんありますが、これはnode.jsアプリケーションの学習と構築の基盤を提供します。 これに基づいて、ユーザー認証、より複雑なUI、その他の機能を追加できます。

以上がnode.js MVCアプリケーションの構築と構造の方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。