服务端渲染SSR

画地为牢!

目的:结合node框架koa/express➕react实现服务端渲染

预想困难:项目的同时启动、webpack如何配置等

//在package.json中配置即可
start: "npm run client && npm run server"

概念:

服务端渲染(ssr)server side render
浏览器在请求页面url时,服务器将需要的HTML组装好直接返回给客户端,浏览器不需要通过js脚本执行,可以直接解析并展示在页面上。

客户端渲染(csr)client side render
浏览器下载js脚本,加载完js后,由js操控生成DOM,最后展示页面,这些都发生在浏览器上

同构:为了能够让用户可以更快的看到页面(减少白屏时间),服务端首次渲染返回的是纯粹的DOM与CSS,也就是说js事件等还未与客户端进行绑定,需要等js文件下载完,对页面再次渲染,叫做同构

需理解,如何在node上跑jsx

//查看macbook全局包
npm list -g --depth 0

express -e server-render
//此为react示例
npm install react react-dom node-jsx --save

require('node-jsx').install();
var React = require('react');
var ReactDOMServer = require('react-dom/server');
// 服务端引入demo组件
var Demo =  (require('../components/demo');

/* 主页 */
router.get('/', function(req, res) {
  var num = Math.random();
  // 服务端渲染HTML
  var html = ReactDOMServer.renderToString(<Demo number={num} />);
  // 向页面传递渲染后HTML字符串和num(props)
  res.render('demo', {html:html, num:num});
});

//vue示例官网很清楚

const Vue = require('vue')
const server = require('express')()
const renderer = require('vue-server-renderer').createRenderer()

server.get('*', (req, res) => {
  const app = new Vue({
    data: {
      url: req.url
    },
    template: `<div>访问的 URL 是: {{ url }}</div>`
  })

  renderer.renderToString(app, (err, html) => {
    if (err) {
      res.status(500).end('Internal Server Error')
      return
    }
    res.end(`
      <!DOCTYPE html>
      <html lang="en">
        <head><title>Hello</title></head>
        <body>${html}</body>
      </html>
    `)
  })
})

server.listen(8080)

其中心思想是
1、首先解决node上写框架代码
2、匹配路由
3、转为html之后结合模版引擎返回渲染

两者都可以结合express中插入ejs模版引擎,此处简单写下基础写法,路由匹配、代码分割等皆有官方提供api,想要深入得的话就需要看工作中是否用的到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值