ホームページ  >  記事  >  ウェブフロントエンド  >  【整理と共有】Vue開発に必須の操作スキル、ぜひ集めてください!

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

青灯夜游
青灯夜游転載
2022-07-21 20:13:191791ブラウズ

より多くのスキルを習得すると、プログラミングの効率が向上します。仕事をうまくやり遂げたい場合は、まずツールを磨く必要があります。この記事では、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 文字の場合はそのまま使用できますが、複数の単語で構成されるキャメルケース名の場合は、分割して
  • - 接続 <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>
  • システム修飾子の場合
ctrl
  • altshift これらの比較 複雑なキーの使用には、2 つの状況があります。これらのキーは、他のキーを押しながら組み合わせショートカット キーを形成することができるため、
  • トリガー イベントが次の場合
  • keydown
  • では、修飾キーを直接押してトリガーできます
  • トリガーイベントが keyup
  • の場合、修飾キーを押すときに他のキーを同時に押してから放します他のキーを押すと、イベントをトリガーできます。
  • <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>
  • もちろん、
Vue.config.keyCodes を通じてキー エイリアス
  • をカスタマイズすることもできます。カスタム キー名 = キー コード
  • Define
  • <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>画像プレビュー

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

viewerjs
    は非常に優れた画像プレビュー プラグインです
  • 機能サポートには、画像の拡大、縮小、回転、ドラッグ、切り替え、ストレッチなどが含まれます。
  • インストール
  • viewerjs
  • 拡張機能
  • <pre class="brush:php;toolbar:false">npm install viewerjs --save</pre>
  • 導入と設定機能
    //引入
    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拡張機能<pre class="brush:php;toolbar:false">npm install vue-jsonp --save-dev</pre>##で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 サイトの他の関連記事を参照してください。

      声明:
      この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。