如何寫一個vue組件專題及常見問題 - CSDN

2021-01-08 CSDN技術社區
如何使用vue寫一個組件庫新建vue項目

使用vue-cli初始化一個項目:

vue init webpack VueComponentcd VueComponentnpm installnpm run dev

以上就新建好了一個vue項目

項目目錄

首先,定義好目錄,經過觀察大多數的組件庫,基本是這樣的目錄:

|-- examples // 用於demo展示|-- packages // 用於編寫存放組件

因為修改了目錄名稱,就需要修改下webpack的配置文件,修改編輯目錄
build/webpack.bash.config.js

{ test: /\.js$/, loader: 'babel-loader', include: [resolve('examples'), resolve('test'), resolve('node_modules/webpack-dev-server/client'),resolve('packages')]}

將編譯目錄指向examples和packages。

寫一個組件

在packages下面創建一個Button組件,目錄如下(目錄構建都是參照ele-ui)

|-- examples |-- packages | |--Button| |--src| | |--main.vue // 編寫組件內容| |-- index.js // 導出組件

main.vue內容:

<template> <div> button按鈕組件 </div></template><script> export default{ name: 'MButton', // 定義這個組件的名稱 }</script>

index.js內容:

import Button from './src/main.vue';// 在每個組件下面定義一個install方法。Button.install = function (Vue) { Vue.component(Button.name, Button);};export default Button;

到此,就完成了一個組件的簡單編寫

導出組件

組件寫好之後,需要讓組件支持全局引入和按需引,在packages下面新建一個index.js文件,用於將組件導出
代碼:

import Button from './button/index.js'; // 引入組件const components = [ Button];//'vue-use是調用的install方法'const install = function(Vue) { if (install.installed) return; components.map(component => Vue.component(component.name, component));};if (typeof window !== 'undefined' && window.Vue) { console.log('傳入參數install方法') install(window.Vue);}export default { install, // 如果在外面使用vue.use的話,就會默認使用install方法 Button};

這裡為什麼要定義一個install方法呢?看下vue源碼

import { toArray } from '../util/index'export function initUse (Vue: GlobalAPI) { Vue.use = function (plugin: Function | Object) { const installedPlugins = (this._installedPlugins || (this._installedPlugins = [])) if (installedPlugins.indexOf(plugin) > -1) { return this } // additional parameters const args = toArray(arguments, 1) args.unshift(this) ⚠️ if (typeof plugin.install === 'function') { ⚠️ plugin.install.apply(plugin, args) } else if (typeof plugin === 'function') { plugin.apply(null, args) } installedPlugins.push(plugin) return this }}

由此可見,vue.use是調用傳入的組件的instll方法。這也就解釋了,為什麼每個組件都定義了一個install方法。

使用組件

在examples的main.js裡面引入組件:

import MVUI from '../packages/index'Vue.use(MVUI)

到此,一個非常簡單的組件就寫好了。

相關焦點

  • vue 具名插槽詳解專題及常見問題 - CSDN
    插槽含義:就是引入子組件後,在插入子組件元素中添加信息或者標籤,使得子組件的指定位置插入信息或者標籤插槽有三種:默認插槽、具名插槽、作用域插槽,由於vue2.6.0後對插槽進行修改,但是兼容2.6.0前的版本,博文中只說明2.6.0後的插槽,vue3.0後面會去除2.60前的版本兼容  一、默認插槽<
  • ref vue 獲取文本專題及常見問題 - CSDN
    ref的官網介紹https://cn.vuejs.org/v2/api/#ref需求在普通的js操作中,一般都是直接操作dom元素,但是對於Vue.js框架來說,一般是不允許直接操作dom元素的。那麼其實Vue.js框架提供了ref獲取dom元素,以及組件引用。
  • template標籤 vue 作用專題及常見問題 - CSDN
    footer> </div> ` }); var vm = new Vue({ el: '#app', data: { } }); </script></body></html>這裡父組件模板中
  • vue 作用域插槽的使用專題及常見問題 - CSDN
    關於vue插槽,也用過很多次了,但是關於作用域插槽的用法,有些模糊,查了很多文檔,自己理解記憶。在官網上說:舉例:你現在有一個組件,這個組件叫:navigation-link,它裡面有一個匿名插槽,它被在另一個組建中調用,並且傳入一個url,要在這個組件中渲染出來:<navigation-link url="/profile"> <span> {{ url }}</span></navigation-link
  • slot vue 具名專題及常見問題 - CSDN
    vue的slot1、什麼是slotslot是插槽,插即是可以插入,槽就是坑,即是可以再代碼中插入如果子組件模板中不包含插口,那麼父組件的內容將會被丟棄。當子組件模板中有一個麼有屬性的插槽時,父組件傳入的整個內容片段,將插入到插槽所在的dom的位置,並替換掉插槽標籤本身。
  • a標籤 href vue專題及常見問題 - CSDN
    此處的將a的標籤href實現綁定:href同時對路徑進一步轉化拼接以上這篇vue.js 實現a標籤href裡添加參數就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。第四步,通過api配置所想要的功能 代碼: 本文實例為大家分享了vue實現微信分享功能的具體代碼,供大家參考,具體內容如下 1.引入微信js 2.從後臺獲取籤名並分享 fenxiangFun(){//詳情分享 var that = this; this.$http({ url:this.changeDa1."
  • vuejs 傳值給組件專題及常見問題 - CSDN
    當父組件要給孫子,或者孫子與孫子要傳值的時候怎麼傳,一層一層傳太麻煩了,vuejs提供了一中模式叫發布訂閱模式(觀察者模式,bus,總線)來處理非父子組件間的傳值 <div id='root'>  <child content = 'Dell'>
  • table vue插槽的使用 - CSDN
    插槽,也就是slot,是組件的一塊HTML模板,這塊模板顯示不顯示、以及怎樣顯示由父組件來決定。 實際上,一個slot最核心的兩個問題在這裡就點出來了,是顯示不顯示和怎樣顯示。  由於插槽是一塊模板,所以,對於任何一個組件,從模板種類的角度來分,其實都可以分為非插槽模板和插槽模板兩大類。
  • vue高級進階系列——用typescript玩轉vue和vuex
    完成了這些,vuex的工作大致告於段落,接下來我們關注的重點就是頁面組件和如何在組件中使用vuex。// home.vue<template><div><img alt="Vue logo" src="..
  • 供我們選擇的 Vue 組件庫還有很多!
    那麼面對這樣的情況,作為前端開發的我們應該如何將損失降到最低呢?我的答案是:可以換 UI 組件庫的話儘量早點換,避免後期因為框架的問題沒能解決而坑了項目,僅代表個人觀點。如上圖所示,我最近開源的 Vue 版的新蜂商城項目選擇的組件庫是 Vant,不出意外應該會持續更新,這樣就少了一些困擾。
  • Vue全家桶之什麼是Vuex
    為此,Vue為這些被多個組件頻繁使用的值提供了一個統一管理的工具——VueX。也就是說如果您需要構建一個中大型單頁應用,您很可能會考慮如何更好地在組件外部管理數據狀態,Vuex 將會成為自然而然的選擇。為什麼使用Vuex ?
  • vue-mapvgl v0.0.10 發布,基於 Vue 2.0 和百度地圖的地圖組件
    vue-mapvgl v0.0.10 已經發布,此版本更新內容包括:vue-mapvgl是一套基於Vue 2.0和百度地圖mapvgl的地圖組件。
  • Vue.js 教程:構建一個特斯拉汽車餘電計算器
    但很多人都關心的一個問題是,電車充滿電後究竟可以跑多遠?行駛速度、氣溫和輪轂尺寸會對續航裡程有什麼影響?在本教程中,我們會使用 Vue.js 這個容易理解的 JavaScript 框架製作一個儀錶盤,通過它可以計算特斯拉電動汽車在不同情況下的行駛距離。
  • 在vue項目中使用vuex實現狀態管理的案例
    說明:其實如果項目不是很龐大很複雜,沒有涉及到很多狀態值需要被很多頁面或組件共用;或者某個頁面或組件的行為會對其他頁面或組件造成依賴性的影響。並不需要使用vuex。vuex的使用與否在實際開發中應該視項目情況而定。準備工作:a.在vue項目中安裝vuex: npm install vuex -S。b.了解下vuex的五個屬性。
  • 什麼是VUE?VUE與JS的對比
    1.1. vue的引入先看下面這樣一個簡單的例子,實現了這樣一個功能數據的雙向綁定:也就是數據的同步修改我們需要一個UI元素和屬性相互綁定的方法 2. 我們需要監視屬性和UI元素的變化 3.
  • 如何在vue項目中使用sass並設置元素樣式
    那麼,如何在vue項目中使用sass?新建項目,選擇vue模板2、在項目中src/components文件夾下,新建vue文件,輸入文件名稱,點擊創建文件,利用Element進行頁面布局,插入一個輸入框和一個按鈕,綁定按鈕點擊事件頁面布局,插入一個輸入框和一個按鈕
  • 什麼是MVVM,MVC和MVVM的區別,MVVM框架VUE實現原理
    比如:angular、react、vue。瀏覽器的兼容性問題已經不再是前端的阻礙。前端的項目越來越大,項目的可維護性和擴展性、安全性等成了主要問題。當年為了解決瀏覽器兼容性問題,出現了很多類庫,其中最典型的就是jquery。但是這類庫沒有實現對業務邏輯的分成,所以維護性和擴展性極差。
  • vue3.0手機聊天室|Vue3+Vant3仿微信界面
    項目簡介Vue3Chat是基於vue3.x+vuex4+vue-router4全家桶技術和vant3.x構建開發的一款mobile仿微信界面聊天實例。實現了發送圖文消息、圖片|視頻預覽、位置查看、紅包|朋友圈等功能。
  • Vue 3 的最新進展
    尤雨溪表示,由於在 Vue 3 上花費的大部分時間都投入到了設計和構建穩定的內核上,不過要讓整個框架處於"ready"狀態,不僅僅是內核的問題,還需要有兼容版本的支持庫 (Vue Router, Vuex, test utils)、工具(CLI、eslint 插件、瀏覽器開發工具擴展、IDE 擴展)和文檔(包括針對新用戶和用於遷移的文檔)。
  • Vue+Axios+Vuex+Vux+Vue-Router全家桶搭建前端框架
    等等,太多了,那我們如何在這繁雜的框架中選擇一個合適的呢?其實也不難,秉承效率第一的原則,首先我們必須選擇一個能提高我們工作效率的,所以此時就要對他們有一個簡單的了解,簡單說一下:一、Angular依託於老大哥Google,應用很廣泛,而且相對來說比較成熟穩定一些,然而他有一些比較晦澀難懂的語法,雙向綁定不是容易理解;而且學習成本相對來說比較大,入手不容易,況且很難與現有項目無縫融合,開發成本也就高了;二、再來看看React,出身名門