为什么捐赠
API 资源管理器
升级指南
新增!
quasar.config 文件
转换为使用 Webpack 的 CLI
浏览器兼容性
支持 TypeScript
目录结构
命令列表
CSS 预处理器
路由
延迟加载 - 代码分割
处理资源
启动文件
预取功能
API 代理
处理 Webpack
处理 process.env
使用 Pinia 进行状态管理
使用 Vuex 进行状态管理
代码风格检查器
测试与审计
开发移动应用
Ajax 请求
向公众开放开发服务器
Quasar CLI 与 Webpack - @quasar/app-webpack
ssrContext 对象

ssrContext 对象是 SSR 上下文,所有应用程序的 Vue 组件都使用它进行渲染。

用法

警告

ssrContext 对象仅在 SSR 构建中可用,在服务器端编译时(当 process∙env∙SERVER === true)。

除其他位置外,它还作为参数提供给 启动文件Vuex 存储Vue Router 初始化函数以及 preFetch 方法

// a boot file
export default ({ ..., ssrContext }) => { /* ... */ }

// src/router/index.[js|ts]
export default ({ ..., ssrContext }) { /* ... */ }

// src/store/index.[js|ts]
export default ({ ..., ssrContext }) { /* ... */ }

// with preFetch:
preFetch ({ ..., ssrContext }) { /* ... */ }

您也可以在 Vue 组件中访问 ssrContext。下面是两个示例,一个使用组合式 API,另一个使用选项式 API


import { useSSRContext } from 'vue'

export default {
  // ...
  setup () {
    // we need to guard it and call it only on SSR server-side:
    const ssrContext = process.env.SERVER ? useSSRContext() : null
    // ...do something with it
  }
}

ssrContext 的结构

ssrContext: {
  req,        // Express.js object
  res,        // Express.js object
  $q,         // The Quasar's $q Object
  state,      // The Vuex state (ONLY if using the Vuex store)

  nonce,      // (optional to set it yourself)
              // The global "nonce" attribute to use

  onRendered, // Registers a function to be executed server-side after
              // app has been rendered with Vue. You might need this
              // to access ssrContext again after it has been fully processed.
              // Example: ssrContext.onRendered(() => { /* ... */ })

  rendered    // (optional to set it yourself)
              // Set this to a function which will be executed server-side
              // after the app has been rendered with Vue.
              // We recommend using the "onRendered" instead.
              //
              // Purpose: backward compatibility with Vue ecosystem packages
              // (like @vue/apollo-ssr)
              // Example: ssrContext.rendered = () => { /* ... */ }
}

有关“nonce”属性用途的更多信息,请访问 MDN

reqres 是 Express.js 的当前服务器客户端对象。 req 的一个用例是访问 req.url 以获取客户端请求的 URL。

提示

随意将您自己的内容注入 ssrContext,但不要修改任何私有属性(以下划线开头的属性,例如 _someProp)。