-----------------------------------------------------------------------------------------------------------------
用vue-cli起一个项目并且新建server目录,结构图如下
-----------------------------------------------------------------------------------------------------------------
本章节使用到的文件 03.express-ssr.js、favicon.ico、index.html、user.html
需要导入的包,需要在demo目录下打开终端
vue 2.6.14 导入指令 npm i vue@2.6.14 -S
vue-server-renderer 2.6.14 导入指令 npm i vue-server-renderer@2.6.14 -S
express 4.18.1 导入指令 npm i express -S
serve-favicon 2.5.0 导入指令 npm i serve-favicon -S
-----------------------------------------------------------------------------------------------------------------
另外
-----------------------------------------------------------------------------------------------------------------
主要代码:03.express-ssr.js
const Vue = require('vue');
const express = require('express');
const server = express();
const { createRenderer } = require('vue-server-renderer');
const renderer = createRenderer();
const fs = require('fs');
const path = require('path');
const favicon = require('serve-favicon');
server.get('*', (request, response) => {
server.use(favicon(path.join(__dirname, './', 'favicon.ico')));
const template = request.url.substring(1) || 'index';
const buffer = fs.readFileSync(path.join(__dirname, `${template}.html`));
const app = new Vue({
template: buffer.toString(),
data() {
return {
msg: 'vue-ssr',
};
},
});
renderer.renderToString(app).then(html => {
response.status(200);
response.send(html);
}).catch(err => {
response.status(500);
response.send('Internal Server Error,500!');
});
});
server.listen(80, () => {
console.log('server start');
});