Node.js+expressメッセージボード機能実装例

Node.js+expressメッセージボード機能実装例

メッセージボード

nodejs+express+art-template をベースにしたメッセージボード機能。リスト インターフェイス、インターフェイスの追加、およびメッセージ送信機能が含まれています。

必要なライブラリ

次のpackage.jsonをコピーし、 npm またはyarn install npm installだけです。

package.json に必要な内容は次のとおりです。

{
  "名前": "nodejs_message_board",
  "バージョン": "2021.09",
  「プライベート」:true、
  「スクリプト」: {
    「開始」: 「ノード アプリ」
  },
  「依存関係」: {
    "アートテンプレート": "^4.13.2",
    "デバッグ": "~2.6.9",
    "エクスプレス": "~4.16.1",
    "エクスプレスアートテンプレート": "^1.0.1"
  }
}

オープンソースプロジェクト

このプロジェクトは、[Node.js Study] nodejs オープンソース学習プロジェクトのexpress_message_boardに含まれています。皆様の学習とダウンロードを歓迎します。

実行中の効果はローカルホスト、メッセージのホームページ

ここに画像の説明を挿入ローカルホスト/投稿、

メッセージページを追加

ここに画像の説明を挿入ローカルホスト/言う?

name=xxx&message=xxx、メッセージを送信してホームページにリダイレクトします

ここに画像の説明を挿入

プロジェクト構造

インデックス.html

これはメッセージリストであり、ホームページでもあります。渡された値に基づいてリストをレンダリングします。

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
  <メタ文字セット="UTF-8">
  <title>メッセージボード</title>
  <link rel="スタイルシート" href="/public/css/bootstrap4.css" rel="外部 nofollow" rel="外部 nofollow" >
</head>
<本文>
<div class="ヘッダーコンテナ">
  <div class="ページヘッダー">
    <h1>メッセージボード<small>メッセージリスト</small></h1>
    <a class="btn btn-success" href="/post" rel="external nofollow" >メッセージを残す</a>
  </div>
</div>
<div class="コメントコンテナ">
  <ul class="リストグループ">
    {{各コメント}}
    <li class="リストグループ項目">
      {{$value.name}} はこう言っています: {{$value.message}}
      {{$value.datetime}}
    </li>
    {{/それぞれ}}
  </ul>
</div>
</本文>
</html>

投稿.html

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>メッセージボード</title>
    <link rel="スタイルシート" href="/public/css/bootstrap4.css" rel="外部 nofollow" rel="外部 nofollow" >
</head>
<本文>
<div class="ヘッダーコンテナ">
    <div class="ページヘッダー">
        <h1><a href="/" rel="external nofollow" >メッセージボード<small>メッセージを追加</small></a></h1>
    </div>
</div>
<div class="コメントコンテナ">
    <フォームアクション="/say" メソッド="GET">
        <div class="フォームグループ">
            <label for="name">あなたの名前</label>
            <input type="text" id="name" name="name" class="form-control" placeholder="お名前を入力してください" required minlength="2" maxlength="10">
        </div>
        <div class="フォームグループ">
            <label for="message">メッセージの内容</label>
            <textarea id="message" name="message" class="form-control" placeholder="メッセージを入力してください" cols='30' rows='10' required minlength="5" maxlength="20"></textarea>
        </div>
        <button type="submit" class="btn btn-default">公開</button>
    </フォーム>
</div>
</本文>
</html>

ルート/index.js

ルーターはこちら

定数 express = require('express');
定数ルーター = express.Router();


//ホームページのメッセージリストデータをシミュレートする var comments= {"comments":[
    {name:"AAA",message:"どのエディタを使用していますか? WebStorem または VSCODE",datetime:"2021-1-1"},
    {name:"BBB",message:"今日はいい天気ですね。釣りかコードか",datetime:"2021-1-1"},
    {名前:"Moshow",メッセージ:"zhengkai.blog.csdn.net",日時:"2021-1-1"},
    {name:"DDD",message:"ha、haha、hahahaの違い",datetime:"2021-1-1"},
    {name:"EEE",message:"王守義十三香辛料またはiPhone十三香辛料",datetime:"2021-1-1"}
]}

/* zhengkai.blog.csdn.net - 静的ルーティングホスティング*/
router.get('/', 関数(req, res, next) {
    res.render('index', コメント);
});
router.get('/post', 関数(req, res, next) {
    res.render('投稿', コメント);
});
router.get('/say', 関数(req, res, next) {
    console.log(要求クエリ)
    コンソールログ(req.url)
    const コメント = req.query;
    コメント.datetime='2021-10-01';
    comments.comments.unshift(コメント);
    // URL サフィックス localhost なしでホームページにリダイレクトします
    res.redirect('/');
    // URL サフィックス localhost/say?xxxx=xxx を使用して、ホームページを直接レンダリングします。
    //res.render('index', コメント);
});

モジュール.exports = ルーター;

アプリ

ここでは全体的な制御として

//モジュールをロード const http=require('http');
定数 fs = require('fs');
url を require('url') します。
const テンプレート = require('art-template');
定数パス = require('path');
定数 express = require('express');
定数ルーター = express.Router();
express() は、定数です。


//エンジン設定を表示
app.set('views', path.join(__dirname, 'views'));
app.set('ビューエンジン', 'html');
app.engine('html',require('express-art-template'));

app.use('/public',express.static(path.join(__dirname, 'public')));

const indexRouter = require('./routes/index');
app.use('/', インデックスルーター);


//監視オブジェクトを作成する app.listen(80,function(){
  console.log('zhengkai.blog.csdn.net プロジェクトが正常に開始されました http://localhost')
})

これで、node.js + express メッセージボード機能の実装例に関するこの記事は終了です。関連する node.js express メッセージボードコンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JSがメッセージボード機能を実現
  • jsp メッセージ ボード ソース コード 3: jsp 初心者向け。
  • js で実装された折りたたみ式メッセージボード (ソースコードのダウンロードあり)
  • ReactJS と Python の Flask フレームワークを使用してメッセージ ボードを作成するコード例
  • JSで簡単なメッセージボードを実装する(ノード操作)
  • Web メッセージボード機能を実装する JavaScript
  • メッセージボード機能を実現するJavaScript

<<:  docker compose idea CreateProcess error=2 システムは指定されたファイルを見つけることができません

>>:  Linux statコマンドの使用

推薦する

Vueはデータを初期状態にリセットします

場合によっては、データ内のデータを再利用する必要がありますが、データ内のデータはさまざまなフォーム、...

面接でよく聞かれる Vue 修飾子 13 個

目次1. 怠惰な2.トリム3.番号4.停止5. キャプチャ6.自分7.一度8.予防する9.ネイティブ...

CSS マルチカラムレイアウトソリューション

1. 固定幅+適応型期待される効果: 左側は固定幅、右側は適応幅 共通コード: html: <...

Docker で Nginx イメージ サーバーを構築する方法

序文一般的な開発では、画像をディレクトリにアップロードし、ディレクトリとファイル名を連結してデータベ...

JavaScript 正規表現の説明

目次1. 正規表現の作成2. 使用モード2.1 シンプルモードの使用2.2 特殊文字の使用3. 応用...

コピー&ペーストはパッケージングの敵です

OO、デザイン パターン、および多くのオブジェクト指向の原則について話す前に、まず 1 つのことを習...

MySQL 8.0.21 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0.21のインストールと設定方法を記録してみんなで共有します。 1. ダウンロード1...

Linux での scp および sftp コマンドの詳細な説明

目次序文1. SCPの使用法2. sftpを使用する3. scp と sftp の違いは何ですか?ど...

Brotli圧縮アルゴリズムを有効にするNginxの実装プロセスの詳細な説明

序文Web アプリケーションでは、トラフィックを節約し、転送データのサイズを縮小し、転送効率を向上さ...

CSS でフッターの「下部吸収」効果を実現

よく遭遇する問題: 下部の要素を「下部に貼り付ける」効果を CSS でどのように実現するか。この記事...

Linux システムに 3 つ以上の Tomcat をインストールする (詳細な手順)

複数のTomcatをインストールする場合は、システムにJDKがインストールされている必要があり、 T...

MySQL例外に対する一般的な解決策をいくつか分析する

目次序文1. コードによって設定されたデータベース名またはパスワードがローカルデータベースと一致して...

リンクをクリックしたときに表示される点線のボックスを削除するいくつかの方法

削除する方法はいくつかあります:リンクを直接追加するonfocus="this.blur(...

Docker コンテナのネットワーク設定によく使われるコマンドの詳しい説明

基本的なネットワーク構成Docker はイメージに基づいて複数のコンテナを「開く」ことができ、各コン...

MySQL 5.5 の導入に関する問題

MySQL の導入現在、会社ではプラットフォーム運用を通じてMySQLを導入しています。金曜日、プラ...