Vue3 SSR 跨请求状态污染的解决方案
从技术上讲,我们可以在每个请求上重新初始化所有 JavaScript 模块,就像我们在浏览器中所做的那样。但是,初始化 JavaScript 模块的成本可能很高,因此这会显著影响服务器性能。 推荐的解决方案是在每个请求中为整个应用创建一个全新的实例,包括 router 和全局 store。然后,我们使用应用层级的 provide 方法来提供共享状态,并将其注入到需要它的组件中
Vue3 SSR 跨请求状态污染的解决方案
从技术上讲,我们可以在每个请求上重新初始化所有 JavaScript 模块,就像我们在浏览器中所做的那样。但是,初始化 JavaScript 模块的成本可能很高,因此这会显著影响服务器性能。 推荐的解决方案是在每个请求中为整个应用创建一个全新的实例,包括 router 和全局 store。然后,我们使用应用层级的 provide 方法来提供共享状态,并将其注入到需要它的组件中
Vue 跨请求状态污染
SSR(服务端渲染)环境下,应用模块通常只在服务器启动时初始化一次。同一个应用模块会在多个服务器请求之间被复用,而我们的单例状态对象也一样。如果我们用单个用户特定的数据对共享的单例状态进行修改,那么这个状态可能会意外地泄露给另一个用户的请求。我们把这种情况称为跨请求状态污染。
Pinia的使用(在Vue3和TypeScript的环境下)
/** * 一般在容器中做这4件事 * 1. 定义容器并导出 * 2. 使用容器中的state * 3. 修改容器中的state * 4. 使用容器中的action */ import { defineStore } from "pinia"; /** * 1. 定义容器并导出 * 参数一: 容器ID, 唯一, 将来 Pinia 会把所有的容器挂载到根容器 * 参数二: 选项对象 * 返回值: 函数, 调用的时候要空参调用, 返回容器实例 */ export const mainStore = defineStore('main', { /** * 类似组件的 data, 用于存储全局的的状态 * 注意: * 1.必须是函数, 为了在服务端渲染的时候避免交叉请求导致的数据交叉污染 * 2.必须是箭头函数, 为了更好的 TS 类型推导 */ state: () => { return { count: 100, foo: 'bar', age: 18 } }, /** * 类似组件的 computed, 用来封装计算属性, 具有缓存特性 */ getters: { }, /** * 类似组件的 methods, 封装业务逻辑, 修改state * 注意: 里面的函数不能定义成箭头函数(函数体中会用到this) */ actions: { } })
2023年中国内地GDP百强城市排行榜
GDP百强城市分布在27个省级行政区,海南、青海、西藏、宁夏4个省份仍无城市上榜,江苏下辖的13个地级市均在榜上,也是上榜城市数量最多的省份。从城市占其所属省份总GDP比重来看,除4个直辖市,长春占比最高,占了吉林GDP总值的51.7%,排名第88的湛江占比最低,为2.80%。
2022年中国GDP百强城市
百强市:苏鲁粤浙遥遥领先,4省挂零
2021年中国GDP百强城市
从省份来看: 江苏(13个)、山东(11个)、广东(10个)、浙江(8个)、河南(7个)、河北(6个)、福建(5个)、湖南(5个)、江西(4个)、湖北安徽四川内蒙古(3个)。
2021中国百强镇
根据中国中小城市发展指数研究课题组等机构发布的《2021年全国千强镇名单》,我国百强镇主要分布在广东、江苏两省,合计占了7成左右。
首款折叠屏电脑ThinkPad X1 Fold开箱上手
ThinkPad X1 Fold由一块13.3 英寸的屏幕和一个Lenovo Fold Mini 键盘以及一根 Lenovo Mod Pen 手写笔组合而成。这样的组合与我们已经熟悉的可插拔二合一平板基本一致,可以认为ThinkPad X1 Fold的本质仍然是一台二合一设备。
使用vscode进行rebase拉取
.变基拉取:从本分支的远程仓库进行拉取
vscode更新代码问题解决方法:Please clean your repository working tree before checkout_please clean your respository
1.git stash 先将本地修改存储起来 2.git pull 拉取远程 3.git stash pop 还原暂存内容
VS code部分提交git代码图文说明
《永生》境界划分
在 《永生》 中,境界共分为肉身境、神通秘境、长生秘境、仙人秘境、永生五个大境界。