Jadual Kandungan
Prapemarahan
prapaparan-spa-plugin
Rujukan Projek
Selepas membungkus projek
部署效果
END
Rumah hujung hadapan web View.js Bagaimana untuk pra-memaparkan halaman web dalam Vue? Analisis ringkas tentang penggunaan prerender-spa-plugin

Bagaimana untuk pra-memaparkan halaman web dalam Vue? Analisis ringkas tentang penggunaan prerender-spa-plugin

Feb 07, 2022 pm 06:04 PM
vue

Bagaimana untuk pra-memaparkan halaman web dalam Vue? Artikel ini akan memperkenalkan kepada anda cara Vue menggunakan prerender-spa-plugin untuk pra-memaparkan halaman web saya harap ia akan membantu anda.

Bagaimana untuk pra-memaparkan halaman web dalam Vue? Analisis ringkas tentang penggunaan prerender-spa-plugin

Prapemarahan

Biasanya, projek Vue ialah projek satu halaman, iaitu projek yang diberikan hanya mempunyai satu index.html. [Cadangan berkaitan: tutorial video vue.js]

Kekurangan ini adalah jelas:

  • Untuk menggunakan Nginx, anda perlu melakukan try_files $uri $uri/ /index.html pengalihan dalaman, Hanya kemudian anda boleh mengakses halaman melalui penghalaan.
  • SEO tidak mesra dan kesan pengindeksan enjin carian tidak bagus.

Dan prapemarahan adalah untuk menjadikan single asal index.html ke dalam berbilang direktori, dan setiap direktori mempunyai index.html. Ini menghapuskan keperluan untuk laluan akses ubah hala dalaman dan lebih kondusif untuk kemasukan enjin carian.

Bagaimana untuk pra-memaparkan halaman web dalam Vue? Analisis ringkas tentang penggunaan prerender-spa-plugin

prapaparan-spa-plugin

prapemarahan ini menggunakan prapaparan-spa-plugin untuk prapemarahan.

Prinsip utamanya ialah untuk memulakan penyemak imbas, ambil HTML selepas pemaparan selesai, dan kemudian buat direktori dan simpannya sebagai index.html.

Nota:

  • Tapak web rasmi pada masa ini hanya mempunyai Demo Vue2.x, yang sebenarnya menyokong Vue3 (demonstrasi ini juga menggunakan Vue3)
  • Walaupun yang terbaru The versi dikeluarkan adalah pada 2018 (versi baharu sepatutnya dikeluarkan baru-baru ini), tetapi ia telah dikekalkan dan boleh digunakan.

Pemasangan

Pertama, kami menggunakan npm untuk memasang:

npm i prerender-spa-plugin
Salin selepas log masuk

Nota , kerana prerender-spa-plugin akan memasang Chromium, jadi pemasangan akan mengambil masa yang lama.

Bagaimana untuk pra-memaparkan halaman web dalam Vue? Analisis ringkas tentang penggunaan prerender-spa-plugin

Sudah tentu, kebergantungan ini hanya digunakan semasa pembungkusan. Oleh itu, kaedah pemasangan yang lebih baik hendaklah:

npm i prerender-spa-plugin -D
Salin selepas log masuk

Rujukan Projek

Sekarang, mari kita ke rujukan projek Kaedah penggunaannya sangat mudah, dan ia mudah untuk disertakan dua tempat:

  • App.vue
  • vue.config.js

App.vue

Pertama sekali, kami menambah peristiwa pencetus dalam App.vue:

mounted() {
  document.dispatchEvent(new Event('render-event'))
}
Salin selepas log masuk

Menambah pencetus ini akan mencetuskannya secara automatik semasa pembungkusan berikutnya dan pemaparan lengkap.

vue.config.js

Menurut prerender-spa-plugin dokumentasi projek:

const path = require('path')
const PrerenderSPAPlugin = require('prerender-spa-plugin')

module.exports = {
  plugins: [
    ...
    new PrerenderSPAPlugin({
      // Required - The path to the webpack-outputted app to prerender.
      staticDir: path.join(__dirname, 'dist'),
      // Required - Routes to render.
      routes: [ '/', '/about', '/some/deep/nested/route' ],
    })
  ]
}
Salin selepas log masuk

Juga diperlukan untuk beberapa penggunaan lanjutan Perkenalkan PuppeteerRenderer untuk penyesuaian. Jadi, konfigurasi vue.config.js saya sendiri:

module.exports = {
    ……
    chainWebpack: config => {
        if (process.env.NODE_ENV == "development") {
        ……
        }
        if (process.env.NODE_ENV == "production") {
            config.plugin("PrerenderSPAPlugin").use('prerender-spa-plugin', [
                {
                    staticDir: path.join(__dirname, 'dist'),
                    routes: [
                        '/', '/processIMG', '/statisticsChars', '/generatePWD', '/calculateTheDate',
                        '/randomNumber', '/textBase64', '/curl', '/mcstatus',
                        '/gh', '/about', '/mdv'
                    ],
                    renderer: new PuppeteerRenderer({
                        headless: false,
                        executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
                        // 对应App.vue 
                        renderAfterDocumentEvent: 'render-event',
                    }),
                }])
            ])
        }
    }
Salin selepas log masuk

Saya menggunakan fungsi rantai. Kelebihannya ialah ia memudahkan saya membuat pertimbangan berfungsi seperti if-else. Antaranya, atribut renderer:

  • headless: Ini ialah atribut headless Chrome, yang biasa digunakan untuk Nyahpepijat. Untuk maklumat lanjut, sila rujuk: Google Chrome
  • executablePath: Ubah hala alamat penyemak imbas saya menggunakan penyemak imbas Chrome yang disertakan dengan komputer saya untuk ubah hala di sini. (Pilihan, anda tidak boleh menambahnya secara langsung, Chromium akan dipanggil secara lalai)
  • renderAfterDocumentEvent: Ia perlu sepadan dengan nama acara document.dispatchEvent(new Event('render-event')) dalam App.vue.

Dan tatasusunan routes mengandungi alamat penghalaan yang perlu pra-diberikan.

Bagaimana untuk pra-memaparkan halaman web dalam Vue? Analisis ringkas tentang penggunaan prerender-spa-plugin

Sudah tentu, untuk lebih banyak parameter pilihan, anda juga boleh merujuk kepada dokumentasi rasmi:

Bagaimana untuk pra-memaparkan halaman web dalam Vue? Analisis ringkas tentang penggunaan prerender-spa-plugin

staticDir Perlu menunjuk ke folder output yang disusun.

Selepas membungkus projek

, kami boleh membungkus projek:

npm run build
Salin selepas log masuk

Kesan selepas pembungkusan:

Bagaimana untuk pra-memaparkan halaman web dalam Vue? Analisis ringkas tentang penggunaan prerender-spa-plugin

Lihat halaman pra-paparan:

Bagaimana untuk pra-memaparkan halaman web dalam Vue? Analisis ringkas tentang penggunaan prerender-spa-plugin

Oleh kerana saya mempunyai komponen menggunakan Vue-meta, fail pra-paparan juga mempunyai atribut meta.

如果你也想用Vue-meta组件配合prerender-spa-plugin,可以参考文章:

https://juejin.cn/post/7056972997894094861

需要注意,如果出现什么错误,可以尝试:

# 删除项目node_modules
rm -rf node_modules
# 重新安装
npm install
Salin selepas log masuk

这样的文件,就可以进行部署了。

部署效果

我们使用Nginx进行部署,上次到Nginx Web文件夹内,修改config文件,就不需要:

location / {
  try_files $uri $uri/ /index.html;
}
Salin selepas log masuk

来实现内部重定向了。因为有真实的目录,可以去掉。

但是,数据代理,最好使用Nginx来实现。比如,开发环境,数据代理:

config.devServer.proxy({
        '/dataApiJava': {
            target: JavaBaseURL,
            pathRewrite: {'^/dataApiJava': ""},
            ws: true,
            changeOrigin: true
        },
        '/dataApiPython': {
            target: PythonBaseURL,
            pathRewrite: {'^/dataApiPython': ""},
            ws: true,
            changeOrigin: true
        },
        '/ghs': {
            target: GithubSpeedURL,
            pathRewrite: {'^/ghs': ""},
            ws: true,
            changeOrigin: true
        }
    }
)
Salin selepas log masuk

对应的Nginx配置,可以这样写:

location /dataApiPython/{
      proxy_pass http://127.0.0.1:8099/;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header REMOTE-HOST $remote_addr;
      add_header X-Cache $upstream_cache_status;
}
location /dataApiJava/ {
      proxy_ssl_server_name on;
      proxy_pass https://…….cn/;
}
location /ghs/ {
      proxy_ssl_server_name on;
      proxy_pass https://……/gh/;
}
Salin selepas log masuk

给大家展示三种配置,按需设置哦。

END

到此,我们的前端预渲染就完成了。这样SEO好。但是对比SSR,还是优点欠缺。好处就是部署和配置方便,坏处就是构建麻烦,如果你页面有几十个路由需要预渲染,那么prerender-spa-plugin渲染起来就没SSR方便了。

改天有机会和大家分享分享SSR吧,真不错,又挖一个坑。

另外,是不是有小伙伴好奇,我截图里出现的CompressionPlugin属性?其实是gz压缩啦。有机会和大家分享,使用compression-webpack-plugin来优化项目。

更多编程相关知识,请访问:编程入门!!

Atas ialah kandungan terperinci Bagaimana untuk pra-memaparkan halaman web dalam Vue? Analisis ringkas tentang penggunaan prerender-spa-plugin. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan bootstrap di vue Cara menggunakan bootstrap di vue Apr 07, 2025 pm 11:33 PM

Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

Cara menambah fungsi ke butang untuk vue Cara menambah fungsi ke butang untuk vue Apr 08, 2025 am 08:51 AM

Anda boleh menambah fungsi ke butang VUE dengan mengikat butang dalam templat HTML ke kaedah. Tentukan kaedah dan tulis logik fungsi dalam contoh Vue.

Cara Menggunakan Watch di Vue Cara Menggunakan Watch di Vue Apr 07, 2025 pm 11:36 PM

Pilihan Watch di Vue.js membolehkan pemaju mendengar perubahan dalam data tertentu. Apabila data berubah, tontonkan mencetuskan fungsi panggil balik untuk melakukan paparan kemas kini atau tugas lain. Pilihan konfigurasinya termasuk segera, yang menentukan sama ada untuk melaksanakan panggilan balik dengan serta -merta, dan mendalam, yang menentukan sama ada untuk mendengarkan secara rekursif terhadap objek atau tatasusunan.

Apakah yang dimaksudkan dengan pembangunan Vue Multi-Page? Apakah yang dimaksudkan dengan pembangunan Vue Multi-Page? Apr 07, 2025 pm 11:57 PM

Pembangunan pelbagai halaman Vue adalah cara untuk membina aplikasi menggunakan rangka kerja VUE.JS, di mana permohonan dibahagikan kepada halaman berasingan: Penyelenggaraan kod: Memisahkan aplikasi ke dalam beberapa halaman boleh menjadikan kod lebih mudah untuk dikendalikan dan diselenggarakan. Modularity: Setiap halaman boleh digunakan sebagai modul yang berasingan untuk penggunaan semula dan penggantian mudah. Routing mudah: Navigasi antara halaman boleh diuruskan melalui konfigurasi penghalaan mudah. Pengoptimuman SEO: Setiap halaman mempunyai URL sendiri, yang membantu SEO.

Cara merujuk fail js dengan vue.js Cara merujuk fail js dengan vue.js Apr 07, 2025 pm 11:27 PM

Terdapat tiga cara untuk merujuk kepada fail JS dalam vue.js: Secara langsung tentukan jalan menggunakan & lt; skrip & gt; tag ;; import dinamik menggunakan cangkuk kitaran hayat yang dipasang (); dan mengimport melalui Perpustakaan Pengurusan Negeri VUEX.

Cara kembali ke halaman sebelumnya oleh Vue Cara kembali ke halaman sebelumnya oleh Vue Apr 07, 2025 pm 11:30 PM

Vue.js mempunyai empat kaedah untuk kembali ke halaman sebelumnya: $ router.go (-1) $ router.back () menggunakan & lt; router-link to = & quot;/& quot; Komponen Window.History.Back (), dan pemilihan kaedah bergantung pada tempat kejadian.

Cara Menggunakan Vue Traversal Cara Menggunakan Vue Traversal Apr 07, 2025 pm 11:48 PM

Terdapat tiga kaedah umum untuk vue.js untuk melintasi tatasusunan dan objek: Arahan V-untuk digunakan untuk melintasi setiap elemen dan membuat templat; Arahan V-mengikat boleh digunakan dengan V-untuk menetapkan nilai atribut secara dinamik untuk setiap elemen; dan kaedah .map boleh menukar elemen array ke dalam tatasusunan baru.

Cara melompat ke Div Vue Cara melompat ke Div Vue Apr 08, 2025 am 09:18 AM

Terdapat dua cara untuk melompat elemen div di Vue: Gunakan Vue Router dan tambahkan komponen router-link. Tambah pendengar acara @Click dan panggil ini. $ Router.push () kaedah untuk melompat.

See all articles