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

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

Feb 10, 2025 am 10:32 AM

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コマンドを使用して自動的に生成できます。

mkdir notes-board
cd notes-board
npm init -y
ログイン後にコピー
ログイン後にコピー
が終了すると、使用可能な

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

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

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

このコマンドはhapi.jsをダウンロードし、
npm install @hapi/hapi@18.4.0
ログイン後にコピー
ファイルの依存関係に追加します。

package.json

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

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

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

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

メソッドを使用してサーバーを起動します。
"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();
ログイン後にコピー

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

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

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

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

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

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

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

const dbSettings = Settings[Settings.env].db;
ログイン後にコピー

注:

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

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

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

mkdir notes-board
cd notes-board
npm init -y
ログイン後にコピー
ログイン後にコピー

注:このプロジェクトは、ノード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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptの進化:現在の傾向と将来の見通し JavaScriptの進化:現在の傾向と将来の見通し Apr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptエンジン:実装の比較 JavaScriptエンジン:実装の比較 Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

JavaScript:Web言語の汎用性の調査 JavaScript:Web言語の汎用性の調査 Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合) next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合) Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

C/CからJavaScriptへ:すべてがどのように機能するか C/CからJavaScriptへ:すべてがどのように機能するか Apr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合) next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合) Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

See all articles