Those who have experience in vue development are no stranger to vue.use. When using global components such as vue-resource or vue-router, they must be introduced through the Vue.use method to work. So what exactly does vue.use do before the component is introduced?
First go to the vue.use source code
Vue.use = function (plugin) { /* istanbul ignore if */ if (plugin.installed) { return } // additional parameters var 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); } plugin.installed = true; return this };
Suppose we introduce a plug-in plugin through Vue.use (the plug-in can be temporarily understood as a variable or parameter), that is, Vue.use(plugin);
First determine whether the attribute installed of the incoming parameter plugin exists. If it exists and the logical value is true, then return directly and the subsequent code will not be executed. What is the role of this judgment? Will talk about it later.
We first assume that the plugin attribute installed does not exist or is false, then continue to execute
var args = toArray(arguments, 1)
A toArray method is executed, toArray receives two parameters, arguments are Vue The set of parameters passed in by the .use method, such as Vue.use(a,b,c), then the arguments are similar to [a,b,c] (Note: arguments are just array-like, not real arrays)
Here because we only introduce one parameter plugin, the arguments are similar to [plugin].
What is the function of toArray? Look at the source code.
function toArray (list, start) { start = start || 0; var i = list.length - start; var ret = new Array(i); while (i--) { ret[i] = list[i + start]; } return ret }
When executing toArray(arguments,1), a new array ret will be generated with length = arguments.length-1, and then a while loop will be performed to assign the elements of arguments to ret in reverse order, because ret is longer than arguments. The length is 1.
So it is ultimately equivalent to assigning the remaining elements except the first element to ret. The main function of toArray is to convert a class array into a real array so that the array method can be called.
Because I only introduce one plugin parameter here, arguments=[plugin], so toArray returns an empty array [].
Then execute, args.unshift(this), which is equivalent to [].unshift(Vue), that is, args = [Vue];
Then execute
if (typeof plugin.install === 'function') { plugin.install.apply(plugin, args); } else if (typeof plugin === 'function') { plugin.apply(null, args); }
Here, it is judged whether the plugin's install is a function. If it is a function, the plugign.install method is executed immediately. The parameters passed in by the install method are the array elements in args, that is, the first parameter accepted by install is Vue.
If the plugin's install is not a function, then determine whether the plugin itself is a function. If it is a function, then execute the plugin function, and the parameters are array elements in args.
Finally set plugin.installed to true. The purpose of setting plugin.installed to true is to prevent the same plug-in from being installed multiple times. For example, after Vue.use (plugin) is executed once, installed is true. If it is executed again, it will return to the first step of judgment.
To sum up, the function of Vue.use is actually to execute a plugin function or execute the install method of pluign to register the plugin, and pass the Vue object as the first parameter to the plugin or its install method, use The other parameters are used as other parameters of plugin or install.
Give a simple example
import Vue from 'vue' function test(a){ console.log(a);//Vue } function test1(a,b){ console.log(a,b);//Vue hello } let oTest = { install:function(a,b){ console.log(a,b);//Vue hello1 } } Vue.use(test); Vue.use(test1,'hello'); Vue.use(oTest,'hello1') console.log(oTest); //{ install:function(){...}, installed:true }
Related recommendations:
2020 Summary of front-end vue interview questions (with answers)
vue tutorial recommendation: The latest 5 vue.js video tutorial selections in 2020
For more programming-related knowledge, please visit: Introduction to programming! !
The above is the detailed content of Analyze the source code of Vue.use. For more information, please follow other related articles on the PHP Chinese website!

Vue.js improves user experience through multiple functions: 1. Responsive system realizes real-time data feedback; 2. Component development improves code reusability; 3. VueRouter provides smooth navigation; 4. Dynamic data binding and transition animation enhance interaction effect; 5. Error processing mechanism ensures user feedback; 6. Performance optimization and best practices improve application performance.

Vue.js' role in web development is to act as a progressive JavaScript framework that simplifies the development process and improves efficiency. 1) It enables developers to focus on business logic through responsive data binding and component development. 2) The working principle of Vue.js relies on responsive systems and virtual DOM to optimize performance. 3) In actual projects, it is common practice to use Vuex to manage global state and optimize data responsiveness.

Vue.js is a progressive JavaScript framework released by You Yuxi in 2014 to build a user interface. Its core advantages include: 1. Responsive data binding, automatic update view of data changes; 2. Component development, the UI can be split into independent and reusable components.

Netflix uses React as its front-end framework. 1) React's componentized development model and strong ecosystem are the main reasons why Netflix chose it. 2) Through componentization, Netflix splits complex interfaces into manageable chunks such as video players, recommendation lists and user comments. 3) React's virtual DOM and component life cycle optimizes rendering efficiency and user interaction management.

Netflix's choice in front-end technology mainly focuses on three aspects: performance optimization, scalability and user experience. 1. Performance optimization: Netflix chose React as the main framework and developed tools such as SpeedCurve and Boomerang to monitor and optimize the user experience. 2. Scalability: They adopt a micro front-end architecture, splitting applications into independent modules, improving development efficiency and system scalability. 3. User experience: Netflix uses the Material-UI component library to continuously optimize the interface through A/B testing and user feedback to ensure consistency and aesthetics.

Netflixusesacustomframeworkcalled"Gibbon"builtonReact,notReactorVuedirectly.1)TeamExperience:Choosebasedonfamiliarity.2)ProjectComplexity:Vueforsimplerprojects,Reactforcomplexones.3)CustomizationNeeds:Reactoffersmoreflexibility.4)Ecosystema

Netflix mainly considers performance, scalability, development efficiency, ecosystem, technical debt and maintenance costs in framework selection. 1. Performance and scalability: Java and SpringBoot are selected to efficiently process massive data and high concurrent requests. 2. Development efficiency and ecosystem: Use React to improve front-end development efficiency and utilize its rich ecosystem. 3. Technical debt and maintenance costs: Choose Node.js to build microservices to reduce maintenance costs and technical debt.

Netflix mainly uses React as the front-end framework, supplemented by Vue for specific functions. 1) React's componentization and virtual DOM improve the performance and development efficiency of Netflix applications. 2) Vue is used in Netflix's internal tools and small projects, and its flexibility and ease of use are key.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Dreamweaver Mac version
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools

Zend Studio 13.0.1
Powerful PHP integrated development environment