Vue-SSR入门

作者: 小程序前端超市 | 来源:发表于2018-12-04 09:36 被阅读5次

官方文档:https://ssr.vuejs.org/zh/

一、下载安装

1、下载 express-generator 生成器

$ npm install express-generator -g

使用express命令创建项目(-e:ejs模板引擎)

$ express -e myapp

2、下载 vue vue-server-renderer

npm install vue vue-server-renderer --save

二、入门示例

在项目根目录下创建index.js,内容如下

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>
                    <meta charset="utf-8"/>
                    <title>Hello</title>
                </head>
                <body>${html}</body>
            </html>
        `)
    })
})

server.listen(4000)

命令行启动

$ node index.js

访问网址:locathost:4000

三、使用模板

views/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8"/>
    <title>{{ title }}</title>
</head>
<body>
    {{ content }}
</body>
</html>

index.js

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

server.get('*', (req, res) => {
    const app = new Vue({
        data: {
            title: 'SSR',
            content: 'hello Vue SSR.'
        },
        template: fs.readFileSync('./views/index.html', 'utf-8')
    })

    renderer.renderToString(app, (err, html) => {
        if (err) {
            res.status(500).end('Internal Server Error')
            return
        }
        res.end(html)
    })
})

server.listen(4000)

四、模板插值

views/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    {{{ meta }}}
    <title>{{ title }}</title>
</head>
<body>
    <!--vue-ssr-outlet-->
</body>
</html>
<!--vue-ssr-outlet-->

注意:这一行注释不能少,因为这里将是应用程序 HTML 标记注入的地方,否则会报错

index.js

const fs = require('fs') 
const Vue = require('vue')
const server = require('express')()
const renderer = require('vue-server-renderer').createRenderer({
    template: fs.readFileSync('./views/index.html', 'utf-8')
})

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

    const context = {
        title: 'vue ssr',
        meta: `
          <meta charset="utf-8"/>
        `
    }

    renderer.renderToString(app, context, (err, html) => {
        if (err) {
            res.status(500).end('Internal Server Error')
            return
        }
        res.end(html)
    })
})

server.listen(4000)

五、app封装

views/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    {{{ meta }}}
    <title>{{ title }}</title>
</head>
<body>
    <!--vue-ssr-outlet-->
</body>
</html>

routes/app.js

const Vue = require('vue')

module.exports = function createApp(context) {
    return new Vue({
        data: {
            url: context.url
        },
        template: `<div>访问的 URL 是: {{ url }}</div>`
    })
}

index.js

const fs = require('fs') 
const Vue = require('vue')
const server = require('express')()
const renderer = require('vue-server-renderer').createRenderer({
    template: fs.readFileSync('./views/index.html', 'utf-8')
})
const createApp = require('./routes/app')

server.get('*', (req, res) => {

    const context = {
        title: 'vue ssr',
        meta: `
          <meta charset="utf-8"/>
        `,
        url: req.url
    }

    const app = createApp(context)

    renderer.renderToString(app, context, (err, html) => {
        if (err) {
            res.status(500).end('Internal Server Error')
            return
        }
        res.end(html)
    })
})

server.listen(4000)

相关文章

  • Vue-SSR入门

    官方文档:https://ssr.vuejs.org/zh/ 一、下载安装 1、下载 express-genera...

  • vue-ssr入门学习

    vue刚完成一个项目,有点时间就研究起了vue-ssr(vue在服务器端渲染),本来准备研究nuxt(一个vue服...

  • vue服务器端渲染

    资料 vue-ssr nuxt.js nuxt github

  • 本期小结(二)

    vue★ vue-ssr服务端渲染简单例子 vue-ssr服务端渲染框架Nuxt.js vue2.0仿饿了么web...

  • 基于vue-cli3的vue-ssr(四)

    前面三篇文章我们将vue-ssr的前端代码做了详细的分析,今天我们一起来看看vue-ssr基于express的服务...

  • vue-ssr

    服务端渲染 把vue实例渲染成html字符串返回,在前端激活为交互程序 优点 利于seo 首屏内容到达时间 服务端...

  • 入门级的vue-ssr例子(NUXT)

    Nuxt.js是vue官方推荐的一个通用应用框架,至于为什么要用nuxt.js,就不罗嗦了。 先来看一个效果 下面...

  • vue-ssr问题

    https://github.com/zhengchao627/vue-ssr 郑超组配的ssr https:/...

  • 项目使用svg图标

    vue-element-admin基础模板中,已经封装好了使用svg图标的组件,此组件在vue-ssr项目中也同样...

  • vue-ssr项目笔记

    1. 删除dist目录 2. 获取子组件的实例 3. watch中手动执行一次 4. watch监听对象属性的变化...

网友评论

    本文标题:Vue-SSR入门

    本文链接:https://www.haomeiwen.com/subject/finpcqtx.html