最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
第三方j(luò)s庫(kù)怎么在Vue項(xiàng)目中使用-創(chuàng)新互聯(lián)

第三方j(luò)s庫(kù)怎么在Vue項(xiàng)目中使用?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都做網(wǎng)站、邗江網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、邗江網(wǎng)絡(luò)營(yíng)銷、邗江企業(yè)策劃、邗江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供邗江建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

全局變量

在項(xiàng)目中添加第三方庫(kù)的最簡(jiǎn)單方式是講其作為一個(gè)全局變量, 掛載到 window 對(duì)象上:

entry.js

window._ = require('lodash');

MyComponent.vue

export default {
 created() {
  console.log(_.isEmpty() ? 'Lodash everywhere!' : 'Uh oh..');
 }
}

這種方式不適合于服務(wù)端渲染, 因?yàn)榉?wù)端沒有 window 對(duì)象, 是 undefined , 當(dāng)試圖去訪問(wèn)屬性時(shí)會(huì)報(bào)錯(cuò).

在每個(gè)文件中引入

另一個(gè)簡(jiǎn)單的方式是在每一個(gè)需要該庫(kù)的文件中導(dǎo)入:

MyComponent.vue

import _ from 'lodash';

export default {
 created() {
  console.log(_.isEmpty() ? 'Lodash is available here!' : 'Uh oh..');
 }
}

這種方式是允許的, 但是比較繁瑣, 并且?guī)?lái)的問(wèn)題是: 你必須記住在哪些文件引用了該庫(kù), 如果項(xiàng)目不再依賴這個(gè)庫(kù)時(shí), 得去找到每一個(gè)引用該庫(kù)的文件并刪除該庫(kù)的引用. 如果構(gòu)建工具沒設(shè)置正確, 可能導(dǎo)致該庫(kù)的多份拷貝被引用.

優(yōu)雅的方式

在 Vuejs 項(xiàng)目中使用 JavaScript 庫(kù)的一個(gè)優(yōu)雅方式是講其代理到 Vue 的原型對(duì)象上去. 按照這種方式, 我們引入Moment庫(kù):

entry.js

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

由于所有的組件都會(huì)從 Vue 的原型對(duì)象上繼承它們的方法, 因此在所有組件/實(shí)例中都可以通過(guò) this.$moment: 的方式訪問(wèn) Moment 而不需要定義全局變量或者手動(dòng)的引入.

MyNewComponent.vue

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

接下來(lái)就了解下這種方式的工作原理.

Object.defineProperty

一般而言, 可以按照下面的方式來(lái)給對(duì)象設(shè)置屬性:

Vue.prototype.$moment = moment;

可以這樣做, 但是 Object.defineProperty 允許我們通過(guò)一個(gè) descriptor 來(lái)定義屬性. Descriptor 運(yùn)行我們?nèi)ピO(shè)置對(duì)象屬性的一些底層(low-level)細(xì)節(jié), 如是否允許屬性可寫? 是否允許屬性在 for 循環(huán)中被遍歷.

通常, 我們不會(huì)為此感到困擾, 因?yàn)榇蟛糠謺r(shí)候, 對(duì)于屬性賦值, 我們不需要考慮這樣的細(xì)節(jié). 但這有一個(gè)明顯的優(yōu)點(diǎn): 通過(guò) descriptor 創(chuàng)建的屬性默認(rèn)是只讀的 .

這就意味著, 一些處于迷糊狀態(tài)的(coffee-deprived)開發(fā)者不能在組件內(nèi)去做一些很愚蠢的事情, 就像這樣:

this.$http = 'Assign some random thing to the instance method';
this.$http.get('/'); // TypeError: this.$http.get is not a function

此外, 試圖給只讀實(shí)例的方法重新賦值會(huì)得到TypeError: Cannot assign to read only property的錯(cuò)誤.

$

你可能會(huì)注意到, 代理第三庫(kù)的屬性會(huì)有一個(gè)$前綴, 也可能看到其它類似$refs, $on, $mount的屬性和方式, 它們也有這個(gè)前綴.

這個(gè)不是強(qiáng)制要求, 給屬性添加$前綴是提供那些處于迷糊狀態(tài)(coffee-deprived)的開發(fā)者這是一個(gè)公開的 API, 和 Vuejs 的一些內(nèi)部屬性和方法區(qū)分開來(lái).

this

你還可能注意到, 在組件內(nèi)是通過(guò)this.libraryName的方式來(lái)使用第三方庫(kù)的, 當(dāng)你知道它是一個(gè)實(shí)例方法時(shí)就不會(huì)感到意外了. 但與全局變量不同, 通過(guò)this來(lái)使用第三方庫(kù)時(shí), 必須確保this處于正確的作用域. 在回調(diào)方法中this的作用域會(huì)有不同, 但箭頭式回調(diào)風(fēng)格能保證 this 的作用域是正確的:

this.$http.get('/').then(res => {
 if (res.status !== 200) {
  this.$http.get('/') // etc
  // Only works in a fat arrow callback.
 }
});

插件

如果你想在多個(gè)項(xiàng)目中使用同一個(gè)庫(kù), 或者想將其分享給其他人, 可以將其寫成一個(gè)插件:

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

在應(yīng)用的入口引入插件之后, 就可以在任何一個(gè)組件內(nèi)像使用 Vue Router , Vuex 一樣使用你定義的庫(kù)了.

寫一個(gè)插件

首先, 創(chuàng)建一個(gè)文件用于編寫自己的插件. 在示例中, 我會(huì)將 Axios 作為插件添加到項(xiàng)目中, 因而我給文件起名為 axios.js . 其次, 插件要對(duì)外暴露一個(gè) install 方法, 該方法的第一個(gè)參數(shù)是 Vue 的構(gòu)造函數(shù):

axios.js

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

可以使用先前將庫(kù)添加到原型對(duì)象上的方法:

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ù)

插件的 install 方法可以接受可選參數(shù). 一些開發(fā)可能不喜歡將 Axios 實(shí)例命名為 $http , 因?yàn)檫@是 Vue Resource 提供的一個(gè)通用名字. 因而可以提供一個(gè)可選的參數(shù)允許他們隨意命名:

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

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)建站的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、建站服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前名稱:第三方j(luò)s庫(kù)怎么在Vue項(xiàng)目中使用-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://fisionsoft.com.cn/article/degjgs.html