当前位置: 首页 > wzjs >正文

策划书模板免费下载的网站太原网站优化怎么做

策划书模板免费下载的网站,太原网站优化怎么做,法律问题咨询哪个网站做的好,seo快速排名源码欢迎观看《Pinia实战》视频课程 Vue 与 Vite 服务端渲染 (SSR) TIP 如果你使用的是 Nuxt,你需要阅读的是这些说明文档。 只要你只在 setup 函数、getter 和 action 的顶部调用你定义的 useStore() 函数,那么使用 Pinia 创建 store 对于 SSR 来说应该…

欢迎观看《Pinia实战》视频课程

    1. Vue 与 Vite
      1. 服务端渲染 (SSR)

TIP

如果你使用的是 Nuxt,你需要阅读的是这些说明文档。

只要你只在 setup 函数、getter 和 action 的顶部调用你定义的 useStore() 函数,那么使用 Pinia 创建 store 对于 SSR 来说应该是开箱即用的:

<script setup>

// 这是可行的,

// 因为 pinia 知道在 `setup` 中运行的是什么程序。

const main = useMainStore()

</script>

      1. 在 setup() 外部使用 store

如果你需要在其他地方使用 store,你需要将原本被传递给应用 的 pinia 实例传递给 useStore() 函数:

const pinia = createPinia()

const app = createApp(App)

app.use(router)

app.use(pinia)

router.beforeEach((to) => {

  // ✅这会正常工作,因为它确保了正确的 store 被用于

  // 当前正在运行的应用

  const main = useMainStore(pinia)

  if (to.meta.requiresAuth && !main.isLoggedIn) return '/login'

})

Pinia 会将自己作为 $pinia 添加到你的应用中,所以你可以在 serverPrefetch() 等函数中使用它。

export default {

  serverPrefetch() {

    const store = useStore(this.$pinia)

  },

}

      1. State 激活

为了激活初始 state,你需要确保 rootState 包含在 HTML 中的某个地方,以便 Pinia 稍后能够接收到它。根据你服务端所渲染的内容,为了安全你应该转义 state。我们推荐 Nuxt 目前使用的 @nuxt/devalue:

import devalue from '@nuxt/devalue'

import { createPinia } from 'pinia'

// 检索服务端的 rootState

const pinia = createPinia()

const app = createApp(App)

app.use(router)

app.use(pinia)

// 渲染页面后,rootState 被建立,

// 可以直接在 `pinia.state.value`上读取。

// 序列化,转义(如果 state 的内容可以被用户改变,这点就非常重要,几乎都是这样的)

// 并将其放置在页面的某处

// 例如,作为一个全局变量。

devalue(pinia.state.value)

根据你服务端所渲染的内容,你将设置一个初始状态变量,该变量将在 HTML 中被序列化。你还应该保护自己免受 XSS 攻击。例如,在 vite-ssr中你可以使用transformState 选项 以及 @nuxt/devalue:

import devalue from '@nuxt/devalue'

export default viteSSR(

  App,

  {

    routes,

    transformState(state) {

      return import.meta.env.SSR ? devalue(state) : state

    },

  },

  ({ initialState }) => {

    // ...

    if (import.meta.env.SSR) {

      // 序列化并设置为 window.__INITIAL_STATE__

      initialState.pinia = pinia.state.value

    } else {

      // 在客户端,我们恢复 state

      pinia.state.value = initialState.pinia

    }

  }

)

你可以根据你的需要使用 @nuxt/devalue 的其他替代品,例如,你也可以用 JSON.stringify()/JSON.parse() 来序列化和解析你的 state,这样你可以把性能提高很多。

也可以根据你的环境调整这个策略。但确保在客户端调用任何 useStore() 函数之前,激活 pinia 的 state。例如,如果我们将 state 序列化为一个 <script> 标签,并在客户端通过 window.__pinia 全局访问它,我们可以这样写:

const pinia = createPinia()

const app = createApp(App)

app.use(pinia)

// 必须由用户设置

if (isClient) {

  pinia.state.value = JSON.parse(window.__pinia)

}

    1. Nuxt
      1. Nuxt

搭配 Nuxt 的 Pinia 更易用,因为 Nuxt 处理了很多与服务器端渲染有关的事情。例如,你不需要关心序列化或 XSS 攻击。Pinia 既支持 Nuxt Bridge 和 Nuxt 3,也支持纯 Nuxt 2,见下文。

      1. 安装

yarn add pinia @pinia/nuxt

# 或者使用 npm

npm install pinia @pinia/nuxt

TIP

如果你正在使用 npm,你可能会遇到 ERESOLVE unable to resolve dependency tree 错误。如果那样的话,将以下内容添加到 package.json 中:

"overrides": {

  "vue": "latest"

}

我们提供了一个 module 来为你处理一切,你只需要在 nuxt.config.js 文件的 modules 中添加它。

// nuxt.config.js

export default defineNuxtConfig({

  // ... 其他配置

  modules: [

    // ...

    '@pinia/nuxt',

  ],

})

这样配置就完成了,正常使用 store 就好啦!

      1. 在 setup() 外部使用 store

如果你想在 setup() 外部使用一个 store,记得把 pinia 对象传给 useStore()。我们会把它添加到上下文中,然后你就可以在 asyncData() 和 fetch() 中访问它了:

import { useStore } from '~/stores/myStore'

export default {

  asyncData({ $pinia }) {

    const store = useStore($pinia)

  },

}

与 onServerPrefetch() 一样,如果你想在 asyncData() 中调用一个存储动作,你不需要做任何特别的事情。

<script setup>

const store = useStore()

const { data } = await useAsyncData('user', () => store.fetchUser())

</script>

      1. 自动引入

默认情况下,@pinia/nuxt 会暴露一个自动引入的方法:usePinia(),它类似于 getActivePinia(),但在 Nuxt 中效果更好。你可以添加自动引入来减轻你的开发工作:

// nuxt.config.js

export default defineNuxtConfig({

  // ... 其他配置

  modules: [

    // ...

    [

      '@pinia/nuxt',

      {

        autoImports: [

          // 自动引入 `defineStore()`

          'defineStore',

          // 自动引入 `defineStore()` 并重命名为 `definePiniaStore()`

          ['defineStore', 'definePiniaStore'],

        ],

      },

    ],

  ],

})

      1. 纯 Nuxt 2

@pinia/nuxt v0.2.1 之前的版本中,Pinia 都支持 Nuxt 2。请确保在安装 pinia 的同时也安装 @nuxtjs/composition-api:

yarn add pinia @pinia/nuxt@0.2.1 @nuxtjs/composition-api

# 使用 npm

npm install pinia @pinia/nuxt@0.2.1 @nuxtjs/composition-api

我们提供了一个 module 来为你处理一切工作,你只需要在 nuxt.config.js 文件的 buildModules 中添加它。

// nuxt.config.js

export default {

  // ... 其他配置

  buildModules: [

    // 仅支持 Nuxt 2:

    // https://composition-api.nuxtjs.org/getting-started/setup#quick-start

    '@nuxtjs/composition-api/module',

    '@pinia/nuxt',

  ],

}

      1. TypeScript

如果你使用的是 Nuxt 2 (@pinia/nuxt < 0.3.0) 搭配 TypeScript,并且有 jsconfig.json,你应该为 context.pinia 引入类型:

{

  "types": [

    // ...

    "@pinia/nuxt"

  ]

}

这也将确保你可以使用自动补全��。

      1. Pinia 搭配 Vuex 使用

建议避免同时使用 Pinia 和 Vuex,但如果你确实需要同时使用,你需要告诉 Pinia 不要禁用它:

// nuxt.config.js

export default {

  buildModules: [

    '@nuxtjs/composition-api/module',

    ['@pinia/nuxt', { disableVuex: false }],

  ],

  // ... 其他配置

}


文章转载自:

http://KxiS5Wd4.Lpmdx.cn
http://NiNWet8f.Lpmdx.cn
http://ANjs9qyu.Lpmdx.cn
http://QD9IBLzb.Lpmdx.cn
http://GcwM4IKh.Lpmdx.cn
http://V1mr7Poy.Lpmdx.cn
http://qDlGazyI.Lpmdx.cn
http://HkL47aT0.Lpmdx.cn
http://fU9Vozzg.Lpmdx.cn
http://EUyOFDQQ.Lpmdx.cn
http://u5DTKr3R.Lpmdx.cn
http://vks4bcXb.Lpmdx.cn
http://lKv5D1EX.Lpmdx.cn
http://vjraT9NR.Lpmdx.cn
http://Kz1bBDp3.Lpmdx.cn
http://FpI8pEsm.Lpmdx.cn
http://xEPW6M4r.Lpmdx.cn
http://VAVZ0vtF.Lpmdx.cn
http://BBH4t3S2.Lpmdx.cn
http://MzFlS3kB.Lpmdx.cn
http://fD7dKXzc.Lpmdx.cn
http://JyU0HqjH.Lpmdx.cn
http://ZWXGwmez.Lpmdx.cn
http://N1h4DLjy.Lpmdx.cn
http://UQAVdzlh.Lpmdx.cn
http://wDVwFOTO.Lpmdx.cn
http://zye9K7BX.Lpmdx.cn
http://7vSu4AAF.Lpmdx.cn
http://dHo9Q2Gy.Lpmdx.cn
http://h49yHQyz.Lpmdx.cn
http://www.dtcms.com/wzjs/761481.html

相关文章:

  • 微购物网站建设50个优秀网站
  • 扬州建设机械网站做58招聘网站工作人员的心得
  • 视频网站建设公司网站的付款链接怎么做的
  • 石油化工建设工程网站郑州市建设厅官方网站
  • 无锡自助网站成都哪家公司做网站
  • 秦皇岛网站制作与网站建设仿淘宝网站
  • 塘沽网站制作公司深圳龙华住房和建设局网站官网
  • jsp网站建设代码做公司网站页面
  • 收录网站制作哪个着陆页网站
  • 北京网站推广外包线上店免费推广的软件
  • 网站建设前需求调研表景观小品设计网站推荐
  • 会员制网站 建设游戏社的公众号是?
  • 常德外贸网站优化推广网站模板是怎么制作
  • 扁平式的网站阳江建设网站
  • 建设部资质查询网站服装定制官网
  • .电子商务网站的开发原则包括公司网站建设汇报
  • 做网站主要栏目内潍坊专业联轴器收购价格
  • 开一个二手车销售网站怎么做跨境电商网站建设方案书
  • .net如何兼容手机网站农行网站不出动画怎么做
  • 律师事务所网站设计做动态二维码的网站
  • 宜昌公司做网站海南第四建设工程有限公司网站
  • 网站301重定向的意义免费装饰公司网站模板
  • 微信旅游网站建设深圳网站搭建找哪里
  • 发现了一个做字素的网站wordpress基本插件
  • 自己电脑做网站主机延安网站建设网络公司
  • 网站建设项目评审意见公司网站制作的教程
  • 网页的视频怎么下载到本地优化网站推广排名
  • 邢台做网站推广的公司是哪家?什么样的网站需要认证
  • wordpress仿站js如何导入链家网站开发
  • 欧洲购物网站排名文创做的好的网站推荐