npm 包 @ngx-universal/state-transfer 使用教程

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

简介

在前端开发中,有时我们需要在不同的页面间共享状态(例如用户登录信息)或者在浏览器和服务器间共享状态(例如预取数据),而传统的做法往往需要通过 URL 参数或者像 Redux 这样的状态管理库来实现。而 @ngx-universal/state-transfer 就提供了一种更为方便的做法:利用 Angular 的 Universal 框架,在服务端对应用的状态进行初始化,然后将其存储到浏览器端的 localStorage 中,以便在客户端的页面中直接读取。

@ngx-universal/state-transfer 的 API 设计非常简单,我们可以通过它提供的两个 service:ServerTransferStateService 和 BrowserTransferStateService 来在服务端和客户端的代码中分别使用。本文会着重介绍 @ngx-universal/state-transfer 的使用方法及其原理。

安装

我们可以使用 npm 直接安装 @ngx-universal/state-transfer 命令如下:

--- ------- ------ -----------------------------

API

@ngx-universal/state-transfer 的 API 分为两个 service:ServerTransferStateService 和 BrowserTransferStateService,下面分别介绍两个 service 的方法和用法。

ServerTransferStateService

ServerTransferStateService 是用于服务端的状态传输的 service,它的方法如下:

  • set:用于设置服务端渲染时需要传输到浏览器端的状态。
  • get:用于获取服务端渲染时传输到浏览器端的状态。

使用方法如下:

------------------- ------------ --------------------------- - -

---------- -
  -- -------------
  ------------------------------ - ---- ------- ---
-

----------------- -
  -- ----------
  ----- ------ - ------------------------------ ----
-

BrowserTransferStateService

BrowserTransferStateService 是用于客户端的状态传输的 service,它的方法如下:

  • get:用于获取服务端渲染时传输到浏览器端的状态。

使用方法如下:

------------------- ------------- ---------------------------- - -

---------- -
  -- ----------
  ----- ------ - ------------------------------- ----
-

示例

下面给出一个简单示例来说明 @ngx-universal/state-transfer 的使用方法。

------ - ---------- ------ - ---- ----------------
------ - --------------------------- --------------------------- - ---- --------------------------------

------------
  --------- -----------
  --------- -
    -------------
    ----- ------ - ---- ------
  -
--
------ ----- ------------- ---------- ------ -
  ------ - -----

  ------------
    ------- ------------ ---------------------------
    ------- ------------- ---------------------------
  - - -

  ---------- -
    -- -------------
    ------------------------------ - ---- ------- ---

    -- ------------- ------------ --
    ----------- - ------------------------------ --- -- ------------------------------- ----
  -
-

当我们运行这个组件的时候,首先会在服务端进行初始化。在客户端打开这个页面时,它会直接从 localStorage 中读取这个状态,不需要再次请求服务器获取数据。

原理

在服务端渲染时,Angular 会将组件中的数据序列化成 JSON 字符串,然后将这个 JSON 字符串作为一个 <script> 标签的文本嵌入到渲染后的 HTML 中。所以,在客户端浏览器中,只需要读取这个 JSON 字符串,然后将其转换成原始的数据结构就可以了。

总结

在这篇文章中,我们介绍了如何使用 @ngx-universal/state-transfer 创建具有服务端渲染的 Angular 应用,并且通过浏览器端的 localStorage 传输状态。这种方式需要注意一些细节,例如在服务端路由变化时及时清空状态,以及保证状态的可序列化等。在实际开发中,@ngx-universal/state-transfer 可以为我们提供一种非常方便的方式来处理前端状态传输。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedb6f2b5cbfe1ea0611697


猜你喜欢

  • npm 包 @truffle/workflow-compile 使用教程

    前言 前端工程师在日常的开发过程中,会用到很多 npm 包,其中一个比较常用的是 @truffle/workflow-compile,它是一个用于编译 Solidity 合约的 npm 包。

    4 年前
  • npm 包 it-drain 使用教程

    简介 在日常工作中,我们经常需要对一些 JSON 或对象结构进行深层次过滤或筛选,但是在 JavaScript 中并没有提供一个方便的方法来进行这样的操作。然而,幸好有一个 npm 包 it-drai...

    4 年前
  • npm 包 ipfs-repo-migrations 使用教程

    前言 iPFS 是一个去中心化的分布式存储协议,使得分布式应用程序的构建变得更加容易。作为前端开发者,我们可以使用 iPFS 来实现文件存储、共享和同步等功能。ipfs-repo-migrations...

    4 年前
  • npm 包 ipld-block 使用教程

    简介 IPLD(InterPlanetary Linked Data)是一个开放的分布式数据库,它可以用于存储和查询各种类型的分布式信息。IPLD-block 是 IPLD 的子集,用于将数据分块并存...

    4 年前
  • npm 包 it-map 使用教程

    在前端开发中,经常需要对数据进行遍历和处理。而使用 JavaScript 自带的遍历方法较为繁琐,不够简单高效。因此,开发者们在开发中经常会利用第三方库来快速遍历和操作数据。

    4 年前
  • npm 包 it-first 使用教程

    npm 包 it-first 使用教程 在前端开发过程中,常常需要对集合类型的数据进行操作。如果我们只是对集合进行简单的遍历,那么直接使用 for 循环就可以了。但是如果我们需要在集合中找到第一个满足...

    4 年前
  • npm 包 just-range 使用教程

    just-range 是一个轻量级的库,它提供了方便快捷地生成数字序列的方法。通过使用这个库,你可以很容易地生成一个从某个数到某个数的数组,同时还可以指定步长。这个库还可以用于数学计算中创建连续数组,...

    4 年前
  • npm 包 it-glob 使用教程

    简介 it-glob 是一个能够高效地处理大规模文件的 npm 包。it-glob 充分利用了迭代器(iterator)的概念,帮助你轻松地以流式方式处理文件。 安装 在终端中输入以下命令安装 it-...

    4 年前
  • npm 包 it-last 使用教程

    前言 在前端开发中,经常需要对数据进行处理,特别是数组数据处理。而数组中的最后一个元素是常常需要用到的,比如获取最后一个更新时间,或者处理成员名单等等。it-last就是一个可以用来获取数组中最后一个...

    4 年前
  • npm 包 playwright-test 使用教程

    简介 playwright-test 是一个使用 Typescript 构建的库,它能够帮助你构建可维护的,跨浏览器的端到端测试。它依赖于 Playwright,这是一个支持 Chrome、Firef...

    4 年前
  • npm 包 ipfs-core-utils 使用教程

    概述 ipfs-core-utils 是一个 JavaScript 库,用于操作 IPFS(InterPlanetary File System)核心模块。它提供了一些常见的操作,如文件上传、文件下载...

    4 年前
  • npm 包 iso-constants 使用教程

    什么是 iso-constants? iso-constants 是一个简单的 npm 包,它提供了一组用于代表国际标准描述的常量。 安装 要安装 iso-constants,请使用 npm: npm...

    4 年前
  • npm 包 it-tar 使用教程

    前言 在前端开发中,我们经常需要将文件打包或解压缩。而 Node.js 提供了一个强大的模块 tar 来实现这个功能。但是,由于 Node.js 的模块机制,我们需要自己完成一些繁琐的编写和配置的工作...

    4 年前
  • npm包@truffle/reporters使用教程

    简介 在前端开发中,测试是不可避免的一部分。@truffle/reporters是一个用于测试报告的npm包,它允许您以多种格式生成测试报告。这个包是truffle框架的一部分,它是一个基于以太坊智能...

    4 年前
  • npm 包 it-to-buffer 使用教程

    在前端开发中,我们常常需要将不同格式的数据转换为二进制数据。而 npm 包 it-to-buffer 则提供了一种方便的方法来实现这个功能。it-to-buffer 能够将 input 数据流中的数据...

    4 年前
  • npm 包 multiaddr-to-uri 使用教程

    前言 在当前互联网技术的发展趋势中,区块链技术已经成为一个热门的话题。除了作为一种交易方式,区块链技术的加密性和安全性也被广泛认可和应用,其中 IPFS 技术就是一个很好的例子。

    4 年前
  • npm 包 it-batch 使用教程

    在前端开发中,经常需要对一系列数据进行处理。当数据量较大时,对数据进行处理的效率就成为了关键问题。此时,一个高效的批量处理工具就变得尤为重要。 it-batch 便是一款针对批量处理数据的 npm 包...

    4 年前
  • npm 包 it-parallel-batch 使用教程

    介绍 it-parallel-batch 是一个 Node.js 的 npm 包,能够帮助开发者并行地执行一个数据集的批处理。它使用简单而且非常高效,因此非常适合在前端开发中使用。

    4 年前
  • npm 包 @assemblyscript/loader 使用教程

    简介 @assemblyscript/loader 是一个用于加载 WebAssembly 模块的 Node.js 模块,它提供了将 AssemblyScript 编译生成的 WebAssembly ...

    4 年前
  • npm 包 @as-pect/assembly 使用教程

    在前端开发中,我们经常需要对 JavaScript 代码进行测试。而在一些需要高性能的场景下,使用 WebAssembly 是很好的选择。@as-pect/assembly 就是一个帮助我们在 Web...

    4 年前

相关推荐

    暂无文章