淺談Vue.use到底是什麼?
Vue.use到底是什麼鬼、下面這篇文章就來跟大家介紹一下Vue.use。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
我們在使用Vue做專案開發的時候,看到不少輪子都是透過Vue.use
來進行使用,感覺甚是高大上。
不過Vue.use
到底是什麼鬼?不妨來看個究竟。
其實這些輪子都可以稱之為插件,它的功能範圍沒有嚴格的限制,一般包含以下幾種:
- ##新增全域方法或屬性。如:
- vue-custom-element
- vue-touch
- vue-router
- Vue
實例方法,透過將它們加入
Vue.prototype上實作。
一個函式庫,提供自己的 API,同時提供上述的一個或多個功能。如 - vue-router
new Vue()之前使用外掛程式。
vue-router、
vuex),或是第三方的外掛程式(例如
ElementUI、
ant)都是採用了此方式,不外乎外掛內部的功能不同而已。當然,還有其他許多此類插件,
awesome-vue 就集合了大量由社群貢獻的插件和函式庫。
use方法是如何實現的。
Vue.js 的外掛程式應該要揭露一個
install 方法。這個方法的第一個參數是
Vue 建構器,第二個參數是一個可選的選項對象,用來傳入插件的配置:
MyPlugin.install = function (Vue, options) { // 1. 添加全局方法或属性 Vue.myGlobalMethod = function () { // 逻辑... } // 2. 添加全局资源 Vue.directive('my-directive', { bind (el, binding, vnode, oldVnode) { // 逻辑... } ... }) // 3. 注入组件选项 Vue.mixin({ created: function () { // 逻辑... } ... }) // 4. 添加实例方法 Vue.prototype.$myMethod = function (methodOptions) { // 逻辑... } // 5. 注册全局组件 Vue.component('myButton',{ // ...组件选项 }) }
Vue.use(MyPlugin,{ // ...options })
ElementUI:
const components = [ Pagination, Dialog, Autocomplete/* 此处由于篇幅省略若干个组件 */]; const install = function(Vue, opts = {}) { locale.use(opts.locale); locale.i18n(opts.i18n); // 注册全局组件 components.forEach(component => { Vue.component(component.name, component); }); Vue.use(InfiniteScroll); Vue.use(Loading.directive); // 添加实例方法 Vue.prototype.$ELEMENT = { size: opts.size || '', zIndex: opts.zIndex || 2000 }; // 添加实例方法 Vue.prototype.$loading = Loading.service; Vue.prototype.$msgbox = MessageBox; Vue.prototype.$alert = MessageBox.alert; Vue.prototype.$confirm = MessageBox.confirm; Vue.prototype.$prompt = MessageBox.prompt; Vue.prototype.$notify = Notification; Vue.prototype.$message = Message; }; /* istanbul ignore if */ if (typeof window !== 'undefined' && window.Vue) { install(window.Vue); } export default { version: '2.13.0', locale: locale.use, i18n: locale.i18n, install, CollapseTransition, Loading, Pagination, Dialog, Autocomplete, // ...other components };
install方法即可,使用
Vue.use的時候,會呼叫這個方法。所以我們只要將要實現的內容放到
install內部即可。這樣的好處就是外掛程式需要一開始呼叫的方法都封裝在
install裡面,更加精簡和可拓展性更高。
install其實是將所有的元件全部引入了。作為一個龐大的插件庫,這樣可能會有一些效能問題。用過的
ElementUI的同學都知道,它是支援按需引入的,其實在上面的範例中也可以發現一些蛛絲馬跡。
const components = [ Pagination, Dialog, Autocomplete/* 此处由于篇幅省略若干个组件 */]; // ....省去中间内容 export default { version: '2.13.0', locale: locale.use, i18n: locale.i18n, install, CollapseTransition, Loading, Pagination, Dialog, Autocomplete, // ...other components };
install來組件每個組件,這樣就可以單獨
Vue.use每個元件,從而實現按需引入的目的。
import Alert from './src/main'; /* istanbul ignore next */ Alert.install = function(Vue) { Vue.component(Alert.name, Alert); }; export default Alert;
- 外掛程式傳入的如果是一個對象,則執行其
- install
方法,如果是函數,則執行它自身,並
bind為
null,然後傳入額外的參數
- installed
的屬性,其值為
true。
Vue.use方法內部會偵測外掛程式的
installed屬性,以避免重複註冊外掛程式
if (typeof plugin.install === 'function') { plugin.install.apply(plugin, args); } else if (typeof plugin === 'function') { plugin.apply(null, args); }
- 如果外掛程式沒有被註冊過,那麼註冊成功之後會為外掛程式增加一個
Vue.use其實並不神秘,內部還是我們平常使用的這些東西,僅僅只是給他們套上了一層高端的外衣而已。我們在開發中,也可以嘗試使用這種方式,不僅簡單,而且有逼格。
相關推薦:更多程式相關知識,請造訪:
程式設計入門! !
以上是淺談Vue.use到底是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用vue框架開發前端專案時,我們部署的時候都會部署多套環境,往往開發、測試以及線上環境呼叫的介面網域都是不一樣的。如何能做到區分呢?那就是使用環境變數和模式。

Ace 是一個用 JavaScript 寫的可嵌入程式碼編輯器。它與 Sublime、Vim 和 TextMate 等原生編輯器的功能和效能相符。它可以很容易地嵌入到任何網頁和 JavaScript 應用程式中。 Ace 被維護為Cloud9 IDE的主要編輯器 ,並且是 Mozilla Skywriter (Bespin) 專案的繼承者。

組件化和模組化的區別:模組化是從程式碼邏輯的角度進行劃分的;方便程式碼分層開發,確保每個每個功能模組的職能一致。元件化是從UI介面的角度進行規劃;前端的元件化,方便UI元件的重複使用。

在當今前端開發中,Vue.js 已經成為了一個非常流行的框架。隨著 Vue.js 的不斷發展,單元測試變得越來越重要。今天,我們將探討如何在 Vue.js 3 中編寫單元測試,並提供一些最佳實踐和常見的問題及解決方案。

在我們使用高德地圖的時候,官方給我們推薦了很多案例,demo,但是這些案例都是使用原生方法接入,並沒有提供vue或者react 的demo,vue2的接入網上也很多人都有寫過,以下這篇文章就來看看vue3怎麼使用常用的高德地圖api,希望對大家有幫助!

查詢目前vue版本的兩種方法:1、在cmd控制台內,執行「npm list vue」指令查詢版本,輸出結果就是vue的版本號資訊;2、在專案中找到並開啟package.json文件,查找「dependencies」項目即可看到vue的版本資訊。

在Vue.js中,開發人員可以使用兩種不同的語法來建立使用者介面:JSX語法和範本語法。這兩種文法各有優劣,以下就來探討它們的差異和優劣勢。

在實際開發專案過程中有時候需要上傳比較大的文件,然後呢,上傳的時候相對來說就會慢一些,so,後台可能會要求前端進行文件切片上傳,很簡單哈,就是把比如說1個G的檔案流切割成若干個小的檔案流,然後分別請求介面傳遞這個小的檔案流。
