vue/vue-cli+express手把教你搭建SSR

2020-06-14 06:27:40易采站长站整理

"test": "echo "Error: no test specified" && exit 1"
},
"author": "Aaron", // 作者
"license": "ISC" // 许可证
}

初始化完成之后接下来需要安装,项目所需要依赖的包,所有依赖项如下:


npm install express --save-dev
npm install vue --save-dev
npm install vue-server-render --save-dev
npm install vue-router --save-dev

如上所有依赖项一一安装即可,安装完成之后就可以进行下一步了。前面说过SSR是服务端预渲染,所以当然要创建一个Node服务来支撑。在dome文件夹下面创建一个index.js文件,并使用express创建一个服务。

代码如下:


const express = require("express");
const app = express();

app.get('*',(request,respones) => {
respones.end("ok");
})

app.listen(3000,() => {
console.log("服务已启动")
});

完成上述代码之后,为了方便我们需要在package.json添加一个命令,方便后续开发启动项目。


{
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "node index.js"
}
}

创建好之后,在命令行直接输入npm start即可,当控制台显示服务已启动则表示该服务已经启动成功了。接下来需要打开浏览器看一下渲染的结果。在浏览器地址栏输入locahost:3000则可以看到ok两个字。

SSR渲染手动搭建

前面的准备工作已经做好了,千万不要完了我们的主要目的不是为了渲染文字,主要的目标是为了渲染*.vue文件或html所以。接下来就是做我们想要做的事情了。接下来就是要修改index.js文件,将之前安装的`vue
和vue-server-render`引入进来。

由于返回的不再是文字,而是html模板,所以我们要对响应头进行更改,告诉浏览器我们渲染的是什么,否则浏览器是不知道该如何渲染服务器返回的数据。

在index.js中引入了vue-server-render之后,在使用的时候,我们需要执行一下vue-server-render其中的creteRender方法,这个方法的作用就是会将vue的实例转换成html的形式。

既然有了vue-server-render的方法,接下来就需要引入主角了vue,引入之后然后接着在下面创建一个vue实例,在web端使用vue的时候需要传一些参数给Vue然而在服务端也是如此也可以传递一些参数给Vue实例,这个实例也就是后续添加的那些*.vue文件。为了防止用户访问的时候页面数据不会互相干扰,暂时需要把实例放到get请求中,每次有访问的时候就会创建一个新的实例,渲染新的模板。

creteRender方法能够把vue的实例转成html字符串传递到浏览器。那么接下来由应该怎么做?在vueServerRender方法下面有一个renderToString方法,这个方法就可以帮助我们完成这步操作。这个方法接受的第一个参数是vue的实例,第二个参数是一个回调函数,如果不想使用回调函数的话,这个方法也返回了一个Promise对象,当方法执行成功之后,会在then函数里面返回html结构。