• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    Vue框架中正確引入JS庫的方法介紹

    來源:懂視網 責編:小采 時間:2020-11-27 22:33:45
    文檔

    Vue框架中正確引入JS庫的方法介紹

    Vue框架中正確引入JS庫的方法介紹:本文主要給大家介紹的是關于在Vue框架中正確引入JS庫的相關內容,分享出來供大家參考學習,下面話不多說,來一起看看詳細的介紹: 錯誤示范 全局變量法 最不靠譜的方式就是將導入的庫掛在全部變量window 對象下: // entry.js: window._ = r
    推薦度:
    導讀Vue框架中正確引入JS庫的方法介紹:本文主要給大家介紹的是關于在Vue框架中正確引入JS庫的相關內容,分享出來供大家參考學習,下面話不多說,來一起看看詳細的介紹: 錯誤示范 全局變量法 最不靠譜的方式就是將導入的庫掛在全部變量window 對象下: // entry.js: window._ = r

    本文主要給大家介紹的是關于在Vue框架中正確引入JS庫的相關內容,分享出來供大家參考學習,下面話不多說,來一起看看詳細的介紹:

    錯誤示范

    全局變量法

    最不靠譜的方式就是將導入的庫掛在全部變量window 對象下:

    // entry.js:
    window._ = require('lodash');
    
    // MyComponent.vue:
    export default {
     created() {
     console.log(_.isEmpty() ? 'Lodash everywhere!' : 'Uh oh..');
     }
    }

    這種方式的缺點有很多,我們只說其中一個關鍵的點:不支持服務端渲染。當應用跑在服務端時,window對象不存在,當然試圖去訪問window下的屬性會拋出錯誤。

    處處引入法

    另外一個不太優雅的方式就是在需要的每個文件中都引入對應的庫:

    // MyComponent.vue:
    import _ from 'lodash';
    
    export default {
     created() {
     console.log(_.isEmpty() ? 'Lodash is available here!' : 'Uh oh..');
     }
    }

    雖然這方法是可行的,但是太不簡潔。你必須在每個文件中都記得引入, 而且如果不需要了,又得重新刪除。另外,如果打包策略不夠明智的話,可能會打包出多份重復的代碼。

    正確引入方式

    最簡單靠譜的方式是用庫變成Vue的原型對象的屬性。下面,我來演示如何將Moment 庫引入:

    import moment from 'moment';
    Object.definePrototype(Vue.prototype, '$moment', { value: moment });

    Object.definePrototype 語法參見 MDN

    由于所有的組件都會繼承Vue原型對象上的方法,因此這些方法在任何組件文件中都能通過this.$moment 訪問到:

    // MyNewComponent.vue
    export default {
     created() {
     console.log('The time is ' . this.$moment().format("HH:mm"));
     }
    }

    使用 Object.defineProperty 定義對象屬性,如果不在屬性描述器中額外說明,則該屬性就是默認只讀的,保護引入的庫不被重新賦值。

    寫成插件

    如果你在項目的很多地方都用了某個庫,或者你希望全局可用,你可以構建自己的Vue 插件。

    插件能化繁為簡,能讓你像下面這樣很簡單地引入自己想要的庫:

    import MyLibraryPlugin from 'my-library-plugin';
    Vue.use(MyLibraryPlugin);

    就像Vue Route,Vuex等插件一樣,我們的庫僅僅需要兩行,就能在任何地方使用了。

    如何寫插件

    首先,創建一個文件。本例中,我將引入一個Axios庫的插件。我們就把這個文件命名為axios.js 吧。

    最關鍵的地方在于,我們需要暴露一個將Vue構造器作為第一個參數的install 方法。

    // axios.js:
    
    export default {
     install: function(Vue) {
     // Do stuff
     }
    }

    然后我們可以用之前的方式將庫添加到Vue的原型對象上:

    // axios.js
    import axios from 'axios';
    
    export default {
     install: function(Vue) {
     Object.defineProperty(Vue.prototype, '$http', { value: axios });
     }
    }

    接著我們只需要Vue實例的use方法就能將這個庫引入整個項目了。我們像下面代碼一樣簡單引入:

    // entry.js
    import AxiosPlugin from './axios.js';
    Vue.use(AxiosPlugin);
    
    new Vue({
     created() {
     console.log(this.$http ? 'Axios works!' : 'Uh oh..');
     }
    })

    插件參數設置

    插件的install方法還可以接受其他的可選參數。有些開發者可能不喜歡Axios實例對象的方法名$http,因為Vue resource插件的方法名也是這個。然后,讓我們利用第二個參數來修改它。

    // axios.js
    import axios from 'axios';
    
    export default {
     install: function(Vue, name = '$http') {
     Object.defineProperty(Vue.prototype, name, { value: axios });
     }
    }
    // entry.js
    import AxiosPlugin from './axios.js';
    Vue.use(AxiosPlugin, '$axios');
    
    new Vue({
     created() {
     console.log(this.$axios ? 'Axios works!' : 'Uh oh..');
     }
    })

    當然上面,我們可以直接在Object.defineProperty的中將name屬性寫死成$axios。也可以在install方法中引入多個需要的庫。

    總結

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Vue框架中正確引入JS庫的方法介紹

    Vue框架中正確引入JS庫的方法介紹:本文主要給大家介紹的是關于在Vue框架中正確引入JS庫的相關內容,分享出來供大家參考學習,下面話不多說,來一起看看詳細的介紹: 錯誤示范 全局變量法 最不靠譜的方式就是將導入的庫掛在全部變量window 對象下: // entry.js: window._ = r
    推薦度:
    標簽: VUE js 的方
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲国产第一站精品蜜芽| 老汉精品免费AV在线播放| 尤物yw午夜国产精品视频| 日本精品久久久久中文字幕8| 午夜在线视频91精品| 777欧美午夜精品影院| 成人精品视频一区二区三区 | 精品爆乳一区二区三区无码av| 久久久精品日本一区二区三区 | 国产精品亲子乱子伦xxxx裸| 亚洲精品线路一在线观看| 久久精品国产亚洲精品| 国产一区二区三区欧美精品 | 国产精品美女免费视频观看| 精品一区二区久久久久久久网站| 精品9E精品视频在线观看| 中文字幕无码久久精品青草| 四虎永久在线精品国产馆V视影院| 国产精品igao视频| 97久久精品人人做人人爽| 久久亚洲国产午夜精品理论片 | 国产偷窥熟女高潮精品视频| 亚洲精品免费在线观看| 精品一区二区久久久久久久网站| 国产精品亲子乱子伦xxxx裸| 国产精品人人爽人人做我的可爱| 麻豆aⅴ精品无码一区二区| 亚洲精品成人无限看| 中文字幕精品无码久久久久久3D日动漫 | 免费看一级毛片在线观看精品视频| 国产91精品黄网在线观看| 99国内精品久久久久久久| 精品国内片67194| 精品一卡2卡三卡4卡免费视频 | 亚洲精品成人a在线观看| 亚州日韩精品专区久久久| 亚洲精品NV久久久久久久久久| 亚洲午夜国产精品无码 | 亚洲AⅤ永久无码精品AA| 亚洲精品尤物yw在线影院| 亚洲一区无码精品色|