亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

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

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

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

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

vue-server-renderer

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

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

const Vue = require('vue')
const server = require('express')()
const context = {
 title: 'hello'
}
const mocktitle = '我愛(ài)吃的水果'
const mockdata = ['香蕉', '蘋(píng)果', '橘子']
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來(lái)渲染在實(shí)例模板中的,而context是作為基礎(chǔ)模板的data來(lái)渲染temp.html的。可以看到在服務(wù)端用vue進(jìn)行渲染的規(guī)則和前端渲染時(shí)一樣,v-for、v-if等都可以正常使用。最后命令行輸入node test.js,然后在瀏覽器打開(kāi)http://localhost:8080 查看結(jié)果如下:

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

結(jié)語(yǔ)

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

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

相關(guān)文章

  • vue-admin-template解決登錄和跨域問(wèn)題解決

    vue-admin-template解決登錄和跨域問(wèn)題解決

    本文主要介紹了vue-admin-template解決登錄和跨域問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Vue實(shí)現(xiàn)省市區(qū)級(jí)聯(lián)下拉選擇框

    Vue實(shí)現(xiàn)省市區(qū)級(jí)聯(lián)下拉選擇框

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)省市區(qū)級(jí)聯(lián)下拉選擇框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue中的base64圖片轉(zhuǎn)網(wǎng)絡(luò)URL方式

    vue中的base64圖片轉(zhuǎn)網(wǎng)絡(luò)URL方式

    在Vue中,可以直接將Base64編碼的圖片賦值給img元素的src屬性,此外,也可以通過(guò)JavaScript的URL.createObjectURL()方法將Base64轉(zhuǎn)換為Blob URL,進(jìn)而轉(zhuǎn)換為File對(duì)象,并可進(jìn)一步轉(zhuǎn)換為PNG或其他格式的圖片,這種轉(zhuǎn)換技術(shù)在前端開(kāi)發(fā)中非常實(shí)用
    2024-10-10
  • vant/vue跨域請(qǐng)求解決方案

    vant/vue跨域請(qǐng)求解決方案

    這篇文章主要介紹了vant/vue跨域請(qǐng)求解決方案,需要的朋友可以參考下
    2022-12-12
  • Vue中Table組件行內(nèi)右鍵菜單實(shí)現(xiàn)方法(基于 vue + AntDesign)

    Vue中Table組件行內(nèi)右鍵菜單實(shí)現(xiàn)方法(基于 vue + AntDesign)

    這篇文章主要介紹了Vue中Table組件行內(nèi)右鍵菜單實(shí)現(xiàn)方法,該項(xiàng)目是基于 vue + AntDesign的,具體實(shí)例代碼給大家介紹的非常詳細(xì) ,需要的朋友可以參考下
    2019-11-11
  • Vue.js頁(yè)面驗(yàn)證跳轉(zhuǎn)功能實(shí)現(xiàn)

    Vue.js頁(yè)面驗(yàn)證跳轉(zhuǎn)功能實(shí)現(xiàn)

    這篇文章主要介紹了Vue.js頁(yè)面驗(yàn)證跳轉(zhuǎn)功能實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • uniapp開(kāi)發(fā)打包多端應(yīng)用完整方法指南

    uniapp開(kāi)發(fā)打包多端應(yīng)用完整方法指南

    這篇文章主要介紹了uniapp開(kāi)發(fā)打包多端應(yīng)用完整流程指南,包括了uniapp打包小程序,uniapp打包安卓apk,uniapp打包IOS應(yīng)用,需要的朋友可以參考下
    2022-12-12
  • Vue之插槽(Slot)的使用

    Vue之插槽(Slot)的使用

    這篇文章主要介紹了Vue之插槽(Slot)的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue遍歷生成的輸入框 綁定及修改值示例

    vue遍歷生成的輸入框 綁定及修改值示例

    今天小編就為大家分享一篇vue遍歷生成的輸入框 綁定及修改值示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • 淺談Vue響應(yīng)式(數(shù)組變異方法)

    淺談Vue響應(yīng)式(數(shù)組變異方法)

    這篇文章主要介紹了淺談Vue響應(yīng)式(數(shù)組變異方法),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論