Heim Web-Frontend js-Tutorial So verwenden Sie die Skelett-Bildschirminjektion von Vue-Seiten

So verwenden Sie die Skelett-Bildschirminjektion von Vue-Seiten

May 30, 2018 am 09:55 AM
Injektion 页面

Dieses Mal zeige ich Ihnen, wie Sie die Vue-Seitenskelett-Bildschirminjektion verwenden und welche Vorsichtsmaßnahmen bei der Verwendung der Vue-Seiten-Skelett-Bildschirminjektion gelten. Hier sind praktische Fälle, werfen wir einen Blick darauf.

Als Frontend-Entwickler, der den engsten Kontakt zu den Benutzern hat, ist die Benutzererfahrung das wichtigste Thema. Bezüglich der Anzeige des Seitenladestatus gibt es zwei gängige Methoden: Ladediagramm und Fortschrittsbalken. Darüber hinaus nutzen immer mehr Apps die „Skeleton Screen“-Methode, um ungeladene Inhalte anzuzeigen, was den Nutzern ein völlig neues Erlebnis bietet. Da SPA in der Front-End-Welt immer beliebter wird, plagt auch das Problem des Ladens des ersten Bildschirms Entwickler. Gibt es also eine Möglichkeit, Skelettbildschirme in SPA zu verwenden? Dies wird in diesem Artikel untersucht.

Der relevante Code des Artikels wurde mit Github synchronisiert, bitte überprüfen Sie ~

1 Was ist ein Skelettbildschirm?

Einfach ausgedrückt verwendet der Skelettbildschirm einige Grafiken als Platzhalter, wenn der Seiteninhalt nicht geladen ist, und ersetzt sie dann, nachdem der Inhalt geladen wurde.

Diese Technologie wird häufig in einigen inhaltsbasierten APPs und Webseiten verwendet. Nehmen wir als Nächstes ein einfaches Vue-Projekt als Beispiel, um zu untersuchen, wie man Vue-basiertes Implementieren verwendet Skelettbildschirm im SPA-Projekt.

2. Analysieren Sie den Inhaltsladevorgang der Vue-Seite

Der Einfachheit halber verwenden wir vue-cli mit dem Webpack- einfache Vorlage zum Erstellen eines neuen Projekts:

vue init webpack-simple vue-skeleton

Zu diesem Zeitpunkt haben wir ein einfachstes Vue-Projekt erhalten:

├── package.json
├── src
│ ├── App.vue
│ ├── assets
│ └── main.js
├── index.html
└── webpack.conf.js
Nach dem Login kopieren

Nach der Installation der Abhängigkeiten können Sie es ausführen durch npm run dev dieses Projekt. Bevor wir jedoch das Projekt ausführen, schauen wir uns zunächst an, was in der HTML-Eintragsdatei steht.

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="utf-8">
 <title>vue-skeleton</title>
 </head>
 <body>
 <p id="app"></p>
 <script src="/dist/build.js"></script>
 </body>
</html>
Nach dem Login kopieren

Wie Sie sehen können, gibt es in

im DOM nur eine p#app. Wenn js ausgeführt wird, können wir dies tun Machen Sie ein Experiment und fügen Sie etwas Inhalt zu diesem p hinzu:

<p id="app">
 <p>Hello skeleton</p>
 <p>Hello skeleton</p>
 <p>Hello skeleton</p>
</p>
Nach dem Login kopieren

Öffnen Sie die Entwicklertools von Chrome, suchen Sie die Drosselfunktion im Netzwerk, stellen Sie die Netzwerkgeschwindigkeit auf „Langsam 3G“ ein, aktualisieren Sie die Seite, und Sie sehen die Seite zuerst Zeigt drei Sätze von „Hallo Skelett“ an, die nach dem Laden des js durch den ursprünglichen Inhalt ersetzt werden.

Jetzt haben wir eine ganz klare Vorstellung davon, wie wir den Skelettbildschirm auf der Vue-Seite implementieren können – fügen Sie einfach den Skelettbildschirm-bezogenen Inhalt direkt in p#app ein.

3. Einfach zu wartende Lösung

Offensichtlich ist es unwissenschaftlich, den Skelettbildschirminhalt manuell in p#app zu schreiben Sie benötigen eine hoch skalierbare, automatisierte und einfach zu wartende Lösung. Da es sich um ein Vue-Projekt handelt, hoffen wir natürlich, dass der sogenannte Skelettbildschirm auch eine .vue-Datei ist, die vom Tool während der Erstellung automatisch in p#app eingefügt werden kann.

Zuerst erstellen wir eine neue Skeleton.vue-Datei im Verzeichnis /src mit folgendem Inhalt:

<template>
 <p class="skeleton page">
 <p class="skeleton-nav"></p>
 <p class="skeleton-swiper"></p>
 <ul class="skeleton-tabs">
 <li v-for="i in 8" class="skeleton-tabs-item"><span></span></li>
 </ul>
 <p class="skeleton-banner"></p>
 <p v-for="i in 6" class="skeleton-productions"></p>
 </p>
</template>
<style>
.skeleton {
 position: relative;
 height: 100%;
 overflow: hidden;
 padding: 15px;
 box-sizing: border-box;
 background: #fff;
}
.skeleton-nav {
 height: 45px;
 background: #eee;
 margin-bottom: 15px;
}
.skeleton-swiper {
 height: 160px;
 background: #eee;
 margin-bottom: 15px;
}
.skeleton-tabs {
 list-style: none;
 padding: 0;
 margin: 0 -15px;
 display: flex;
 flex-wrap: wrap;
}
.skeleton-tabs-item {
 width: 25%;
 height: 55px;
 box-sizing: border-box;
 text-align: center;
 margin-bottom: 15px;
}
.skeleton-tabs-item span {
 display: inline-block;
 width: 55px;
 height: 55px;
 border-radius: 55px;
 background: #eee;
}
.skeleton-banner {
 height: 60px;
 background: #eee;
 margin-bottom: 15px;
}
.skeleton-productions {
 height: 20px;
 margin-bottom: 15px;
 background: #eee;
}
</style>
Nach dem Login kopieren

Als nächstes erstellen wir eine neue Skeleton.entry.js Entry-Datei:

import Vue from 'vue'
import Skeleton from './Skeleton.vue'
export default new Vue({
 components: {
 Skeleton
 },
 template: '<skeleton />'
})
Nach dem Login kopieren

Nach Abschluss der Vorbereitung des Skelettbildschirms ist ein wichtiges Plug-in, der Vue-Server-Renderer, an der Reihe. Dieses Plug-In wird ursprünglich für das serverseitige Rendering verwendet, aber in diesem Beispiel verwenden wir seine Funktion hauptsächlich zum Verarbeiten von .vue -Dateien in HTML- und CSS-Strings, um die Injektion des Skelettbildschirms abzuschließen. Der Vorgang ist wie folgt :

4. Lösungsimplementierung

Gemäß dem Flussdiagramm müssen wir auch eine erstellen Das neue Webpack in der Datei .skeleton.conf.js im Stammverzeichnis wird speziell zum Erstellen von Skelettbildschirmen verwendet.

const path = require('path')
const webpack = require('webpack')
const nodeExternals = require('webpack-node-externals')
const VueSSRServerPlugin = require('vue-server-renderer/server-plugin')
module.exports = {
 target: 'node',
 entry: {
 skeleton: './src/skeleton.js'
 },
 output: {
 path: path.resolve(dirname, './dist'),
 publicPath: '/dist/',
 filename: '[name].js',
 libraryTarget: 'commonjs2'
 },
 module: {
 rules: [
 {
 test: /\.css$/,
 use: [
 'vue-style-loader',
 'css-loader'
 ]
 },
 {
 test: /\.vue$/,
 loader: 'vue-loader'
 }
 ]
 },
 externals: nodeExternals({
 whitelist: /\.css$/
 }),
 resolve: {
 alias: {
 'vue$': 'vue/dist/vue.esm.js'
 },
 extensions: ['*', '.js', '.vue', '.json']
 },
 plugins: [
 new VueSSRServerPlugin({
 filename: 'skeleton.json'
 })
 ]
}
Nach dem Login kopieren

可以看到,该配置文件和普通的配置文件基本完全一致,主要的区别在于其 target: 'node' ,配置了 externals ,以及在 plugins 里面加入了 VueSSRServerPlugin 。在 VueSSRServerPlugin 中,指定了其输出的json文件名。我们可以通过运行下列指令,在 /dist 目录下生成一个 skeleton.json 文件:

webpack --config ./webpack.skeleton.conf.js

这个文件在记载了骨架屏的内容和样式,会提供给 vue-server-renderer 使用。

接下来,在根目录下新建一个 skeleton.js ,该文件即将被用于往 index.html 内插入骨架屏。

const fs = require('fs')
const { resolve } = require('path')
const createBundleRenderer = require('vue-server-renderer').createBundleRenderer
// 读取`skeleton.json`,以`index.html`为模板写入内容
const renderer = createBundleRenderer(resolve(dirname, './dist/skeleton.json'), {
 template: fs.readFileSync(resolve(dirname, './index.html'), 'utf-8')
})
// 把上一步模板完成的内容写入(替换)`index.html`
renderer.renderToString({}, (err, html) => {
 fs.writeFileSync('index.html', html, 'utf-8')
})
Nach dem Login kopieren

注意,作为模板的 html 文件,需要在被写入内容的位置添加 占位符,本例子在 p#app 里写入:

<p id="app">
 <!--vue-ssr-outlet-->
</p>
Nach dem Login kopieren

接下来,只要运行 node skeleton.js ,就可以完成骨架屏的注入了。运行效果如下:

<html lang="en">
 <head>
 <meta charset="utf-8">
 <title>vue-skeleton</title>
 <style data-vue-ssr-id="742d88be:0">
.skeleton {
 position: relative;
 height: 100%;
 overflow: hidden;
 padding: 15px;
 box-sizing: border-box;
 background: #fff;
}
.skeleton-nav {
 height: 45px;
 background: #eee;
 margin-bottom: 15px;
}
.skeleton-swiper {
 height: 160px;
 background: #eee;
 margin-bottom: 15px;
}
.skeleton-tabs {
 list-style: none;
 padding: 0;
 margin: 0 -15px;
 display: flex;
 flex-wrap: wrap;
}
.skeleton-tabs-item {
 width: 25%;
 height: 55px;
 box-sizing: border-box;
 text-align: center;
 margin-bottom: 15px;
}
.skeleton-tabs-item span {
 display: inline-block;
 width: 55px;
 height: 55px;
 border-radius: 55px;
 background: #eee;
}
.skeleton-banner {
 height: 60px;
 background: #eee;
 margin-bottom: 15px;
}
.skeleton-productions {
 height: 20px;
 margin-bottom: 15px;
 background: #eee;
}
</style></head>
 <body>
 <p id="app">
 <p data-server-rendered="true" class="skeleton page"><p class="skeleton-nav"></p> <p class="skeleton-swiper"></p> <ul class="skeleton-tabs"><li class="skeleton-tabs-item"><span></span></li><li class="skeleton-tabs-item"><span></span></li><li class="skeleton-tabs-item"><span></span></li><li class="skeleton-tabs-item"><span></span></li><li class="skeleton-tabs-item"><span></span></li><li class="skeleton-tabs-item"><span></span></li><li class="skeleton-tabs-item"><span></span></li><li class="skeleton-tabs-item"><span></span></li></ul> <p class="skeleton-banner"></p> <p class="skeleton-productions"></p><p class="skeleton-productions"></p><p class="skeleton-productions"></p><p class="skeleton-productions"></p><p class="skeleton-productions"></p><p class="skeleton-productions"></p></p>
 </p>
 <script src="/dist/build.js"></script>
 </body>
</html>
Nach dem Login kopieren

可以看到,骨架屏的样式通过 标签直接被插入,而骨架屏的内容也被放置在 p#app 之间。当然,我们还可以进一步处理,把这些内容都压缩一下。改写 skeleton.js ,在里面添加 html-minifier :
...

+ const htmlMinifier = require('html-minifier')
...
renderer.renderToString({}, (err, html) => {
+ html = htmlMinifier.minify(html, {
+ collapseWhitespace: true,
+ minifyCSS: true
+ })
 fs.writeFileSync('index.html', html, 'utf-8')
})
Nach dem Login kopieren

来看看效果:

 

效果非常不错!至此,Vue页面接入骨架屏已经完全实现了。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

如何使用js封装ajax功能函数与用法

JS里常见内置函数使用详解

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Skelett-Bildschirminjektion von Vue-Seiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So kopieren Sie eine Seite in Word So kopieren Sie eine Seite in Word Feb 20, 2024 am 10:09 AM

Möchten Sie eine Seite in Microsoft Word kopieren und die Formatierung beibehalten? Dies ist eine kluge Idee, da das Duplizieren von Seiten in Word eine nützliche zeitsparende Technik sein kann, wenn Sie mehrere Kopien eines bestimmten Dokumentlayouts oder -formats erstellen möchten. Diese Anleitung führt Sie Schritt für Schritt durch den Prozess des Kopierens von Seiten in Word, unabhängig davon, ob Sie eine Vorlage erstellen oder eine bestimmte Seite in einem Dokument kopieren. Diese einfachen Anweisungen sollen Ihnen dabei helfen, Ihre Seite einfach neu zu erstellen, ohne bei Null anfangen zu müssen. Warum Seiten in Microsoft Word kopieren? Es gibt mehrere Gründe, warum das Kopieren von Seiten in Word sehr vorteilhaft ist: Wenn Sie ein Dokument mit einem bestimmten Layout oder Format kopieren möchten. Im Gegensatz dazu, die gesamte Seite von Grund auf neu zu erstellen

Wie kann ich eine Webseite schnell aktualisieren? Wie kann ich eine Webseite schnell aktualisieren? Feb 18, 2024 pm 01:14 PM

Bei der täglichen Nutzung eines Netzwerks kommt es häufig zu Seitenaktualisierungen. Wenn wir eine Webseite besuchen, treten manchmal Probleme auf, z. B. wenn die Webseite nicht geladen wird oder nicht ordnungsgemäß angezeigt wird. Zu diesem Zeitpunkt entscheiden wir uns normalerweise dafür, die Seite zu aktualisieren, um das Problem zu lösen. Wie kann die Seite also schnell aktualisiert werden? Lassen Sie uns die Tastenkombinationen für die Seitenaktualisierung besprechen. Die Tastenkombination für die Seitenaktualisierung ist eine Methode zum schnellen Aktualisieren der aktuellen Webseite über Tastaturoperationen. In verschiedenen Betriebssystemen und Browsern können die Tastenkombinationen für die Seitenaktualisierung unterschiedlich sein. Im Folgenden verwenden wir das gebräuchliche W

So passen Sie den Standby-Modus auf dem iPhone an und bearbeiten ihn: Was ist neu in iOS 17? So passen Sie den Standby-Modus auf dem iPhone an und bearbeiten ihn: Was ist neu in iOS 17? Sep 21, 2023 pm 04:01 PM

Standby ist eine neue Funktion im iOS 17-Update, die eine neue und verbesserte Möglichkeit bietet, auf Informationen zuzugreifen, wenn Ihr Telefon schnell inaktiv ist. Mit StandBy können Sie bequem die Uhrzeit überprüfen, bevorstehende Ereignisse anzeigen, Ihren Kalender durchsuchen, Wetteraktualisierungen für Ihren Standort abrufen und vieles mehr. Nach der Aktivierung wechselt das iPhone intuitiv in den Standby-Modus, wenn es während des Ladevorgangs auf Querformat eingestellt wird. Diese Funktion eignet sich perfekt für kabellose Ladestationen wie Ihren Nachttisch oder wenn Sie Ihr iPhone während der täglichen Aufgaben nicht aufladen können. Sie können damit durch verschiedene im Standby-Modus angezeigte Widgets wischen, um auf verschiedene Informationssätze aus verschiedenen Anwendungen zuzugreifen. Möglicherweise möchten Sie diese Widgets jedoch ändern oder einige sogar löschen, je nach Ihren Vorlieben und den Informationen, die Sie häufig benötigen. Also lasst uns eintauchen

So ordnen Sie iPhone-Startbildschirmseiten neu an, deaktivieren und löschen sie So ordnen Sie iPhone-Startbildschirmseiten neu an, deaktivieren und löschen sie Nov 29, 2023 am 08:22 AM

Unter iOS ermöglicht Apple Ihnen, einzelne Startbildschirmseiten auf Ihrem iPhone zu deaktivieren. Es ist auch möglich, die Reihenfolge der Startbildschirmseiten neu zu ordnen und Seiten direkt zu löschen, anstatt sie nur zu deaktivieren. So funktioniert das. So ordnen Sie die Seiten des Startbildschirms neu an: Berühren und halten Sie die Leertaste auf dem Startbildschirm, um in den Jitter-Modus zu wechseln. Tippen Sie auf die Punktreihe, die die Seiten des Startbildschirms darstellt. Berühren und ziehen Sie im angezeigten Raster des Startbildschirms eine Seite, um sie relativ zu anderen Seiten neu anzuordnen. Andere bewegen sich als Reaktion auf Ihr Ziehen. Wenn Sie mit Ihrer neuen Anordnung zufrieden sind, tippen Sie in der oberen rechten Ecke des Bildschirms auf „Fertig“ und anschließend erneut auf „Fertig“, um den Dither-Modus zu verlassen. So deaktivieren oder entfernen Sie Startbildschirmseiten: Berühren und halten Sie die Leertaste auf dem Startbildschirm, um in den Dither-Modus zu wechseln. Tippen Sie hier, um den Startbildschirm anzuzeigen

So implementieren Sie einen Seitensprung in 3 Sekunden: PHP-Programmierhandbuch So implementieren Sie einen Seitensprung in 3 Sekunden: PHP-Programmierhandbuch Mar 25, 2024 am 10:42 AM

Titel: Implementierungsmethode des Seitensprungs in 3 Sekunden: PHP-Programmierhandbuch In der Webentwicklung ist der Seitensprung eine übliche Operation. Im Allgemeinen verwenden wir Meta-Tags in HTML- oder JavaScript-Methoden, um zu Seiten zu springen. In bestimmten Fällen müssen wir jedoch Seitensprünge auf der Serverseite durchführen. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP-Programmierung eine Funktion implementieren, die innerhalb von 3 Sekunden automatisch zu einer bestimmten Seite springt, und es werden auch spezifische Codebeispiele aufgeführt. Das Grundprinzip des Seitensprungs mit PHP ist eine Art

Wie man mit dem Problem umgeht, dass die Laravel-Seite CSS nicht korrekt anzeigen kann Wie man mit dem Problem umgeht, dass die Laravel-Seite CSS nicht korrekt anzeigen kann Mar 10, 2024 am 11:33 AM

„Wie man mit dem Fehler umgeht, dass Laravel-Seiten CSS nicht korrekt anzeigen, sind spezifische Codebeispiele erforderlich.“ Wenn Sie das Laravel-Framework zum Entwickeln von Webanwendungen verwenden, tritt manchmal das Problem auf, dass die Seite CSS-Stile nicht korrekt anzeigen kann, was dazu führen kann Seite, um abnormale Stile darzustellen. In diesem Artikel werden einige Methoden vorgestellt, um mit dem Versagen von Laravel-Seiten bei der korrekten Anzeige von CSS umzugehen, und spezifische Codebeispiele bereitgestellt, um Entwicklern bei der Lösung dieses häufigen Problems zu helfen. 1. Überprüfen Sie den Dateipfad. Überprüfen Sie zunächst den Pfad der CSS-Datei.

Verwenden Sie ThinkPHP6, um eine schöne 404-Seite zu implementieren Verwenden Sie ThinkPHP6, um eine schöne 404-Seite zu implementieren Jun 20, 2023 am 11:06 AM

Mit der Weiterentwicklung des Internets sind viele Websites oder Anwendungen nach und nach komplexer geworden. Wenn Benutzer es verwenden, stoßen sie häufig auf Fehlerseiten, von denen die 404-Seite am häufigsten ist. Die 404-Seite bedeutet, dass die Seite, auf die zugegriffen wird, nicht existiert und eine häufige Fehlerseite ist. Bei Websites oder Anwendungen kann eine schöne 404-Seite das Benutzererlebnis erheblich verbessern. In diesem Artikel stellen wir vor, wie Sie mit ThinkPHP6 schnell eine schöne 404-Seite implementieren. Eine Route erstellen Zuerst müssen wir im Routenordner eine Route erstellen

Einführung in das Löschen einer Inhaltsseite in Word Einführung in das Löschen einer Inhaltsseite in Word Mar 26, 2024 am 10:06 AM

Titel: Einführung zum Löschen einer Seite mit Inhalten in Word Beim Bearbeiten eines Dokuments mit Microsoft Word kann es manchmal vorkommen, dass Sie den Inhalt einer bestimmten Seite löschen müssen. Möglicherweise möchten Sie eine leere Seite oder unnötigen Inhalt löschen auf einer bestimmten Seite im Dokument. Als Reaktion auf diese Situation können wir einige Methoden anwenden, um den Inhalt einer Seite schnell und effektiv zu löschen. Als Nächstes werden einige Methoden zum Löschen einer Inhaltsseite in Microsoft Word vorgestellt. Methode 1: Eine Seite mit Inhalt löschen Öffnen Sie zunächst das Word-Dokument, das bearbeitet werden muss. Sicherlich

See all articles