如何使用Vue.js进行服务器端渲染(SSR)?

首先,文章的目的;我们为什么需要SSR方法,为什么在何处使用SSR,SSR和CSR有何区别?我们将通过示例巩固我们对这些知识的了解。

什么是客户端渲染(CSR)?

在客户端渲染中,我们的服务器将简单的纯HTML页面返回到浏览器。然后,由我们的服务器返回的html页面在用户浏览器中使用javascript进行编译,并获得有意义的html输出。最终的html输出由浏览器编译并呈现给用户。

什么是服务器端渲染(SSR)?

用这种方法,JavaScript是在服务器而不是浏览器上编译的。因此,直接且有意义的html直接在浏览器中进行

我应该何时考虑使用SSR?

这有两个主要原因; 更好的SEO和更快的发布时间。

执行SSR使我们对SEO更加坚强。因为Google Spiders(或其他爬虫)可以理解简单而有意义的html输出。

另外,如果我们使用ssr,则我们的网站打开速度更快。因为我们在服务器端进行编译,所以我们构建了一个更加用户友好的网站。

权衡取舍

  • SSR需要可以运行Node.js服务器的环境。
  • 由于编译过程是由服务器端进行的,因此您的成本将略有增加。
  • 在某些情况下,您将必须实施解决方法。

我们来到了真正的问题:)

如何使用Vue.js进行服务器端渲染(SSR)?

有很多方法可以做到这一点。在本文中,我将告诉您其中两个。使用Nuxt.js和Express

使用Express的服务器端渲染(SSR)?

我们使用vue-server-renderer软件包。这对于vue.js文档是必需的。在终端上运行此命令进行设置

npm install vue vue-server-renderer express — save

此程序包中的渲染器功能对我们很重要。Vue实例正在使用渲染器功能在服务器端进行编译。

让我们创建一个index.js文件并导入必要的库;

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

现在,我们在express中创建vue实例。

server.get('*', (req, res) => {
  const app = new Vue({
     data: {},
     template: ``
  })
})
server.listen(8000)

Vue样本已在Express服务器中准备好。我们的SSR样本现已准备就绪,让我们进行样本研究。

server.get('*', (req, res) => {
 const app = new Vue({
    data: {
    array: [ 'vue', 'java', 'python', 'javascript'],
  },
    template: `<div v-for="(a, index) in array" 
                    v-bind:key="index">{{ a }}</div>`
})
renderer.renderToString(app, (err, html) => {
      res.end(`
          <!DOCTYPE html>
          <html lang="en">
            <head><title>Vue Js – SSR SAMPLE</title></head>
            <body>${html}</body>
          </html>
      `)
    })
})
server.listen(8000)

现在,我们将端口设置为8000,让我们在节点上运行index.js文件。

使用Nuxt进行服务器端渲染(SSR)?

Nuxt是一个基于Vue.js的渐进框架,用于创建现代Web应用程序。将nuxt框架附加到Vue栖息地后,需要具有一些设置的,完全兼容ssr的Web应用程序。

该架构显示了在调用服务器或用户通过<nuxt-link>浏览应用程序时Nuxt.js所调用的内容:

该框架中使用的文件结构与next.js相同


页面下的每个vue文件显示一个单独的路由。现在可以使用新设置来静态生成文件。(Nuxt v2.13)通过这种方式,您可以开发完全与seo兼容的Web应用程序。这是您将在nuxt.config.js下添加的设置

就这么简单:)

结论

现在,您可以通过本文J获得有关vue和ssr的新信息

客户端:运行webpack-dev-server,监视Vue组件和js代码的更改,并生成带有清单资源到dev-server的客户端清单,将其保存到磁盘并实时更新浏览器中的代码和样式。

服务器端:它以观察者身份运行webpack,构建服务器捆绑包并重新启动应用程序,然后进行了更改。(在我们提到的两种方法中)

参考

How to Server Side Rendering (SSR) with Vue.js?

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容