如何前后不分离使用vue
时间: 2023-08-14 17:05:00 浏览: 74
要避免前后端分离,可以使用Vue.js的服务端渲染(SSR)功能。这样可以在服务器端生成HTML代码,然后将其发送到浏览器,从而使页面更快地加载并使SEO更友好。
下面是使用Vue.js SSR的基本步骤:
1. 安装vue-server-renderer和相关依赖:
```
npm install vue-server-renderer express body-parser --save
```
2. 创建Vue实例,并将其导出为一个函数:
```
import Vue from 'vue'
import App from './App.vue'
export default function createApp() {
const app = new Vue({
render: h => h(App)
})
return { app }
}
```
3. 创建服务器端渲染逻辑:
```
const express = require('express')
const bodyParser = require('body-parser')
const { createBundleRenderer } = require('vue-server-renderer')
const path = require('path')
const fs = require('fs')
const server = express()
const renderer = createBundleRenderer(
path.resolve(__dirname, './dist/server-bundle.js'),
{
runInNewContext: false,
template: fs.readFileSync(
path.resolve(__dirname, './public/index.html'),
'utf-8'
),
clientManifest: require('./dist/client-manifest.json')
}
)
server.use(bodyParser.json())
server.use(express.static(path.resolve(__dirname, './dist')))
server.get('*', (req, res) => {
const context = { url: req.url }
renderer.renderToString(context, (err, html) => {
if (err) {
console.error(err)
res.status(500).end('Internal Server Error')
return
}
res.end(html)
})
})
server.listen(3000, () => {
console.log('Server started at http://localhost:3000')
})
```
4. 打包Vue应用程序:
```
npm run build
```
5. 运行服务器:
```
node server.js
```
这样,您的Vue应用程序就可以使用服务器端渲染了,而不会出现前后端分离的情况。