<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:33:45
        文檔

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

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

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

        錯誤示范

        全局變量法

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

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

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

        處處引入法

        另外一個不太優(yōu)雅的方式就是在需要的每個文件中都引入對應(yīng)的庫:

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

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

        正確引入方式

        最簡單靠譜的方式是用庫變成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 定義對象屬性,如果不在屬性描述器中額外說明,則該屬性就是默認(rèn)只讀的,保護(hù)引入的庫不被重新賦值。

        寫成插件

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

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

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

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

        如何寫插件

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

        最關(guān)鍵的地方在于,我們需要暴露一個將Vue構(gòu)造器作為第一個參數(shù)的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實(shí)例的use方法就能將這個庫引入整個項(xiàng)目了。我們像下面代碼一樣簡單引入:

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

        插件參數(shù)設(shè)置

        插件的install方法還可以接受其他的可選參數(shù)。有些開發(fā)者可能不喜歡Axios實(shí)例對象的方法名$http,因?yàn)閂ue resource插件的方法名也是這個。然后,讓我們利用第二個參數(shù)來修改它。

        // 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..');
         }
        })

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

        總結(jié)

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

        文檔

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

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 成人免费一区二区三区在线观看| 在线免费观看伊人三级电影| 免费看污成人午夜网站| 亚洲一区精品中文字幕| 日韩免费高清大片在线| 香蕉蕉亚亚洲aav综合| 日本免费一区二区在线观看| 亚洲精品免费在线视频| 四虎永久在线精品免费观看视频| 亚洲成人免费网站| 最近中文字幕mv免费高清视频7| 亚洲中文字幕无码爆乳| 日本特黄特色aa大片免费| 无码亚洲成a人在线观看| 免费一级肉体全黄毛片| 又粗又长又爽又长黄免费视频| 亚洲欧洲国产精品香蕉网| 免费A级毛片无码A∨中文字幕下载 | av永久免费网站在线观看| 久久精品国产亚洲AV果冻传媒| 免费无码一区二区三区| 亚洲毛片在线免费观看| 夫妻免费无码V看片| jizz中国免费| 亚洲精品91在线| 日本a级片免费看| 男女一边桶一边摸一边脱视频免费| 亚洲成A人片在线观看无码不卡| 7x7x7x免费在线观看| 亚洲国产精品ⅴa在线观看| 亚洲精品国产精品国自产观看| 久久大香香蕉国产免费网站| 久久精品国产亚洲AV久| va亚洲va日韩不卡在线观看| 丝袜捆绑调教视频免费区| 亚洲成A∨人片在线观看无码| 国产成人无码免费视频97| 暖暖日本免费中文字幕| 亚洲人成色99999在线观看| 国产亚洲午夜高清国产拍精品| 国内精品免费麻豆网站91麻豆|