UniApp은 Vue.js 프레임워크를 기반으로 하는 크로스 플랫폼 애플리케이션 개발 프레임워크로, 개발자가 iOS, Android, H5 및 미니 프로그램 애플리케이션을 동시에 구축할 수 있도록 해줍니다. 따라서 높은 성능이 요구되는 시나리오에서는 렌더링 성능 문제를 해결하기 위해 SSR(Server-Side Rendering)을 사용해야 할 수도 있습니다. 이 기사에서는 UniApp에서 SSR을 구현하는 방법에 대해 설명합니다.
SSR이란 무엇인가요?
SSR은 서버 측에서 페이지의 첫 번째 렌더링을 완료하고 정적 HTML 콘텐츠를 브라우저에 반환하여 브라우저가 사용 가능한 HTML이 있는지 확인한 다음 페이지를 렌더링합니다. SSR의 장점은 첫 번째 로드 속도를 높이고 사용자 경험을 향상시킬 수 있다는 것입니다.
유니앱의 SSR 구현방식은?
UniApp의 SSR 구현 방법은 Vue.js의 SSR 구현 방법을 기반으로 하며, 이를 위해서는 Vue.js 생태계에서 일부 SSR 플러그인을 사용해야 합니다.
두 가지 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 항목 파일 생성:
다음을 사용하여 src 아래에 Entry-ssr.js 파일을 생성합니다. 다음 콘텐츠: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 서버 생성:
다음 콘텐츠로 루트 디렉터리에 server.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의 애플리케이션은 다음을 지원할 수 있습니다. 서버 사이드 렌더링을 통해 페이지 로딩 속도가 빨라지고 사용자 경험이 향상됩니다.
위 내용은 Uniapp으로 ssr을 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사는 모바일 및 웹 플랫폼 용 디버깅 전략, Android Studio, Xcode 및 Chrome DevTools와 같은 도구 및 OS 및 성능 최적화 전반에 걸쳐 일관된 결과를위한 기술을 강조 표시합니다.

이 기사는 HBuilderx, WeChat 개발자 도구 및 Chrome Devtools와 같은 도구에 중점을 둔 UniAPP 개발을위한 디버깅 도구 및 모범 사례에 대해 설명합니다.

이 기사는 여러 플랫폼에서 UniAPP 응용 프로그램에 대한 엔드 투 엔드 테스트에 대해 설명합니다. 테스트 시나리오 정의, Appium 및 Cypress와 같은 도구 선택, 환경 설정, 테스트 작성 및 실행, 결과 분석 및 Integrat을 다룹니다.

이 기사는 장치, 통합, 기능, UI/UX, 성능, 크로스 플랫폼 및 보안 테스트를 포함한 UniAPP 응용 프로그램에 대한 다양한 테스트 유형에 대해 설명합니다. 또한 크로스 플랫폼 호환성을 보장하고 JES와 같은 도구를 권장합니다.

이 기사는 과도한 글로벌 데이터 사용 및 비효율적 인 데이터 바인딩과 같은 UniAPP 개발의 일반적인 성능 방지 방지에 대해 설명하며, 더 나은 앱 성능을 위해 이러한 문제를 식별하고 완화하는 전략을 제공합니다.

이 기사는 프로파일 링 도구를 사용하여 UniAPP의 성능 병목 현상을 식별하고 해결하고 설정, 데이터 분석 및 최적화에 중점을 둡니다.

이 기사는 UNIAPP에서 네트워크 요청을 최적화하고 대기 시간을 줄이고 캐싱 구현 및 모니터링 도구를 사용하여 응용 프로그램 성능을 향상시키는 전략에 대해 설명합니다.

이 기사에서는 압축, 반응 형 디자인, 게으른로드, 캐싱 및 Webp 형식 사용을 통해 웹 성능을 향상시키기 위해 UniAPP의 이미지 최적화에 대해 설명합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
