Vue グローバルメソッドを設定する 2 つの方法

Vue グローバルメソッドを設定する 2 つの方法

1. はじめに

Vue プロジェクトの開発では、時間のフォーマット、ファイルのダウンロード、オブジェクトのディープコピー、データ型の戻り、テキストのコピーなど、異なるコンポーネントページで同じメソッドが使用されるシナリオが必ず存在します。このとき、よく使われる機能を抽出し、グローバルに利用できるようにする必要があります。では、グローバル環境で使用できるツール関数クラスをどのように定義すればよいでしょうか?詳細は下記をご覧ください。

PS: この記事ではvue 2.6.12を使用しています

2. 最初の方法

Vueインスタンスプロトタイプに直接追加する

まずmain.jsを開き、importで定義された共通メソッドutils.jsファイルをインポートし、次にVue.prototype.$utils = utilsを使用してVueインスタンスに追加します。

'vue' から Vue をインポートします
'./App.vue' からアプリをインポートします。
'./router' からルーターをインポートします
'./store' からストアをインポートします
'./utils/Utils' から utils をインポートします

Vue.prototype.$utils = utils

新しいVue({
 ルーター、
 店、
 レンダリング: h => h(App)
}).$mount('#app')

その後、コンポーネントページで使用する必要がある場合は、これを使用します。$utils.xxx

メソッド: {
 関数() {
  time = this.$utils.formatTime(新しいDate()) とします。
 }
}

欠点:

  • バインディングが多すぎるとVueインスタンスが大きくなりすぎる
  • 使用するたびにこれを追加します

アドバンテージ:

  • 簡単な定義

公式ドキュメント

3. 2番目の方法

webpack.ProvidePluginを使用してグローバルにインポートする

まず、vue.configにwebpackとパスを導入し、module.exportsのconfigureWebpackオブジェクトにプラグインを定義し、必要なjsファイルを導入します。

完全な vue.config.js 構成は次のとおりです。

定数ベースURL = process.env.VUE_APP_BASE_URL
定数 webpack = require('webpack')
const パス = require("パス")

モジュール.エクスポート = {
 パブリックパス: './',
 出力ディレクトリ: process.env.VUE_APP_BASE_OUTPUTDIR、
 資産ディレクトリ: '資産',
 保存時にlint: true、
 プロダクションソースマップ: false、
 Webpack を構成する: {
  開発サーバー: {
   オープン: 偽、
   かぶせる:
    警告: 真、
    エラー: true、
   },
   ホスト: 'localhost',
   ポート: '9000'、
   hotOnly: 偽、
   プロキシ: {
    '/api': {
     ターゲット: ベースURL、
     安全: 偽、
     changeOrigin: true, //proxypathRewrite を開く: {
      '^/api': '/',
     },
    },
   }
  },
  プラグイン: [
   新しい webpack.ProvidePlugin({
          UTILS: [path.resolve(__dirname, './src/utils/Utils.js'), 'default'], // 定義されたグローバル関数クラス TOAST: [path.resolve(__dirname, './src/utils/Toast.js'), 'default'], // 定義されたグローバル Toast ポップアップ ボックス メソッド LOADING: [path.resolve(__dirname, './src/utils/Loading.js'), 'default'] // 定義されたグローバル Loading メソッド })
  ]
 }
}

このように定義した後、プロジェクトに ESlint がある場合は、定義されたグローバル関数クラスのプロパティ名を有効にするために、ルート ディレクトリの .eslintrc.js ファイルに globals オブジェクトを追加する必要もあります。そうしないと、プロパティが見つからないというエラーが報告されます。

モジュール.エクスポート = {
  ルート: true、
  パーサーオプション: {
    パーサー: 'babel-eslint'、
    ソースタイプ: 'モジュール'
  },
  環境: {
    ブラウザ: true、
    ノード: true、
    es6: 本当、
  },
  「グローバル」:{
    「ユーティリティ」:true、
    「トースト」:真、
    「ロード中」: true
  }
  // ...ESlint 設定の N 行を省略します}

定義したら、プロジェクトを再起動して次のように使用します。

計算: {
 再生回数() {
  戻り値 (数値) => {
   // UTILS は定義されたグローバル関数クラスです const count = UTILS.tranNumber(num, 0)
   戻り数
  }
 }
}

欠点:

  • まだ見つかっていません…

アドバンテージ:

  • チーム開発の楽しみ

公式ドキュメント

要約する

これで、vue グローバル メソッドを構成する 2 つの方法についての説明は終了です。vue グローバル メソッドの構成の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueはグローバル変数とグローバルメソッドを定義します
  • Vue のカスタム グローバル コンポーネントと、グローバル メソッド Vue.use() を通じてそれらを使用する方法について簡単に説明します。
  • Vue コンポーネントをグローバルメソッドにマウントするサンプルコード
  • Vueカスタムグローバルメソッド、コンポーネントでの使用の紹介

<<:  Mariadb リモート ログイン構成と問題解決

>>:  Ubuntu インストール cuda10.1 ドライバ実装手順

推薦する

Docker で MySQL サービスをデプロイする方法と、遭遇する落とし穴

最近、ポーターを学んでいます。こんなに強力なものがあったなんて、今まで知らなかった気がします。クラス...

SQLは、隣接する2行のデータに対して加算、減算、乗算、除算の演算を実行します。

SQL は、データを特定の順序で並べ替え、特定のフィールドでグループ化した後、隣接する 2 つのデ...

MySQL Routerのインストールと展開

目次01 MySQLルーターの紹介MySQL Router とは何ですか? 02 MySQLルータの...

JS ネイティブ 2048 ゲーム ソース コード共有 (インターネットの最新情報)

最近、アルゴリズムについて学んでいて、アルゴリズムで動く小さなゲームに出会いました。そのコードは次の...

ウェブページを最適化してメモリとCPUの使用率を削減

一部の Web ページは大きく見えなくても開くのに非常に時間がかかる場合があります。一方、他の We...

JavaScript タイマーの種類の概要

目次1.setInterval() 2.タイムアウトを設定する() 1.setInterval()指...

Intelli Idea で Tomcat 設定が見つからない問題の解決方法

2日前に新しい会社に入社しました。その会社ではIntelli Ideaを使っています。Eclipse...

Vueは左上と右上のスライドナビゲーションを実装します

ナビゲーションなどは日々の開発でよく使うので、記録として記事を書きます。ナビゲーションは終了/開始位...

この記事ではCSSの組み合わせセレクターの使い方を説明します

CSS 組み合わせセレクターには、単純なセレクターのさまざまな組み合わせが含まれます。 CSS3 に...

Vue3+TypeScriptはaxiosをカプセル化し、リクエスト呼び出しを実装します

まさか、2021年になってもTypeScriptについて聞いたことがない人がいるなんて?プロジェクト...

CSS3 ボタン境界アニメーションの実装

まず効果を見てみましょう: html <a href="#"> &l...

MYSQLでプロシージャの名前を変更する方法の詳細な説明

最近、ストアド プロシージャの名前を変更する機能を使用しました。インターネットで情報を検索しましたが...

ウェブサイトのビジュアルデザイン(画像とテキスト)における情報伝達の役割と方法

現代の Web ビジュアル デザインは、初期の情報の積み重ねから、その後のグラフィックスと抽象化、そ...

BootStrap グリッド間に隙間を残す解決策

目次[例を見る]: 【本来の効果は以下の通り】理由は次のとおりです。 【解決】:要約するBootSt...

SSH接続を介してXshellを使用したUbuntu 20.04で報告されたサービス問題の詳細な説明

1. 最近、Ubuntu の新しいバージョンをインストールしました。/etc/ssh/sshd_co...