介绍
ssr-client-utils
是一个在客户端使用时的工具集,可以帮助我们处理一些在服务端渲染时已经处理好的数据,比如直出的 html 以及针对 SEO 做的优化。
安装
我们可以使用 npm 安装 ssr-client-utils
:
npm install ssr-client-utils --save
安装完成后,我们需要通过 import
或者 require
引入这个包:
const { getMeta, copyStyles } = require('ssr-client-utils')
如果您在项目中使用的是 ES6 或者 TypeScript,您也可以使用如下方式引入:
import { getMeta, copyStyles } from 'ssr-client-utils'
使用方法
getMeta
getMeta
方法可以帮助我们获取直出 html 中的 meta 信息,一般可以用于设置页面的标题、关键词、描述等。
-- -------------------- ---- ------- ------ ------ ----- --------------- ------------------- ----- ------------------ ----------------- --------------------- ------- ------ ---- --------------- ------- -------
我们假设在某个页面的直出 html 里面包含了如上的 meta 信息,我们可以使用如下代码来获取对应的值:
const meta = getMeta() console.log(meta) // => { // keywords: 'k1,k2,k3', // description: '我是页面描述', // title: '我是页面标题' // }
copyStyles
copyStyles
方法可以帮助我们把服务端渲染好的样式复制到客户端,避免出现页面闪烁的现象。
我们需要在服务端渲染时将 css 信息储存到上下文参数里面,然后在客户端复制一份到头部。
-- -------------------- ---- ------- ----- -------- - ------ ------ --- ----------- ----- - -------------- - - --------------------------- ----- - --------- - - ---------------------------- ----- --- - ------------------------ ----- ------- - ----- -- -- - ----- ------- - -- ----- ------- - --------------- ---- ------ ------------------ ----------------- -- - ----- ---- - - -------- ------- ------------ -------- - ------ ---- - -- ----------- - ------------ -
结语
作为一个前端开发人员,我们在开发客户端渲染的应用时,需要考虑 SEO 以及页面首次加载时的性能问题。ssr-client-utils
就是为了解决这些问题而生的。在使用这个库的时候,我们需要注意:
- 在服务端渲染时,需要把相关的信息记忆在上下文参数里面。
- 在客户端使用时,需要按照文档提供的方式引入并使用。
这样,在我们开发完客户端应用后,就可以利用 ssr-client-utils
解决 SEO 和页面初次加载时的性能问题了。
示例代码
在下面的示例代码中,我们假设服务端渲染时使用了 styled-components
来编写页面的样式。示例代码是在 Next.js 项目中使用 ssr-client-utils
的例子。
-- -------------------- ---- ------- -- -------------- ------ ------ - ---------- -------- - ---- ------- ------ ------ ---- ------------------- ------ - -------- ---------- - ---- ------------------ ------ - ------------------------- - ---- -------------- ----- ------------- - ----------- ----------------- ------ ------- --- ----- ----- -------- ----- ----------- ------ ----------- ------- - ----- --------- - -- ------- ------------- -- -- - ----- ------ -------- - ----------------------- ------------ -- - -- --------- - ------------ - -- --------- ----- ----------- - -- -- - --------- -------- ------- ------ --- ---- -- --- ----- ----------------------------- -- - ----- ---- - --------- ----- - ------- - - ---- ------ - -------------- ----------------- - ------------------------- - ---- --------------------- --------------------------- ---------------------- ------- ------------------------------------- --- -- ---------------- ---------------- - - ------------------------- - ----- -- --- -- -- - ----- ------ - ----- ----- ------------- - - -------- ------- ------ ----- --- ------ ------ -- ------ ---- - ------ - ------- ------------- - - ------ ------- ---------
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f17c8ff403f2923b035c3d1