第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

VUE.JS怎么在組件內(nèi)使用第三方的插件

VUE.JS怎么在組件內(nèi)使用第三方的插件

呼如林 2019-04-02 05:00:23
VUE.JS怎么在組件內(nèi)使用第三方的插件
查看完整描述

3 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

引入jQuery
通過(guò)npm安裝依賴引入
1、安裝
```
npm install jquery -S
```1234

2、修改webpack配置文件
build/webpack.base.conf.js
...var webpack = require("webpack") // 1. 確保引入 webpack,后面會(huì)用到

module.exports = { ...
resolve: {
extensions: ['.js', '.vue', '.json'],
modules: [
resolve('src'),
resolve('node_modules')
],
alias: { 'vue$': 'vue/dist/vue.common.js', 'src': resolve('src'), 'assets': resolve('src/assets'), 'components': resolve('src/components'),
// 2. 定義別名和插件位置 'jquery': 'jquery'
}
},
plugins: [
// 3. 配置全局使用 jquery
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
jquery: "jquery", "window.jQuery": "jquery"
})
]
}123456789101112131415161718192021222324252627282930

手動(dòng)載入
手動(dòng)下載jquery 放在static 目錄下,如:static/js/jquery.min.js
和npm不同的只是在第二步定義別名和插件位置:
alias: { 'vue$': 'vue/dist/vue.common.js', 'src': resolve('src'), 'assets': resolve('src/assets'), 'components': resolve('src/components'), // 2. 定義別名和插件位置
"jquery": path.resolve(__dirname, '../static/js/jquery.min.js')
}12345678

引入jquery第三方插件
可以通過(guò)npm安裝的插件
這種引入第三方插件的方法和上一節(jié)種引入echarts的方法是一樣的
手動(dòng)引入



查看完整回答
反對(duì) 回復(fù) 2019-04-03
?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

在項(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.defineProperty(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
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..');
}
})

 


查看完整回答
反對(duì) 回復(fù) 2019-04-03
  • 3 回答
  • 0 關(guān)注
  • 3214 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)