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

Angular Universal服務(wù)器端渲染避免 window is not defined錯(cuò)誤消息

 更新時(shí)間:2023年07月27日 09:47:00   作者:JerryWang_汪子熙  
這篇文章主要介紹了Angular Universal服務(wù)器端渲染避免 window is not defined錯(cuò)誤消息,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

盡管 Universal 項(xiàng)目的目標(biāo)是能夠在服務(wù)器上無縫呈現(xiàn) Angular 應(yīng)用程序,但開發(fā)人員還是應(yīng)該考慮一些注意事項(xiàng)。

首先,服務(wù)器和瀏覽器環(huán)境之間存在明顯差異。 在服務(wù)器上呈現(xiàn)時(shí),您的應(yīng)用程序處于 ephemeral 或者 Snapshot 狀態(tài)。

應(yīng)用程序完全呈現(xiàn)一次,返回生成的 HTML,其余應(yīng)用程序狀態(tài)在下一次呈現(xiàn)之前被銷毀。

其次,服務(wù)器環(huán)境本質(zhì)上不具有與瀏覽器相同的功能(并且具有一些瀏覽器同樣不具有的功能)。 例如,服務(wù)器沒有任何cookies 的概念。

固然開發(fā)人員可以 polyfill 來一定程度上規(guī)避這個(gè)問題,但是沒有完美的解決方案。

另請(qǐng)注意 SSR 的目標(biāo):改進(jìn)應(yīng)用程序的初始渲染時(shí)間。 這意味著應(yīng)避免或充分防范任何可能降低此初始渲染中應(yīng)用程序速度的情況出現(xiàn)。

一些 啟用 SSR 后的常見錯(cuò)誤:

window is not defined

使用 Angular Universal 時(shí)最常見的問題之一是服務(wù)器環(huán)境中缺少瀏覽器全局變量。 這是因?yàn)?Universal 項(xiàng)目使用 domino 作為服務(wù)器 DOM 呈現(xiàn)引擎。 因此,服務(wù)器上不會(huì)存在或不支持某些功能。 這包括窗口和文檔全局對(duì)象、cookie、某些 HTML 元素(如畫布)和其他幾個(gè)。 Domino 代表節(jié)點(diǎn)中的 DOM.

解決這個(gè)錯(cuò)誤的一些思路

通常,需要的全局變量可以通過 Angular 平臺(tái)通過依賴注入 (DI) 獲得。

例如,全局文檔可通過 DOCUMENT 令牌獲得。 此外,通過 DOCUMENT 對(duì)象可以獲得 window 和 location 的非常原始的版本。

例如:

示例代碼如下:

import { Injectable, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';
@Injectable()
export class ExampleService {
  constructor(@Inject(DOCUMENT) private _doc: Document) {}
  getWindow(): Window | null {
    return this._doc.defaultView;
  }
  getLocation(): Location {
    return this._doc.location;
  }
  createElement(tag: string): HTMLElement {
    return this._doc.createElement(tag);
  }
}

以上就是Angular Universal服務(wù)器端渲染避免 window is not defined錯(cuò)誤消息的詳細(xì)內(nèi)容,更多關(guān)于Angular Universal服務(wù)器端渲染的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談angularJs函數(shù)的使用方法(大小寫轉(zhuǎn)換,拷貝,擴(kuò)充對(duì)象)

    淺談angularJs函數(shù)的使用方法(大小寫轉(zhuǎn)換,拷貝,擴(kuò)充對(duì)象)

    今天小編就為大家分享一篇淺談angularJs函數(shù)的使用方法(大小寫轉(zhuǎn)換,拷貝,擴(kuò)充對(duì)象),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • AngularJS基礎(chǔ) ng-include 指令簡(jiǎn)單示例

    AngularJS基礎(chǔ) ng-include 指令簡(jiǎn)單示例

    本文主要介紹AngularJS ng-include 指令,這里對(duì)ng-include的基本知識(shí)做了整理,并附有代碼實(shí)例,有需要的朋友可以參考下
    2016-08-08
  • AngularJS HTML DOM詳解及示例代碼

    AngularJS HTML DOM詳解及示例代碼

    本文主要介紹AngularJS HTML DOM基礎(chǔ)知識(shí),這里整理了相關(guān)資料和示例代碼進(jìn)行詳解,有需要的小伙伴可以參考下
    2016-08-08
  • anime.js 實(shí)現(xiàn)帶有描邊動(dòng)畫效果的復(fù)選框(推薦)

    anime.js 實(shí)現(xiàn)帶有描邊動(dòng)畫效果的復(fù)選框(推薦)

    anime.js是一個(gè)靈活的輕型JavaScript動(dòng)畫庫。這篇文章主要介紹了anime.js 實(shí)現(xiàn)帶有描邊動(dòng)畫效果的復(fù)選框 ,需要的朋友可以參考下
    2017-12-12
  • Angular 中的路由詳解

    Angular 中的路由詳解

    路由是實(shí)現(xiàn)單頁面應(yīng)用的一種方式,通過監(jiān)聽hash或者h(yuǎn)istory的變化,渲染不同的組件,起到局部更新的作用,避免每次URL變化都向服務(wù)器請(qǐng)求數(shù)據(jù),本文給大家介紹Angular 中的路由,感興趣的朋友一起看看吧
    2023-11-11
  • Angular中的NgZone.run()有什么用途

    Angular中的NgZone.run()有什么用途

    在Angular中,NgZone是一個(gè)服務(wù),用于管理異步任務(wù)的執(zhí)行,并提供一種在Angular區(qū)域內(nèi)或外部顯式運(yùn)行代碼的方式,NgZone.run方法是一種顯式在Angular區(qū)域內(nèi)運(yùn)行函數(shù)的方式,本文介紹Angular中的NgZone.run()有什么用,感興趣的朋友一起看看吧
    2024-01-01
  • Angular4開發(fā)解決跨域問題詳解

    Angular4開發(fā)解決跨域問題詳解

    本篇文章主要介紹了Angular4開發(fā)解決跨域問題詳解。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Angular4 組件通訊方法大全(推薦)

    Angular4 組件通訊方法大全(推薦)

    這篇文章主要介紹了Angular4 組件通訊方法大全(推薦),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • angular2+nodejs實(shí)現(xiàn)圖片上傳功能

    angular2+nodejs實(shí)現(xiàn)圖片上傳功能

    這篇文章主要介紹了angular2+nodejs實(shí)現(xiàn)圖片上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Angular.js?實(shí)現(xiàn)帶手柄自由調(diào)整頁面大小的功能

    Angular.js?實(shí)現(xiàn)帶手柄自由調(diào)整頁面大小的功能

    這篇文章主要介紹了Angular.js?實(shí)現(xiàn)帶手柄自由調(diào)整頁面大小的功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-12-12

最新評(píng)論