Vue はチャット ボックスで絵文字を送信する機能を実装します

Vue はチャット ボックスで絵文字を送信する機能を実装します

vueチャットボックスで絵文字を送信し、vueインターフェースで絵文字を送信するための具体的なコードは参考用です。具体的な内容は次のとおりです。

1. メッセージを送信するときに、メッセージが絵文字であるかどうかを判別し、絵文字の種類: 3、内容: [love] としてデータベースに保存します。
2. チャット履歴を取得する際にtype===3を判断して式を処理します。

<img v-else-if="chatItem.type === 3" :src="emojiUrl + emojiMap[chatItem.content]" style="width:25px;height:25px" />

1.テキスト要素.vue

<テンプレート>
  <div class="テキスト要素ラッパー" >
    <div class="テキスト要素">
      <div :class="isMine ? '要素送信' : '要素受信'">
        <p>{{ 日付 }}</p>
        <!-- テキスト -->
        <span>{{ チャットアイテム.content }}</span>
        <span v-if="chatItem.type === 1">{{chatItem.content }}</span>
        <!-- 式 -->
        <img v-else-if="chatItem.type === 3" :src="emojiUrl + emojiMap[chatItem.content]" style="width:25px;height:25px" />
      </div>
      <div :class="isMine ? '送信画像' : '受信した画像'">
        <img :src="chatItem.from_headimg" 幅="40px" 高さ="40px"/>
      </div>
    </div>
  </div>
</テンプレート>

<スクリプト>
  // '../../../untils/decodeText' から decodeText をインポートします
  '../../../untils/common' から { getFullDate } をインポートします
  '../../../untils/emojiMap' から {emojiMap, emojiUrl} をインポートします。

  エクスポートデフォルト{
    名前: 'テキスト要素',
    プロパティ: ['chatItem', 'isMine'],
    データ() {
      戻る {
        絵文字マップ: 絵文字マップ、
        絵文字URL: 絵文字URL,
      }
    },
    計算: {
      // コンテンツリスト() {
      // decodeText(this.chatItem) を返す
      // },
      // タイムスタンプ処理日 () {
        getFullDate を返します(新しい Date(this.chatItem.time * 1000))
      },
    }
  }
</スクリプト>

<スタイルスコープ>
  .テキスト要素ラッパー {
    位置: 相対的;
    最大幅: 360px;
    境界線の半径: 3px;
    単語区切り: 単語区切り;
    境界線: 1px実線rgb(235, 235, 235);
  }

  .テキスト要素 {
    パディング: 6px;
  }

  .要素受信 {
    最大幅: 280px;
    背景色: #fff;
    フロート: 右;
  }
  .受信した画像{
    フロート: 左;
    右パディング: 6px;
  }

  .要素送信{
    最大幅: 280px;
    背景: rgb(5, 185, 240);
    フロート: 左;
  }
  .send-img {
    フロート: 右;
  }
</スタイル>

Vue インターフェースで絵文字を送信する主なアイデアは次のとおりです。

<テンプレート>    
 <section class="ダイアログセクション clearfix">
            <div class="row clearfix" v-for="(item,index) in msgs" :key = index>
                <img :src="item.uid == myInfo.uid ? myInfo.avatar :otherInfo.avatar" :class="item.uid == myInfo.uid ? 'headerleft' : 'headerright'">
                <p :class="item.uid == myInfo.uid ? 'textleft' : 'textright'" v-html="customEmoji(item.content)"></p>
            </div>
        </セクション>
         <div id="emoji-list" class="flex-column" v-if="emojiShow"> //まず、これを使用して絵文字ポップアップウィンドウを表示するかどうかを決定します<div class="flex-cell flex-row" v-for="list in imgs">
                <div class="flex-cell flex-row cell" v-for="リスト内の項目" @click="inputEmoji(item)">
                  <img :src="'./emoji/' + アイテム + '.png'">
                </div>
              </div>
            </div>
</テンプレート>
<スクリプト>
import { sendMsg } from "@/ws"; //これは長い接続です import _ from "lodash"; //これはjsの非常に強力なライブラリです import eventBus from '@/eventBus' //これは子と親の間で渡されるパブリックファイルです console.log(emoji)
エクスポートデフォルト{
  データ() {
    this.imgs = _.chunk(emoji, 6) // これは、lodash ライブラリの chunk メソッドを呼び出して、6 つの要素を配列に分割します。これは、絵文字配列内の 2 次元配列にすぎません。 return {
      emojiShow: false // 最初は、クリック ボタンはデフォルトで表示されません。クリック ボタンを表示するには、@click='emojiShow=emojiShow' と記述します。};
  },
  メソッド: {
    customEmoji(text) { //この関数は、渡された名前を画像に変換するためにサーバーによって使用されます。 return text.replace(/\[([A-Za-z0-9_]+)\]/g, '<img src="./emoji/$1.png" style="width:30px; height:30px;">')
    },
    入力絵文字(pic) {
      this.content += `[${pic}]` //渡された名前は画像に変換されます}
};
</スクリプト>
<スタイルスコープ>
@import '../../assets/css/dialogue.css';

#絵文字リスト {
  高さ: 230px;
  背景: #fff;
}
#絵文字リスト.セル{
  行の高さ: 13vh;
  右境界線: 1rpx 実線 #ddd;
  ボーダー下部: 1rpx 実線 #ddd;
}
.flex-row {
  ディスプレイ: フレックス;
  flex-direction: 行;
  コンテンツの中央揃え: 中央;
  アイテムの位置を中央揃えにします。
}
.flex-column {
  ディスプレイ: フレックス;
  flex-direction: 列;
  コンテンツの中央揃え: 中央;
  アイテムの位置を揃える: ストレッチ;
}
.flex-セル{
  フレックス: 1;
}
.セル画像{
  幅: 35px;
  高さ: 35px;
}
</スタイル>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue2ベースのモバイルQQを模倣したシングルページアプリケーション機能(チャットボットへのアクセス)

<<:  Zabbixで監視する必要があるホストを追加するための詳細な手順

>>:  Nginx インストール エラーの解決方法

推薦する

HTML内のフレームセットタグが正常に表示されない原因の解析と解決方法

<frameset></frameset>は皆さんもよくご存知のものです。こ...

JSでユーザーを追跡する方法

目次1. 同期AJAX 2. 非同期AJAX 3. ユーザーのクリックを追跡する4. リバウンドトラ...

HTMLページ埋め込み動画とJSコントロール切り替え動画例の詳しい説明

まず、ページにビデオを埋め込むための HTML コードは次のとおりです。コードをコピーコードは次のと...

CentOS7 は Docker のバージョン 19 をデプロイします (簡単なので、従ってください)

1. 依存パッケージをインストールする [root@localhost ~]# yum insta...

Node.jsはブレークポイント再開を実装する

目次ソリューション分析スライス履歴書のダウンロード具体的な解決プロセス論理的分析フロントエンドサーバ...

JSはユーザー登録インターフェース機能を実装します

この記事の例では、ユーザー登録インターフェース機能を実装するためのJSの具体的なコードを参考までに共...

VMware 仮想マシンのインストール Apple Mac OS の超詳細なチュートリアル

目次要約する仕事の都合で Apple の Mac OS に対応するソフトウェアをインストールする必要...

ページングのどのページでMySQLのレコードをクエリするか

序文実際には、次のような問題に遭遇する可能性があります。特定のレコードの ID がわかっていて、その...

Docker、プレーヤー機能を備えたCMSオンデマンドシステムを構築

目次文章1. 機械を準備する2. Dockerをインストールする1. 依存パッケージをインストールす...

Vue-Routerのインストールプロセスと原理の詳細

目次1. フロントエンドルーティングの実装原則2. vue-Routerの基本的な使い方2.1. イ...

ZFS とは何か? ZFS を使用する理由とその機能

ZFSの歴史Z ファイル システム (ZFS) は、2001 年に Matthew Ahrens と...

スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

Dockerfileの作成yumソースを設定する cd /tmp/docker vim Docker...

jQueryアニメーションを理解するのに役立つ記事

目次1. 要素の表示と非表示を制御する show() hide() 2. 要素の透明度を制御する f...

JavaScript のフラット配列をツリー構造に変換する例

目次バックグラウンドで10,000個のデータが失われた再帰法非再帰的方法要約するバックグラウンドで1...

ブラウザでTIF形式の画像を表示する方法

ブラウザはTIF形式の画像を表示しますコードをコピーコードは次のとおりです。 <html>...