欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解vue服務(wù)端渲染(SSR)初探

 更新時間:2017年06月19日 14:10:12   作者:TokenYang  
本篇文章主要介紹了詳解vue服務(wù)端渲染(SSR)初探,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

首先來講一下服務(wù)端渲染,直白的說就是在服務(wù)端拿數(shù)據(jù)進(jìn)行解析渲染,直接生成html片段返回給前端。具體用法也有很多種比如:

傳統(tǒng)的服務(wù)端模板引擎渲染整個頁面

服務(wù)渲染生成htmll代碼塊, 前端 AJAX 獲取然后js動態(tài)添加

服務(wù)端渲染的優(yōu)劣

首先是seo問題,前端動態(tài)渲染的內(nèi)容是不能被抓取到的,而使用服務(wù)端渲染就可以解決這個問題。還有就是首屏加載過慢這種問題,比如在SPA中,打開首頁需要初始加載很多資源,這時考慮在首屏使用服務(wù)端渲染,也是一種折中的優(yōu)化方案。但是使用SSR時,勢必會增加服務(wù)器的壓力,還有可能會需要前后端同構(gòu),使用同樣的模板引擎,這似乎與前后端分離的觀點(diǎn)又是矛盾的。廢話就說到這里,下面來看一下vue框架中的服務(wù)器渲染。

vue-server-renderer

vue-server-renderer就是vue中處理服務(wù)端加載的一個模塊了,官方文檔:https://ssr.vuejs.org/en/,暫時沒有中文版的,我也只是稍微看了一些,然后寫了一個簡單的demo。首先新建一個test.js文件,并用npm安裝依賴express、vue、vue-server-renderer。引入vue-server-renderer之后,然后新建一個temp.html作為渲染的基本模板,用createRenderer方法新建一個render實(shí)例,這里我傳入temp.html作為renderer的template的參數(shù),在后面渲染時就會以這個temp.html作為基礎(chǔ)模板。

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

temp.html:

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

接下來隨便定義一些渲染用的數(shù)據(jù),然后用express新建一個node服務(wù)器,再定義一個vue的實(shí)例。然后再調(diào)用renderer的renderToString方法來渲染生成html,渲染成功后返回給客戶端。

const Vue = require('vue')
const server = require('express')()
const context = {
 title: 'hello'
}
const mocktitle = '我愛吃的水果'
const mockdata = ['香蕉', '蘋果', '橘子']
server.get('*', (req, res) => {
 const app = new Vue({
  data: {
   url: req.url,
   data: mockdata,
   title: mocktitle
  },
  template: <div>The visited URL is: {{ url }}
  <h3>{{title}}</h3>
  <p v-for='item in data'>{{item}}</p>
  </div>
 })
 renderer.renderToString(app, context, (err, html) => {
  if (err) {
   res.status(500).end('Internal Server Error')
   return
  }
  res.end(html)
 })
})
server.listen(8080)

注意這里渲染的數(shù)據(jù)有兩種,mockdata是作為vue實(shí)例的data來渲染在實(shí)例模板中的,而context是作為基礎(chǔ)模板的data來渲染temp.html的。可以看到在服務(wù)端用vue進(jìn)行渲染的規(guī)則和前端渲染時一樣,v-for、v-if等都可以正常使用。最后命令行輸入node test.js,然后在瀏覽器打開http://localhost:8080 查看結(jié)果如下:

可以看到服務(wù)端直接返回了一個渲染完成的Doc,示例demo到此結(jié)束。

結(jié)語

服務(wù)端渲染還是客戶端渲染的問題,個人覺得還是要針對具體業(yè)務(wù)場景然后再做選擇。然后作為前端我對服務(wù)端的東西了解的也不是很多,上面說的如果有不對的地方,歡迎指正拍磚。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue+echarts實(shí)現(xiàn)動態(tài)繪制圖表及異步加載數(shù)據(jù)的方法

    vue+echarts實(shí)現(xiàn)動態(tài)繪制圖表及異步加載數(shù)據(jù)的方法

    vue寫的后臺管理,需要將表格數(shù)據(jù)繪制成圖表(折線圖,柱狀圖),圖表數(shù)據(jù)都是通過接口請求回來的。這篇文章主要介紹了vue+echarts 動態(tài)繪制圖表及異步加載數(shù)據(jù)的相關(guān)知識,需要的朋友可以參考下
    2018-10-10
  • vue中使用window.open()參數(shù)示例詳解

    vue中使用window.open()參數(shù)示例詳解

    這篇文章主要介紹了vue中使用window.open()參數(shù)詳解,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • vue指令v-html和v-text

    vue指令v-html和v-text

    這篇文章主要介紹了 vue指令v-html和v-text,文章圍繞vue指令v-html和v-text的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對大家有所幫助
    2021-11-11
  • 詳解 vue.js用法和特性

    詳解 vue.js用法和特性

    Vue.js目前已經(jīng)更新到2.x,功能和語法上有一定升級和修改,本文首先介紹基礎(chǔ)內(nèi)容。感興趣的朋友一起看看吧
    2017-10-10
  • vue 里面的 $forceUpdate() 強(qiáng)制實(shí)例重新渲染操作

    vue 里面的 $forceUpdate() 強(qiáng)制實(shí)例重新渲染操作

    這篇文章主要介紹了vue 里面的 $forceUpdate() 強(qiáng)制實(shí)例重新渲染操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue中控制mock在開發(fā)環(huán)境使用,在生產(chǎn)環(huán)境禁用方式

    vue中控制mock在開發(fā)環(huán)境使用,在生產(chǎn)環(huán)境禁用方式

    這篇文章主要介紹了vue中控制mock在開發(fā)環(huán)境使用,在生產(chǎn)環(huán)境禁用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 在Vue中使用this.$store或者是$route一直報錯的解決

    在Vue中使用this.$store或者是$route一直報錯的解決

    今天小編就為大家分享一篇在Vue中使用this.$store或者是$route一直報錯的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue實(shí)現(xiàn)小球滑動交叉效果

    vue實(shí)現(xiàn)小球滑動交叉效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)小球滑動交叉,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Element?Table行的動態(tài)合并及數(shù)據(jù)編輯示例

    Element?Table行的動態(tài)合并及數(shù)據(jù)編輯示例

    這篇文章主要為大家介紹了Element?Table行的動態(tài)合并及數(shù)據(jù)編輯示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Vue.js原理分析之observer模塊詳解

    Vue.js原理分析之observer模塊詳解

    這篇文章主要介紹了Vue.js中observer模塊的相關(guān)資料,文中通過原理分析介紹還是相對的詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-02-02

最新評論