Vue.js チュートリアル コラムでは、今日の Vue.js 学習の 3 番目の部分であるサーバーとのデータ対話を紹介します。
明らかに、以前の 02_toDoList
には致命的な欠陥があります。つまり、そのデータはブラウザ側にのみ存在し、ユーザーがページを閉じるかリロードすると、以前にプログラムに追加したデータはすべて失われ、すべてがプログラムの初期状態に戻ります。この問題を解決するには、Web アプリケーションのフロントエンドがバックエンド サーバーで取得した入力データを適切なタイミングで保存し、必要に応じてサーバーからデータを取得する必要があります。メモのこの部分では、Vue.js フレームワークを使用して Web アプリケーションのフロントエンドとバックエンド間の対話を完了する方法を記録します。今回は、学習プロセス全体を実行する「ゲストブック」アプリケーションも構築します。
まず、code
ディレクトリで npm install Express body-parser knex
と npm install sqlite3@<specified version>## を実行する必要があります。 #Command で、Web サービスの作成に必要なバックエンド コンポーネントをインストールします (ここでインストールされる </specified>
sqlite3 は、
knex のインストール後のプロンプトに従って、対応するバージョンを選択する必要があることに注意してください) )。次に、
code ディレクトリに
03_Message という名前のディレクトリを作成し、このディレクトリで
npm init -y コマンドを実行して、Node.js プロジェクトに初期化します。 。ここで、サーバーに必要なコンポーネントをプロジェクトディレクトリの上位ディレクトリにインストールしているのは、フロントエンドコンポーネントもプロジェクトディレクトリにインストールし、ブラウザで開いてアクセスする必要があるためです。端末に必要なコンポーネントは個別に保管するのが最適です。
code/03_Message ディレクトリに
index.js という名前のサーバー側スクリプト ファイルを作成し、その中に次のコードを入力します。 Vue による .js フレームワークの特性 フロントエンドは、指定された HTML および JavaScript ファイルの取得に加えて、バックエンドによって提供されるサービスを必要とします。したがって、上記のサービスでは、
public
node_modules に加えて、ディレクトリ全体がブラウザ アクセスに開かれていることに加えて、主に GET リクエストに基づくデータ クエリ サービスを提供します。 、および POST リクエストに基づく 2 つのデータ追加および削除操作。
次に、フロントエンド部分の構築を開始できます。まず、
code/03_Message
npm install vue axios コマンドを実行して、次に使用するフロントエンド コンポーネントをインストールする必要があります (このコマンドにより、
node_modules ディレクトリ。前述したように、ディレクトリはサーバー側スクリプトによって全体としてブラウザに開かれます)。次に、同じディレクトリ内に
public ディレクトリを作成し、その中に次のコードを含む
index.htm という名前のファイルを作成します。
const path = require('path'); const express = require('express') const bodyParser = require('body-parser'); const knex = require('knex'); const port = 8080; // 创建服务器实例 const app = express(); // 配置 public 目录,将其开放给浏览器端 app.use('/', express.static(path.join(__dirname, 'public'))); // 配置 node_modules 目录,将其开放给浏览器端 app.use('/node_modules', express.static(path.join(__dirname, 'node_modules'))); //配置 body-parser 中间件,以便获取 POST 请求数据。 app.use(bodyParser.urlencoded({ extended : false})); app.use(bodyParser.json()); // 创建数据库连接对象: const appDB = knex({ client: 'sqlite3', // 设置要连接的数据类型 connection: { // 设置数据库的链接参数 filename: path.join(__dirname, 'data/database.sqlite') }, debug: true, // 设置是否开启 debug 模式,true 表示开启 pool: { // 设置数据库连接池的大小,默认为{min: 2, max: 10} min: 2, max: 7 }, useNullAsDefault: true }); appDB.schema.hasTable('notes') // 查看数据库中是否已经存在 notes 表 .then(function(exists) { if(exists == false) { // 如果 notes 表不存在就创建它 appDB.schema.createTable('notes', function(table) { // 创建 notes 表: table.increments('uid').primary();// 将 uid 设置为自动增长的字段,并将其设为主键。 table.string('userName'); // 将 userName 设置为字符串类型的字段。 table.string('noteMessage'); // 将 notes 设置为字符串类型的字段。 }); } }) .then(function() { // 请求路由 // 设置网站首页 app.get('/', function(req, res) { res.redirect('/index.htm'); }); // 响应前端获取数据的 GET 请求 app.get('/data/get', function(req, res) { appDB('notes').select('*') .then(function(data) { console.log(data); res.status(200).send(data); }).catch(function() { res.status(404).send('找不到相关数据'); }); }); // 响应前端删除数据的 POST 请求 app.post('/data/delete', function(req, res) { appDB('notes').delete() .where('uid', '=', req.body['uid']) .catch(function() { res.status(404).send('删除数据失败'); }); res.send(200); }); // 响应前端添加数据的 POST 请求 app.post('/data/add', function(req, res) { console.log('post data'); appDB('notes').insert( { userName : req.body['userName'], noteMessage : req.body['noteMessage'] } ).catch(function() { res.status(404).send('添加数据失败'); }); res.send(200); }); // 监听 8080 端口 app.listen(port, function(){ console.log(`访问 http://localhost:${port}/,按 Ctrl+C 终止服务!`); }); }) .catch(function() { // 断开数据库连接,并销毁 appDB 对象 appDB.destroy(); });
This page主に 2 つの部分に分かれており、最初の部分では
v-for コマンドを使用して、notes のデータに基づいてデータベースに追加されたコメントを繰り返し表示します。指定したメッセージを削除するには、「
Delete the 」ボタンを指定します (クリック イベント ハンドラー関数をバインドするには、
v-on ディレクティブを使用します)。 2 番目の部分は、
メッセージを追加するための入力インターフェイスです。ここでは、
v-model コマンドを使用して、必要な
userName と
を取得します。ユーザーが入力したメッセージデータ。次に、対応する Vue オブジェクト インスタンスを作成する必要があります。これを行うには、先ほど作成した
public ディレクトリの下に別の
js ディレクトリを作成し、その中に # という名前のディレクトリを作成します。 ##main.js
のカスタム フロントエンド スクリプト ファイルには次のコードがあります: <pre class="brush:php;toolbar:false">nbsp;html>
<meta>
<meta>
<meta>
<script></script>
<script></script>
<script></script>
<title>留言本</title>
<p>
</p><h1 id="留言本">留言本</h1>
<p>
<span>{{ note.userName }} 说:{{ note.noteMessage }} </span>
<input>
</p>
<p>
</p><h2 id="请留言">请留言:</h2>
<label>用户名:</label>
<input>
<br>
<label>写留言:</label>
<input>
<input>
</pre>
el- Member: CSS セレクターを使用して Vue インスタンスに対応する要素コンテナーを指定するために使用します。ここでは
-
要素。
data メンバー: ページにバインドされたデータを設定するために使用されます。次の 3 つのデータ変数がここで設定されます: -
: これは、追加されたメッセージ レコードを格納するために使用される配列変数です。notes
-
userName
: これは、「ユーザー名」データを取得するために使用される文字列変数です。 -
Message
: これは、「メッセージ」データを取得するために使用される文字列変数です。
Member: プログラムのロード時の初期化に使用されます。ここでは、追加されたメッセージをサーバーから読み取り、記録して、 -
- notes
変数。
メソッド メンバー: ページにバインドされたイベント処理関数を定義するために使用されます。次の 2 つのイベント処理関数がここで定義されます: -
addNew
:用于添加新的留言记录,并同步更新notes
中的数据。 -
remove
:用于删除指定的留言记录,并同步更新notes
中的数据。
-
通常情况下,我们在 Vue.js 框架中会选择使用 axios 这样的第三方组件来处理发送请求和接收响应数据的工作,引入该组件的方式与引入 Vue.js 框架的方式是一样的,可以像上面一样先下载到本地,然后使用<script></script>
标签引入,也可以使用 CDN 的方式直接使用<script></script>
标签引入,像这样:
<!-- 开发环境版本,包含了有帮助的命令行警告 --> <script></script> <!-- 或者 --> <!-- 生产环境版本,优化了文件大小和载入速度 --> <script></script>
需要注意的是,该引用标签在 HTML 页面中的位置必须要在自定义 JavaScript 脚本文件(即main.js
)的引用标签之前。当然,我在上述代码中只展示了axios.get
和axios.post
这两个最常用方法的基本用法,由于该组件支持返回 Promise 对象,所以我们可以采用then
方法调用链来处理响应数据和异常状况。关于 axios 组件更多的使用方法,可以参考相关文档(http://www.axios-js.com/zh-cn/docs/)。
更多相关免费学习:javascript(视频)
以上がVue.js 学習 3: サーバーとのデータ対話の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Vue.jsは使いやすく、スムーズな学習曲線があり、初心者に適しています。 Reactは急な学習曲線を持っていますが、柔軟性が強いため、経験豊富な開発者に適しています。 1.Vue.jsは、単純なデータバインディングとプログレッシブデザインを介して簡単に始められます。 2.反応には、仮想DOMとJSXを理解する必要がありますが、より高い柔軟性とパフォーマンスの利点を提供します。

Vue.JSは、高速開発や小規模プロジェクトに適していますが、Reactは大規模で複雑なプロジェクトにより適しています。 1.Vue.jsは簡単で学習しやすく、迅速な開発や小規模プロジェクトに適しています。 2.反応は強力で、大規模で複雑なプロジェクトに適しています。 3. Vue.jsの進歩的な特徴は、徐々に機能を導入するのに適しています。 4。複雑なUIおよびデータ集約型アプリケーションを扱うとき、Reactのコンポーネントと仮想DOMはうまく機能します。

Vue.jsとReactには、それぞれ独自の利点と短所があります。選択するときは、チームのスキル、プロジェクトの規模、パフォーマンス要件を包括的に検討する必要があります。 1)VUE.JSは、学習曲線が低い高速開発や小規模プロジェクトに適していますが、ネストされたオブジェクトはパフォーマンスの問題を引き起こす可能性があります。 2)Reactは、豊富なエコシステムを備えた大規模で複雑なアプリケーションに適していますが、頻繁に更新するとパフォーマンスのボトルネックにつながる可能性があります。

VUE.JSは中小企業から中規模のプロジェクトに適していますが、Reactは大規模なプロジェクトや複雑なアプリケーションシナリオに適しています。 1)Vue.jsは使いやすく、迅速なプロトタイピングや小規模アプリケーションに適しています。 2)Reactは、複雑な州の管理とパフォーマンスの最適化を処理する上でより多くの利点があり、大規模なプロジェクトに適しています。

Vue.jsとReactにはそれぞれ独自の利点があります。Vue.jsは小さなアプリケーションと迅速な発展に適していますが、Reactは大規模なアプリケーションと複雑な国家管理に適しています。 1.Vue.jsは、小さなアプリケーションに適したレスポンシブシステムを通じて自動更新を実現します。 2.反応は、大規模で複雑なアプリケーションに適した仮想DOMおよびDIFFアルゴリズムを使用します。フレームワークを選択するときは、プロジェクトの要件とチームテクノロジースタックを検討する必要があります。

Vue.jsとReactにはそれぞれ独自の利点があり、選択はプロジェクトの要件とチームテクノロジースタックに基づいている必要があります。 1。Vue.jsはコミュニティに優しいものであり、豊富な学習リソースを提供しており、エコシステムには公式チームとコミュニティによってサポートされているVuerouterなどの公式ツールが含まれています。 2. Reactコミュニティは、強力なエコシステムを備えたエンタープライズアプリケーションに偏っており、Facebookとそのコミュニティが提供するサポートを頻繁に更新しています。

NetflixはReactを使用してユーザーエクスペリエンスを強化します。 1)Reactのコンポーネント機能は、Netflixが複雑なUIを管理可能なモジュールに分割するのに役立ちます。 2)Virtual DomはUIの更新を最適化し、パフォーマンスを向上させます。 3)ReduxとGraphQLを組み合わせて、Netflixはアプリケーションのステータスとデータフローを効率的に管理します。

Vue.jsはフロントエンドフレームワークであり、バックエンドフレームワークはサーバー側のロジックを処理するために使用されます。 1)VUE.JSは、ユーザーインターフェイスの構築に焦点を当て、コンポーネントおよびレスポンシブデータバインディングを介して開発を簡素化します。 2)ExpressやDjangoなどのバックエンドフレームワークは、HTTPリクエスト、データベース操作、ビジネスロジックを処理し、サーバーで実行します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ホットトピック









