Vue的SSR(Server-Side Rendering)是指在服務器端生成前端頁面的技術。SSR的優(yōu)點是可以提高首屏渲染速度、SEO友好、支持懶加載等功能。而在實現(xiàn)SSR的過程中,CSS打包是必要的步驟。
在SSR中,由于需要在服務器端渲染HTML,所以需要將CSS打包進JS文件中,然后在服務器端將JS文件讀取出來,并以字符串形式返回給瀏覽器。因此,需要使用合適的工具來打包CSS。
// webpack.server.conf.js const path = require('path'); const merge = require('webpack-merge'); const base = require('./webpack.base.conf'); const MiniCSSExtractPlugin = require('mini-css-extract-plugin'); module.exports = merge(base, { mode: 'production', target: 'node', entry: './src/entry-server.js', output: { filename: 'server-bundle.js', libraryTarget: 'commonjs2' }, module: { rules: [ { test: /\.css$/, use: [ MiniCSSExtractPlugin.loader, 'css-loader' ] } ] }, plugins: [ new MiniCSSExtractPlugin({ filename: 'style.css', chunkFilename: '[id].css', }) ] });
在webpack的server配置中,需要使用 MiniCSSExtractPlugin 將樣式打包成獨立的css文件,而不是將其直接打包到JS代碼中。這里的filename選項是樣式文件的文件名,而chunkFilename 是打包后每個chunk的文件名,可以根據(jù)需要自定義。
// entry-server.js // 引入Vue組件 import Vue from 'vue'; import App from './App.vue'; // 引入樣式 import './style.css'; export default context =>{ const app = new Vue({ render: h =>h(App), }).$mount(); // 將渲染后的HTML和CSS返回給瀏覽器 return { html: app.$el.outerHTML, style: context.renderStyles(), }; };
在entry-server.js文件中,需要引入樣式文件,這樣在服務端渲染的時候才能將樣式打包進JS文件中。而在Vue實例被創(chuàng)建時,需要通過context.renderStyles() 來獲取到打包后的樣式,然后將其返回給瀏覽器。
在Vue SSR中,打包CSS是必要的步驟。在打包CSS時,需要注意樣式文件的文件名和chunk文件名的配置,以及在Vue組件中正確地引入樣式文件,在entry-server.js文件中正確地返回打包后的樣式文件。
上一篇csv變成json格式