預(yù)渲染pre-render 和 頁面白屏處理

頁面白屏來源:

  1. 解析html。
  2. 客戶端js渲染。
  3. 加載異步組件渲染梗醇。
  4. ajax獲取數(shù)據(jù)渲染。

解析html

  1. 減小html大小撒蟀。
  2. async/deferer腳本執(zhí)行叙谨。
  3. 腳本放最后。

客戶端js渲染

// 使用vue-cli構(gòu)建后的index.html,內(nèi)容由客戶端js渲染
<body>
  <div id="app"></div>
  <!-- built files will be auto injected -->
  <script type="text/javascript" src="/static/js/manifest.6b0afe9dae29c384450a.js"></script>
  <script type="text/javascript" src="/static/js/vendor.426ef21560bb1458790e.js"></script>
  <script type="text/javascript" src="/static/js/app.7721a2d8031d1ad79913.js"></script>
</body>

可以在模板html中增加初始內(nèi)容保屯,客戶端渲染出頁面時(shí)會(huì)自動(dòng)替換掉手负。

<body>
    <div id="app">
        // 在這里增加初始內(nèi)容
    </div>
  <!-- built files will be auto injected -->
</body>

問題

  1. 當(dāng)通過url直接訪問應(yīng)用/foo 和/bar,都會(huì)先顯示// 在這里增加初始內(nèi)容姑尺。
  2. 如果組件是異步加載竟终,則下載和渲染組件期間會(huì)白屏。


    image.png

加載異步組件渲染切蟋。

取消動(dòng)態(tài)組件

// const Foo = () => import('@/components/Foo')
// const Bar = () => import('@/components/Bar')

import Foo from '@/components/Foo'
import Bar from '@/components/Bar'

ajax獲取數(shù)據(jù)渲染

比如列表數(shù)據(jù)響應(yīng)前ul為空统捶,可以使用骨架屏占位。

    <ul v-if="users.length > 0">
      <li v-for="user in users"
        :key="user.name">{{ user.name }}</li>
    </ul>
    <div v-else>
      <!-- 使用svg,節(jié)省網(wǎng)絡(luò)下載時(shí)間柄粹,但是動(dòng)畫會(huì)被js阻塞 -->
      <svg width="750" height="191" class="svgclz">
        <circle cx="95" cy="102" r="63" fill="#edeff0" mask="url(#shining)" />
        <rect width="160" height="35" x="190" y="45" fill="#edeff0" mask="url(#shining)" />
        <rect width="400" height="35" x="190" y="90" fill="#edeff0" mask="url(#shining)" />
        <line x1="0" y1="190" x2="750" y2="190" stroke="#edeff0"></line>
      </svg>
    </div>

預(yù)渲染 pre-render

預(yù)渲染有點(diǎn)像服務(wù)器端渲染和靜態(tài)站點(diǎn)生成瘾境。

在構(gòu)建應(yīng)用時(shí),使用預(yù)渲染器啟動(dòng)一個(gè)類瀏覽器環(huán)境用來加載指定路由镰惦,并將得到的html轉(zhuǎn)存儲(chǔ)到指定的文件目錄迷守,構(gòu)建出來的 html 文件已有部分內(nèi)容,減少白屏?xí)r間旺入。

不適合渲染動(dòng)態(tài)頁面兑凿;渲染大量路由時(shí),會(huì)延長構(gòu)建時(shí)間茵瘾。

參考:Prerender Vue.js Apps with prerender-spa-plugin v3

const PrerenderSPAPlugin = require('prerender-spa-plugin')
const PuppeteerRenderer = PrerenderSPAPlugin.PuppeteerRenderer;

...
new PrerenderSPAPlugin({
  staticDir: path.join(__dirname, '../dist'),
  routes: ['/', '/foo', '/bar'],
  renderer: new PuppeteerRenderer({
    // // eg, with `document.dispatchEvent(new Event('custom-render-trigger'))`
    // captureAfterDocumentEvent: 'custom-render-trigger',
    // // Optional - Wait to render until the specified element is detected using `document.querySelector`
    renderAfterElementExists: '#app',
  })
})
...
文件目錄
index.html
bar/index.html
foo/index
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末礼华,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拗秘,更是在濱河造成了極大的恐慌圣絮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雕旨,死亡現(xiàn)場離奇詭異扮匠,居然都是意外死亡捧请,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門棒搜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疹蛉,“玉大人,你說我怎么就攤上這事力麸】煽睿” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵克蚂,是天一觀的道長闺鲸。 經(jīng)常有香客問我,道長埃叭,這世上最難降的妖魔是什么摸恍? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮游盲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛮粮。我一直安慰自己益缎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布然想。 她就那樣靜靜地躺著莺奔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪变泄。 梳的紋絲不亂的頭發(fā)上令哟,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音妨蛹,去河邊找鬼屏富。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蛙卤,可吹牛的內(nèi)容都是我干的狠半。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颤难,長吁一口氣:“原來是場噩夢啊……” “哼神年!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起行嗤,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤已日,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后栅屏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飘千,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡堂鲜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了占婉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泡嘴。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖逆济,靈堂內(nèi)的尸體忽然破棺而出酌予,到底是詐尸還是另有隱情,我是刑警寧澤奖慌,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布抛虫,位于F島的核電站,受9級特大地震影響简僧,放射性物質(zhì)發(fā)生泄漏建椰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一岛马、第九天 我趴在偏房一處隱蔽的房頂上張望棉姐。 院中可真熱鬧,春花似錦啦逆、人聲如沸伞矩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乃坤。三九已至,卻和暖如春沟蔑,著一層夾襖步出監(jiān)牢的瞬間湿诊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工瘦材, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厅须,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓食棕,卻偏偏與公主長得像九杂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子宣蠕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容