How to implement global loading effect in Vue
Jun 11, 2023 am 09:05 AMIn front-end development, we often have a scenario: the user needs to wait for the data to be loaded during interaction with the web page. At this time, there is usually a loading effect displayed to remind the user to wait. In the Vue framework, it is not difficult to implement a global loading effect. Let’s introduce how to implement it.
Step one: Create a Vue plug-in
We can create a Vue plug-in named loading
, which can be referenced in all Vue instances. In the plug-in, we need to implement the following two methods:
-
show()
: used to display the loading effect -
hide()
: Used to hide the loading effect
The following is the code of the loading
plug-in:
const Loading = { show() { // 顯示loading效果的代碼 }, hide() { // 隱藏loading效果的代碼 } } export default { install(Vue) { Vue.prototype.$loading = Loading } }
In the above code, we define a file named The object of Loading
, which contains methods to show and hide the loading effect. The install()
method is used to install the loading
object onto the Vue instance so that the object can be referenced in all Vue instances.
Step 2: Implement the loading component
In order to achieve the loading effect, we need to add a loading layer covering the entire screen to the Vue component. This can be achieved through CSS. Specifically, we can dynamically add and delete the DOM elements of the loading layer within the Vue component to display and hide the loading effect. The following is a simple loading component:
<template> <div v-if="visible" class="loading-mask"> <div class="loading-spinner"></div> </div> </template> <script> export default { data() { return { visible: false } }, methods: { show() { this.visible = true }, hide() { this.visible = false } } } </script> <style> .loading-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); z-index: 999; display: flex; align-items: center; justify-content: center; } .loading-spinner { border: 4px solid #f3f3f3; border-radius: 50%; border-top: 4px solid #3498db; width: 60px; height: 60px; -webkit-animation: spin 2s linear infinite; animation: spin 2s linear infinite; } @-webkit-keyframes spin { 0% { -webkit-transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); } } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } </style>
In the above code, we define a div layer named loading-mask
, which covers the entire page and sets a semi-transparent black background. In loading-mask
, we added another div layer named loading-spinner
, which is used to display a rotating loading icon. Finally, we defined a visible
variable in the data
of the Vue component to determine whether the loading layer needs to be displayed.
Step 3: Use loading in the component
Now that we have implemented a basic loading component and a Vue plug-in, we need to use them in the Vue component.
First, introduce the Vue plug-in just created into the Vue component, and add the loading component to the current component:
<template> <div> <h1>這是一個Vue組件</h1> <loading ref="loading"></loading> </div> </template> <script> import LoadingPlugin from '@/plugins/loading' import Loading from '@/components/Loading' export default { name: 'HelloWorld', components: { Loading }, mounted() { this.$loading = this.$refs.loading }, plugins: [ LoadingPlugin ], methods: { fetchData() { this.$loading.show() // 顯示loading效果 // 發(fā)送請求 // ... this.$loading.hide() // 隱藏loading效果 } } } </script>
In the above code, we first introduce the Vue plug-in created before LoadingPlugin
, and then use the components
attribute to add the loading component to the current component. In the mounted()
method, we assign the instance of the loading component to the $loading
property, so that we can call the show and hide methods in the current component to show and hide the loading effect.
Finally, in the fetchData() method, we can call this.$loading.show()
to display the loading effect. After the data is loaded, call this. $loading.hide()
method to hide it. In this way we successfully achieved a global loading effect.
Summary
In this article, we introduced how to implement a global loading effect in the Vue framework. We created a loading
plugin and installed it into the Vue instance so that it can be called in all Vue components. We also implemented a loading component, in which DOM elements are dynamically added and deleted to display and hide the loading effect. Finally, we call the show and hide methods of the $loading object in the Vue component to show and hide the loading effect. This implementation allows us to achieve a good user experience, reduce user waiting time, and improve application performance.
The above is the detailed content of How to implement global loading effect in Vue. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

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

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

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

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

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

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

Hot Topics

You can add a function to the Vue button by binding the button in the HTML template to a method. Define the method and write function logic in the Vue instance.

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

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.

There are two ways to jump div elements in Vue: use Vue Router and add router-link component. Add the @click event listener and call this.$router.push() method to jump.

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.

The methods to implement the jump of a tag in Vue include: using the a tag in the HTML template to specify the href attribute. Use the router-link component of Vue routing. Use this.$router.push() method in JavaScript. Parameters can be passed through the query parameter and routes are configured in the router options for dynamic jumps.

There are the following methods to implement component jump in Vue: use router-link and <router-view> components to perform hyperlink jump, and specify the :to attribute as the target path. Use the <router-view> component directly to display the currently routed rendered components. Use the router.push() and router.replace() methods for programmatic navigation. The former saves history and the latter replaces the current route without leaving records.

Pagination is a technology that splits large data sets into small pages to improve performance and user experience. In Vue, you can use the following built-in method to paging: Calculate the total number of pages: totalPages() traversal page number: v-for directive to set the current page: currentPage Get the current page data: currentPageData()
