Vue音樂播放器學(xué)習(xí)筆記(6) - Vue插件開發(fā)與發(fā)布 + ( Vue.extend擴(kuò)展組件/實(shí)例構(gòu)造器 ) + ( Vue.component注冊/獲取全局組件 ) + ( js對象 )

(1) 插件開發(fā)和發(fā)布

http://www.reibang.com/p/d6855556cd75
http://www.reibang.com/p/c5666298b8a6
http://blog.csdn.net/tank_in_the_street/article/details/73135410
http://www.cnblogs.com/yesyes/p/7588833.html

[1] install (Vue, options) { }

  • 第一個參數(shù)是 Vue 構(gòu)造器 ,
  • 第二個參數(shù)是一個可選的選項(xiàng)對象:

// plug.js 
const plug = {  //  定義一個對象
    install (Vue, options) {  // 需要擁有一個 install 方法
    }
}
// 導(dǎo)出這個對象
export default plug

----------------------------------------------------------------

然后我們就可以通過 use的方式來使用


import plug from  'plug'
Vue.use(plug)

----------------------------------------------------------------

如果你想把 ( 組件 ) 或 ( 指令 )打包為一個插件來進(jìn)行分發(fā)彤侍,可以這樣寫:


import MyComponent from './components/MyComponent.vue';    // 組件
import MyDirective from './directives/MyDirective.js';    // 指令

const MyPlugin { 
    install(Vue, options) { 
        Vue.component(MyComponent.name, MyComponent)     // 組件
        Vue.directive(MyDirective.name, MyDirective)    // 指令
   }
 }; 

export default MyPlugin;



loading組件的插件化:

// plugin/loadings/loadings.js



import Loading from '../../base/loading/loading.vue'   // 引入loading組件

const LoadingsA = {
  install(Vue, options) {
    Vue.component('Loadingss', Loading)    // 前面是插件名字,后面是組件
  }
}

export default LoadingsA



---------------------------------------------------------------------
// main.js


import LoadingsA from './plugin/loadings/loadings'
Vue.use(LoadingsA)



---------------------------------------------------------------------
// 使用

<template>
  <div class="rank" ref="rank">
    排行頁面
    <RankDetail v-show="aa"></RankDetail>
    <div v-on:click="go">點(diǎn)擊</div>
    <loadingss></loadingss>                              // 使用
  </div>
</template>

[2] 打包插件

// webpack.config.js



module.exports = {
  // entry: './src/main.js',   // 入口文件逆趋,npm run dev和 npm run buid都從這里進(jìn)入
  entry: './src/loading/index.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    // filename: 'build.js'    // 打包后輸出的文件名
    filename: 'loadings.js'
    library: 'loadings', // library指定的就是你使用require時的模塊名盏阶,這里便是require('loadings')
    libraryTarget: 'umd', //libraryTarget會生成不同umd的代碼,可以只是commonjs標(biāo)準(zhǔn)的,也可以是指amd標(biāo)準(zhǔn)的闻书,也可以只是通過script標(biāo)簽引入的名斟。
    umdNamedDefine: true // 會對 UMD 的構(gòu)建過程中的 AMD 模塊進(jìn)行命名脑慧。否則就使用匿名的 define。
  },


[3] 發(fā)布到npm

package.json



//  "private": true,
  "private": false,
  "license": "MIT", // 許可證
  "main": "dist/loadings.js",
        // main :超級重要 決定了你 import xxx from “vue-pay-keyboard” 
       // 它默認(rèn)就會去找 dist下的loadings.js 文件
  "repository": {   // 倉庫
    "type": "git",
    "url": "https://github.com/yucccc/vue-pay-keyboard"
  },// 配置這個地址存放你項(xiàng)目在github上的位置 也尤為重要


----------------------------------------------------------------------------------


OK 一切搞定 發(fā)布npm吧 哦 記得寫一下readme
注冊好npm后 添加用戶

npm adduser 
Username: your name
Password: your password
Email: yourmail[@gmail](/user/gmail).com


(2) Vue.extend ( options ) 擴(kuò)展實(shí)例構(gòu)造器砰盐。( 組件構(gòu)造器 )

也就是一個預(yù)設(shè)了部分選項(xiàng)的 Vue 實(shí)例構(gòu)造器闷袒,vue.extend 組件構(gòu)造器 需要傳入component進(jìn)行注冊

  • Vue.extend( options )
  • 參數(shù):
    {Object} options
  • 用法:
    使用基礎(chǔ) Vue 構(gòu)造器,創(chuàng)建一個“子類”楞卡。參數(shù)是一個包含組件選項(xiàng)的對象霜运。
    data 選項(xiàng)是特例,需要注意 - 在 Vue.extend() 中它必須是函數(shù)

// 創(chuàng)建構(gòu)造器
var Profile = Vue.extend({   // 參數(shù)是包含組件選項(xiàng)的對象
  template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
  data: function () {
    return {
      firstName: 'Walter',
      lastName: 'White',
      alias: 'Heisenberg'
    }
  }
})

// 創(chuàng)建 Profile 實(shí)例蒋腮,并掛載到一個元素上淘捡。
new Profile().$mount('#mount-point')


 var apple = Vue.extend({   // 擴(kuò)展實(shí)例構(gòu)造器,(組件構(gòu)造器)
    ....
 })


 Vue.component('apple',apple) // 把構(gòu)造器池摧,全局注冊成組件


// 然后你可以作用到vue實(shí)例 或者 某個組件中的components屬性中并在內(nèi)部使用apple組件

如:   
new Vue({    
      components:{
        apple:apple
      }
   })


(3) Vue.component 注冊或獲取全局組件

https://segmentfault.com/q/1010000007312426

  • Vue.component( id, [definition] )
  • 參數(shù):
    {string} id
    {Function | Object} [definition]
  • 用法:
    注冊或獲取全局組件焦除。
    注冊還會自動使用給定的id設(shè)置組件的名稱


// 注冊組件,傳入一個擴(kuò)展過的構(gòu)造器
Vue.component('my-component', Vue.extend({ /* ... */ }))

// 注冊組件作彤,傳入一個選項(xiàng)對象 (自動調(diào)用 Vue.extend)
Vue.component('my-component', { /* ... */ })

// 獲取注冊的組件 (始終返回構(gòu)造器)
var MyComponent = Vue.component('my-component')


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末膘魄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子竭讳,更是在濱河造成了極大的恐慌创葡,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绢慢,死亡現(xiàn)場離奇詭異灿渴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)胰舆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門骚露,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缚窿,你說我怎么就攤上這事棘幸。” “怎么了倦零?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵误续,是天一觀的道長。 經(jīng)常有香客問我扫茅,道長女嘲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任诞帐,我火速辦了婚禮,結(jié)果婚禮上爆雹,老公的妹妹穿的比我還像新娘停蕉。我一直安慰自己愕鼓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布慧起。 她就那樣靜靜地躺著菇晃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚓挤。 梳的紋絲不亂的頭發(fā)上磺送,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音灿意,去河邊找鬼估灿。 笑死,一個胖子當(dāng)著我的面吹牛缤剧,可吹牛的內(nèi)容都是我干的馅袁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼荒辕,長吁一口氣:“原來是場噩夢啊……” “哼汗销!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抵窒,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤弛针,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后李皇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體削茁,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年疙赠,在試婚紗的時候發(fā)現(xiàn)自己被綠了付材。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡圃阳,死狀恐怖厌衔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捍岳,我是刑警寧澤富寿,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站锣夹,受9級特大地震影響页徐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜银萍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一变勇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦搀绣、人聲如沸飞袋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巧鸭。三九已至,卻和暖如春麻捻,著一層夾襖步出監(jiān)牢的瞬間纲仍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工贸毕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留郑叠,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓崖咨,卻偏偏與公主長得像锻拘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子击蹲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容