【整理と共有】Vue開発に必須の操作スキル、ぜひ集めてください!

青灯夜游
リリース: 2022-07-21 20:13:44
転載
1812 人が閲覧しました

より多くのスキルを習得すると、プログラミングの効率が向上します。仕事をうまくやり遂げたい場合は、まずツールを磨く必要があります。この記事では、Vue の基本的な操作スキルをいくつか紹介しますので、お役に立てれば幸いです。

【整理と共有】Vue開発に必須の操作スキル、ぜひ集めてください!(学習ビデオ共有:

vue ビデオ チュートリアル

)

キーボード イベント

  • js では通常、イベントをバインドしてキーのコードを取得し、## を event #keyCode に渡します。 コードを取得するための属性
  • イベントをトリガーするために固定キーを実装する必要がある場合、常に判断する必要があり、実際には非常に面倒です
let button = document.querySelector('button')

button.onkeyup = function (e) {
    console.log(e.key)
    if (e.keyCode == 13) {
        console.log('我是回车键')
    }
}
ログイン後にコピー
  • vue は、いくつかの一般的に使用されるキーのエイリアスを提供します。イベントの後に応答エイリアスを追加するだけです。
  • vue 一般的なエイリアスは次のとおりです: up/上矢印下/下矢印左/左矢印右/右矢印スペース/スペースtab/改行esc/exitenter/キャリッジリターンdelete/削除
// 只有按下回车键时才会执行 send 方法
<input v-on:keyup.enter="send" type="text">
ログイン後にコピー
    Vue
  • でエイリアスを提供しないキーの場合は、元の key 値を使用してバインドできます。いわゆる key 値は ## です。 #event.key 取得値key
  • の値が 1 文字の場合はそのまま使用できますが、複数の単語で構成されるキャメルケース名の場合は、分割して
  • - 接続 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// 只有按下q键时才会执行send方法 &lt;input v-on:keyup.Q=&quot;send&quot; type=&quot;text&quot;&gt; // 只有按下capslock键时才会执行send方法 &lt;input v-on:keyup.caps-lock=&quot;send&quot; type=&quot;text&quot;&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div>
  • システム修飾子の場合
ctrl
  • altshift これらの比較 複雑なキーの使用には、2 つの状況があります。これらのキーは、他のキーを押しながら組み合わせショートカット キーを形成することができるため、
  • トリガー イベントが次の場合
  • keydown
  • では、修飾キーを直接押してトリガーできます
  • トリガーイベントが keyup
  • の場合、修飾キーを押すときに他のキーを同時に押してから放します他のキーを押すと、イベントをトリガーできます。
  • <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// keydown事件时按下alt键时就会执行send方法 &lt;input v-on:keydown.Alt=&quot;send&quot; type=&quot;text&quot;&gt; // keyup事件时需要同时按下组合键才会执行send方法 &lt;input v-on:keyup.Alt.y=&quot;send&quot; type=&quot;text&quot;&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div>
  • もちろん、
Vue.config.keyCodes を通じてキー エイリアス
  • をカスタマイズすることもできます。カスタム キー名 = キー コード
  • Define
  • <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">// 只有按下回车键时才会执行send方法 &lt;input v-on:keydown.autofelix=&quot;send&quot; type=&quot;text&quot;&gt;      // 13是回车键的键码,将他的别名定义为autofelix Vue.config.keyCodes.autofelix=13</pre><div class="contentsignin">ログイン後にコピー</div></div>画像プレビュー

プロジェクトでは画像プレビューを使用する必要がよくあります。

viewerjs
    は非常に優れた画像プレビュー プラグインです
  • 機能サポートには、画像の拡大、縮小、回転、ドラッグ、切り替え、ストレッチなどが含まれます。
  • インストール
  • viewerjs
  • 拡張機能
  • <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">npm install viewerjs --save</pre><div class="contentsignin">ログイン後にコピー</div></div>
  • 導入と設定機能
    //引入
    import Vue from 'vue';
    import 'viewerjs/dist/viewer.css';
    import Viewer from 'v-viewer';
    
    //按需引入
    Vue.use(Viewer);
    
    Viewer.setDefaults({
        'inline': true,
        'button': true, //右上角按钮
        "navbar": true, //底部缩略图
        "title": true, //当前图片标题
        "toolbar": true, //底部工具栏
        "tooltip": true, //显示缩放百分比
        "movable": true, //是否可以移动
        "zoomable": true, //是否可以缩放
        "rotatable": true, //是否可旋转
        "scalable": true, //是否可翻转
        "transition": true, //使用 CSS3 过度
        "fullscreen": true, //播放时是否全屏
        "keyboard": true, //是否支持键盘
        "url": "data-source",
        ready: function (e) {
            console.log(e.type, '组件以初始化');
        },
        show: function (e) {
            console.log(e.type, '图片显示开始');
        },
        shown: function (e) {
            console.log(e.type, '图片显示结束');
        },
        hide: function (e) {
            console.log(e.type, '图片隐藏完成');
        },
        hidden: function (e) {
            console.log(e.type, '图片隐藏结束');
        },
        view: function (e) {
            console.log(e.type, '视图开始');
        },
        viewed: function (e) {
            console.log(e.type, '视图结束');
            // 索引为 1 的图片旋转20度
            if (e.detail.index === 1) {
                this.viewer.rotate(20);
            }
        },
        zoom: function (e) {
            console.log(e.type, '图片缩放开始');
        },
        zoomed: function (e) {
            console.log(e.type, '图片缩放结束');
        }
    })
    ログイン後にコピー
  • 画像プレビュー プラグインを使用する
      単一の画像を使用する
    <template>
      <div>
        <viewer>
          <img :src="cover" style="cursor: pointer;" height="80px">
        </viewer>
      </div>
    </template>
     
    <script>
    export default {
      data() {
        return {
          cover: "//www.autofelix.com/images/cover.png"
        }
      }
    }
    </script>
    ログイン後にコピー
  • 複数の画像を使用する
      <template>
        <div>
          <viewer :images="imgList">
            <img v-for="(imgSrc, index) in imgList" :key="index" :src="imgSrc" />
          </viewer>
        </div>
      </template>
       
      <script>
      export default {
        data() {
          return {
            imgList: [
              "//www.autofelix.com/images/pic_1.png",
              "//www.autofelix.com/images/pic_2.png",
              "//www.autofelix.com/images/pic_3.png",
              "//www.autofelix.com/images/pic_4.png",
              "//www.autofelix.com/images/pic_5.png"
            ]
          }
        }
      }
      </script>
      ログイン後にコピー
    • マーキー
    • これは楽しい特殊効果テクニックです

        たとえば、空港で人を迎えに行くときに、マーキー特殊効果を使用できます。
      • #マーキーの特殊効果は、実際には最初のテキストを削除して最後のテキストに追加することで、テキストの移動効果を形成します
      • <!DOCTYPE html>
        <html>
        
        <head>
            <meta charset="UTF-8">
            <title>跑马灯</title>
            <style type="text/css">
                #app {
                    padding: 20px;
                }
            </style>
        </head>
        
        <body>
            <div id="app">
                <button @click="run">应援</button>
                <button @click="stop">暂停</button>
                <h3>{{ msg }}</h3>
            </div>
        </body>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.0/dist/vue.min.js"></script>
        <script>
            new Vue({
                el: "#app",
                data: {
                    msg: "飞兔小哥,飞兔小哥,我爱飞兔小哥~~~",
                    timer: null // 定时器
                },
                methods: {
                    run() {
                        // 如果timer已经赋值就返回
                        if (this.timer) return;
        
                        this.timer = setInterval(() => {
                            // msg分割为数组
                            var arr = this.msg.split('');
                            // shift删除并返回删除的那个,push添加到最后
                            // 把数组第一个元素放入到最后面
                            arr.push(arr.shift());
                            // arr.join('')吧数组连接为字符串复制给msg
                            this.msg = arr.join('');
                        }, 100)
                    },
                    stop() {
                        //清除定时器
                        clearInterval(this.timer);
                        //清除定时器之后,需要重新将定时器置为null
                        this.timer = null;
                    }
                }
            })
        </script>
        
        </html>
        ログイン後にコピー
      • カウントダウン
      カウントダウン手法には多くの用途があります

      たとえば、急ぎで購入する商品が多い場合、ユーザーに思い出させるためにカウントダウンが必要です。ラッシュを開始する時間
      • 実際には 1 秒おきです。時間を再計算して
      • DOM
      • <!DOCTYPE html>
        <html>
        
        <head>
            <meta charset="UTF-8">
            <title>倒计时</title>
        </head>
        
        <body>
            <div id="app">
                <div>抢购开始时间:{{count}}</div>
            </div>
        </body>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.0/dist/vue.min.js"></script>
        <script>
            new Vue({
                el: "#app",
                data() {
                    return {
                        count: '', //倒计时
                        seconds: 864000 // 10天的秒数
                    }
                },
                mounted() {
                    this.Time() //调用定时器
                },
                methods: {
                    // 天 时 分 秒 格式化函数
                    countDown() {
                        let d = parseInt(this.seconds / (24 * 60 * 60))
                        d = d < 10 ? "0" + d : d
                        let h = parseInt(this.seconds / (60 * 60) % 24);
                        h = h < 10 ? "0" + h : h
                        let m = parseInt(this.seconds / 60 % 60);
                        m = m < 10 ? "0" + m : m
                        let s = parseInt(this.seconds % 60);
                        s = s < 10 ? "0" + s : s
                        this.count = d + &#39;天&#39; + h + &#39;时&#39; + m + &#39;分&#39; + s + &#39;秒&#39;
                    },
                    //定时器没过1秒参数减1
                    Time() {
                        setInterval(() => {
                            this.seconds -= 1
                            this.countDown()
                        }, 1000)
                    },
                }
            })
        </script>
        
        </html>
        ログイン後にコピー
        カスタマイズされた右クリックに割り当てます。メニュー
      プロジェクトでは、ブラウザのデフォルトの右クリック オプションではなく、マウスの右ボタンで表示されるオプションをカスタマイズする必要がある場合があります。

      右クリック オプションの実装方法
        Vue
      • では、クリック メニューは実際には非常に簡単です。
      • vue-contextmenujs を使用するだけです。
      • プラグインをインストールできます。vue-contextmenujs プラグイン
      • npm install vue-contextmenujs
        ログイン後にコピー
        はじめに
      //引入
      import Vue from 'vue';
      import Contextmenu from "vue-contextmenujs"
      
      Vue.use(Contextmenu);
      ログイン後にコピー
      • 使用方法
      使用できます
      • オプションにアイコンを追加できます
      • 使用できますstyle ラベルのカスタマイズ オプションのスタイル
      • disabled を使用できます 属性をクリックしてオプションを無効にできます
      • divided:true を使用できます オプションの下線を設定します
      • children# を使用できます## サブオプションを設定します
      <style>
          .custom-class .menu_item__available:hover,
          .custom-class .menu_item_expand {
              background: lightblue !important;
              color: #e65a65 !important;
          }
      </style>
      
      
      <template>
          <div style="width:100vw;height:100vh" @contextmenu.prevent="onContextmenu"></div>
      </template>
      
      <script>
          import Vue from 'vue'
          import Contextmenu from "vue-contextmenujs"
          Vue.use(Contextmenu);
      
          export default {
              methods: {
                  onContextmenu(event) {
                      this.$contextmenu({
                          items: [
                              {
                                  label: "返回",
                                  onClick: () => {
                                      // 添加点击事件后的自定义逻辑
                                  }
                              },
                              { label: "前进", disabled: true },
                              { label: "重载", divided: true, icon: "el-icon-refresh" },
                              { label: "打印", icon: "el-icon-printer" },
                              {
                                  label: "翻译",
                                  divided: true,
                                  minWidth: 0,
                                  children: [{ label: "翻译成中文" }, { label: "翻译成英文" }]
                              },
                              {
                                  label: "截图",
                                  minWidth: 0,
                                  children: [
                                      {
                                          label: "截取部分",
                                          onClick: () => {
                                              // 添加点击事件后的自定义逻辑
                                          }
                                      },
                                      { label: "截取全屏" }
                                  ]
                              }
                          ],
                          event, // 鼠标事件信息
                          customClass: "custom-class", // 自定义菜单 class
                          zIndex: 3, // 菜单样式 z-index
                          minWidth: 230 // 主菜单最小宽度
                      });
                      return false;
                  }
              }
          };
      </script>
      ログイン後にコピー
    • 印刷機能
    • Web ページの印刷機能をサポートします。これも多くのプロジェクトで一般的です

      使用するにはVue の印刷機能では、

      vue-print-nb
        プラグイン
      • インストール
      • vue-print-nb プラグイン
      npm install vue-print-nb --save
      ログイン後にコピー
    • 印刷サービスの紹介
    • import Vue from 'vue'
      import Print from 'vue-print-nb'
      Vue.use(Print);
      ログイン後にコピー
        使用
      v-print
        コマンドを使用して印刷機能を開始します
      <div id="printStart">
          <p>红酥手,黄縢酒,满城春色宫墙柳。</p>
          <p>东风恶,欢情薄。</p>
          <p>一怀愁绪,几年离索。</p>
          <p>错、错、错。</p>
          <p>春如旧,人空瘦,泪痕红浥鲛绡透。</p>
          <p>桃花落,闲池阁。</p>
          <p>山盟虽在,锦书难托。</p>
          <p>莫、莫、莫!</p>
      </div>
      <button v-print="&#39;#printStart&#39;">打印</button>
      ログイン後にコピー
    • JSONP request
    • jsonp

      は、

      クロスドメインの問題を解決するための主な方法の 1 つです。
      • vue
      • インストール
      • jsonp拡張機能<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">npm install vue-jsonp --save-dev</pre><div class="contentsignin">ログイン後にコピー</div></div>##でjsonp
      • を使用することは実際には非常に重要です。
      • #登録サービス
        // 在vue2中注册服务
        import Vue from 'vue'
        import VueJsonp from 'vue-jsonp'
        Vue.use(VueJsonp)
        
        // 在vue3中注册服务
        import { createApp } from 'vue'
        import App from './App.vue'
        import VueJsonp from 'vue-jsonp'
        createApp(App).use(VueJsonp).mount('#app')
        ログイン後にコピー
      使用方法
      • jsonp
      を使用してデータをリクエストした後のコールバックは
        then
      • カスタム
      • callbackName
      • を実行する代わりに、window オブジェクト
      • <script>
        export default {
          data() {...},
          created() {
            this.getUserInfo()
          },
          mounted() {
            window.jsonpCallback = (data) => {
                // 返回后回调
                console.log(data)
            }
          },
          methods: {
            getUserInfo() {
             this.$jsonp(this.url, {
              callbackQuery: "callbackParam",
              callbackName: "jsonpCallback"
             })
              .then((json) => {
                  // 返回的jsonp数据不会放这里,而是在 window.jsonpCallback
                  console.log(json)
              })  
            }
          }
         }
        </script>
        ログイン後にコピー
        ## にマウントする必要があります。 #【関連ビデオチュートリアルの推奨事項: vuejs エントリーのチュートリアル Web フロントエンドのエントリー ]

      以上が【整理と共有】Vue開発に必須の操作スキル、ぜひ集めてください!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

      関連ラベル:
      vue
      ソース:juejin.cn
      このウェブサイトの声明
      この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
      最新の問題
      人気のチュートリアル
      詳細>
      関連するチュートリアル
      人気のおすすめ
      最新のコース
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート