ssr服务端渲染

为什么要使用服务端渲染?

使用服务端渲染的目的是为了能够更加方便的让小蜘蛛去爬,爬到的关键字越多,网站就会越靠前。为啥关键字越多,网站越靠前呢?这个就要说到SEO了,SEO(Search Engine Optimization)又被称为搜索引擎优化,是一种利用搜索引擎的规则来提高网站在搜索引擎中的自然排名。使用服务端渲染的好处是前后端可以共享代码,前后端路由可以统一处理。当然,你如果给百度钱来提升排名,那就当我没说  ̄▽ ̄

安装

首先,安装express,用于配置服务端

npm install express --save

之后安装vue

npm install vue --save

安装vue中的ssr

npm install vue-server-renderer --save

配置服务端

const express = require("express");

const path = require("path");

const app = express();

app.use(express.static(path.join(__dirname,"../articcle")));//静态伺服

app.list(3000);

先来看一下客户端的渲染

客户端渲染

var list = ["腾讯","baidu","搜狐"];

function createElement(name){
    return document.createElement(name);
}

var ul = createElement("ul")

list.forEach(item => {
	var li = createElement("li")
	li.innerHTML = item;
	ul.appendChild(li);
})

document.body.appendChild(ul)

服务端渲染

服务端渲染简单来理解就是将客户端的渲染过程拿到服务端来进行渲染,然后得到返回的页面。

const express = request("express");
const path = request("path");
const Vue = request("vue");
const fs = request("fs");
//VUE中的ssr
const vueServerRender = request("vue-server-renderer")
//const render = vueServerRender.createRenderer();
//传递参数,配置模板
const render = vueServerRender.createRenderer({  //createRenderer   渲染函数
    template : fs.readFileSync("./index.template.html","utf8")
});

const app = express();

//静态伺服
app.use(express.static(__dirname,"../assets"))   //__dirname当前文件夹的路径

//模拟淘宝数据
const taobao = {
    title : "淘宝网 - 淘!我喜欢",
	description : "淘宝网 - 亚洲较大的网上交易平台,提供各类服饰、美容、家居、数码、话费/点卡充值… 数亿优质商品,同时提供担保交易(先收货后付款)等安全交易保障服务,并由商家提供退货承诺、破损补寄等消费者保障服务,让你安心享受网上购物乐趣!",
	keyword : "淘宝,掏宝,网上购物,C2C,在线交易,交易市场,网上交易,交易市场,网上买,网上卖,购物网站,团购,网上贸易,安全购物,电子商务,放心买,供应,买卖信息,网店,一口价,拍卖,网上开店,网络购物,打折,免费开店,网购,频道,店铺"
}


app.get("/ssr",(req,res) => {
    const app = new Vue({
        template : "<div>{{content}}</div>",
        data : {
            content : "服务端渲染ssr"
        }
    })

    render.renderToString(app,{   //renderToString  渲染方法      app后面的那一个{}参数为可选参数,帮助我们传递参数的。
        title : `${taobao.title}`,
        description : `${taobao.description}`,
        keyword : `${taobao.keyword}`
    },(err,html) => {
        if(err){
            throw err;
        }
        res.end(html)
    })
})

app.get("/articcle",(req,res) => {
    const list = ["腾讯","百度","搜狐"];
    res.end(`
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Document</title>
        </head>
        <body>
            <h1>首页2</h1>
            <ul>
                <li>${list[0]}</li>
                <li>${list[1]}</li>
                <li>${list[2]}</li>
            </ul>
        </body>
        </html>
    `)
})
app.listen(3000)

在渲染其他页面的时候,可以添加注释模板,添加注释模板需要注意的是要删除前后的空格。
在这里接收参数的时候要使用ssr的语法,分别为{{}}和{{{}}},区别为{{}}会直接将内容拿过来,不会做解析,而{{{}}}会做解析

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<!-- 就要使用ssr的语法了 两个大花括号和三个大花括号 -->
	<title>{{title}}</title>
	<meta name="description" content="{{description}}">
	<meta name="keyword" content="{{keyword}}">
</head>
<body>
	<!--vue-ssr-outlet-->
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值