UniApp は、Vue.js フレームワークに基づくクロスプラットフォーム アプリケーション開発フレームワークで、開発者は iOS、Android、H5、およびミニプログラム アプリケーションを同時に構築できます。したがって、高いパフォーマンス要件があるシナリオでは、レンダリング パフォーマンスの問題を解決するために SSR (サーバーサイド レンダリング) を使用する必要がある場合があります。この記事では、UniApp で SSR を実装する方法について説明します。
SSRとは何ですか?
SSR はサーバー側でのページの最初のレンダリングを完了し、静的な HTML コンテンツをブラウザーに返します。これにより、ブラウザーは使用可能な HTML があることを確認して、ページをレンダリングできるようになります。 SSR の利点は、最初のロードが高速になり、ユーザー エクスペリエンスが向上することです。
UniAppのSSR実装方法は?
UniApp の SSR 実装方法は、Vue.js の SSR 実装方法に基づいており、Vue.js エコシステム内のいくつかの SSR プラグインを使用する必要があります。
2 つの Vue.js プラグインを以下に紹介します。
- Vue-router: リクエストを対応するコンポーネントに関連付けるルーティング管理に使用されます。
- Vue-server-renderer: Node.js 環境でアプリケーションの HTML 文字列をレンダリングするために使用され、アプリケーションの現在の状態を表す HTML ファイルを生成します。
具体的な実装方法は次のとおりです:
-
Vue-router と Vue-server-renderer をインストールします:
npm install vue-router vue-server-renderer --save
-
SSR エントリ ファイルを作成します:
次の内容を含むentry-ssr.js ファイルを src の下に作成します:import createApp from './main' export default context => { return new Promise((resolve, reject) => { const { app, router, store } = createApp() const { url } = context const fullPath = router.resolve(url).route.fullPath if (fullPath !== url) { return reject({ url: fullPath }) } // 设置 server router 的位置 router.push(url) // 等待 router 将组件渲染完 router.onReady(() => { const matchedComponents = router.getMatchedComponents() if (!matchedComponents.length) { return reject({ code: 404 }) } Promise.all( matchedComponents.map(Component => { if (Component.asyncData) { return Component.asyncData({ store, route: router.currentRoute }) } }) ) .then(() => { context.state = store.state resolve(app) }) .catch(reject) }, reject) }) }
-
SSR サーバーを作成します:
サーバーの作成ルート ディレクトリ ファイル内の .js の内容は次のとおりです:const Koa = require('koa') const path = require('path') const fs = require('fs') const koaStatic = require('koa-static') const { createBundleRenderer } = require('vue-server-renderer') const serverBundle = require('./dist/vue-ssr-server-bundle.json') const clientManifest = require('./dist/vue-ssr-client-manifest.json') const template = fs.readFileSync(path.join(__dirname, './index.ssr.html'), 'utf-8') const app = new Koa() const renderer = createBundleRenderer(serverBundle, { runInNewContext: false, template, clientManifest }) // 静态资源 app.use(koaStatic(path.join(__dirname, './dist'))) app.use(async (ctx, next) => { const context = { url: ctx.url } const html = await renderer.renderToString(context) .catch(err => { if (err.code === 404) { ctx.status = 404 ctx.body = '404 Page Not Found' } else { ctx.status = 500 ctx.body = '500 Internal Server Error' console.error(`${ctx.url}\n${err.stack}`) } }) ctx.body = html }) const port = process.env.PORT || 9090 app.listen(port, () => { console.log(`server started at localhost:${port}`) })
-
ビルド構成を変更します:
vue.config.js ファイルに次のコードを追加します:module.exports = { productionSourceMap: false, css: { extract: { ignoreOrder: true } }, configureWebpack: config => { if (process.env.UNI_SSR) { config.output.libraryTarget = 'commonjs2' config.externals = [ /^uni-app/, /^@dcloudio/, { vue: { root: 'Vue', commonjs: 'vue', commonjs2: 'vue' } } ] config.plugins.push(new VueSSRServerPlugin()) } } }
-
ルート ディレクトリの package.json ファイルを変更します。
「scripts」の下に次のコードを追加します。"ssr-build": "cross-env UNI_SSR=1 vue-cli-service build --mode production --target server --dest dist && vue-cli-service build --mode production --target client --dest dist", "ssr-start": "cross-env NODE_ENV=production node server.js"
npm run ssr-build を実行してビルドします。 SSR アプリケーションを起動し、npm run ssr-start を実行してアプリケーション プログラムを起動します。
この時点で、UniApp SS は正常に実行されました。
まとめ
UniApp の構造は Vue.js とよく似ているため、SSR を実装する場合、Vue.js の SSR 実装方法に従って UniApp の SSR を完成させることができ、UniApp は一連の手順 アプリケーションはサーバー側レンダリングをサポートしているため、ページの読み込み速度が速くなり、ユーザー エクスペリエンスが向上します。
以上がユニアプリでSSRをする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、モバイルプラットフォームとWebプラットフォームのデバッグ戦略について説明し、Android Studio、Xcode、Chrome Devtoolsなどのツールを強調し、OSとパフォーマンスの最適化全体で一貫した結果を得るためのテクニックについて説明します。

この記事では、Hbuilderx、Wechat開発者ツール、Chrome Devtoolsなどのツールに焦点を当てたUniapp開発のためのデバッグツールとベストプラクティスについて説明します。

この記事では、複数のプラットフォームにわたるUNIAPPアプリケーションのエンドツーエンドテストについて説明します。テストシナリオの定義、Appiumやサイプレスなどのツールの選択、環境のセットアップ、テストの書き込みと実行、結果の分析、インテグラートをカバーします

この記事では、ユニット、統合、機能、UI/UX、パフォーマンス、クロスプラットフォーム、セキュリティテストなど、UNIAPPアプリケーションのさまざまなテストタイプについて説明します。また、クロスプラットフォームの互換性を確保し、JESのようなツールを推奨しています

この記事では、過剰なグローバルデータの使用や非効率的なデータバインディングなど、UNIAPP開発における一般的なパフォーマンスアンチパターンについて説明し、これらの問題を特定して緩和してアプリのパフォーマンスを向上させる戦略を提供します。

この記事では、プロファイリングツールを使用して、Uniappのパフォーマンスボトルネックを識別および解決し、セットアップ、データ分析、最適化に焦点を当てています。

この記事では、Uniappでネットワーク要求を最適化するための戦略について説明し、遅延の削減、キャッシュの実装、および監視ツールを使用してアプリケーションのパフォーマンスを向上させることに焦点を当てています。

この記事では、圧縮、レスポンシブデザイン、怠zyなロード、キャッシング、およびWebP形式の使用を通じて、Webパフォーマンスを向上させるために、Uniappの画像の最適化について説明します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
