yuntian001 / midway-vite-view

midway vite 服务端渲染(ssr)/客户端渲染(client)模板 支持vue3 react
MIT License
12 stars 6 forks source link

ssr时的render携带变量 #4

Closed tyouzu1 closed 1 year ago

tyouzu1 commented 1 year ago

https://github.com/yuntian001/midway-vite-view/blob/9a8eadd31d933e30690e64548e23d29fd2dd9435/src/lib/view.ts#L56-L59

这里能加个assign参数么,比如放在context里

render的时候希望能够使用变量

export const render = (url: string, _manifest: string, props) => {
  return [ReactDOMServer.renderToString(<App props={props} />)];
};
yuntian001 commented 1 year ago

https://github.com/yuntian001/midway-vite-view/blob/9a8eadd31d933e30690e64548e23d29fd2dd9435/src/lib/view.ts#L56-L59

这里能加个assign参数么,比如放在context里

render的时候希望能够使用变量

export const render = (url: string, _manifest: string, props) => {
  return [ReactDOMServer.renderToString(<App props={props} />)];
};

因为服务端渲染出错的时候需要降级为客户端渲染,客户端渲染是无法传参的,如果想给js传参 建议在html文件中声明变量 ,通过assign:{keyWords:'vite midway'},//html中{{keyWords}}的会被替换为vite midway 的方式传递给html文件 ,然后在vue中直接在window对象上获取对应属性

tyouzu1 commented 1 year ago

https://github.com/yuntian001/midway-vite-view/blob/9a8eadd31d933e30690e64548e23d29fd2dd9435/src/lib/view.ts#L56-L59

这里能加个assign参数么,比如放在context里 render的时候希望能够使用变量

export const render = (url: string, _manifest: string, props) => {
  return [ReactDOMServer.renderToString(<App props={props} />)];
};

因为服务端渲染出错的时候需要降级为客户端渲染,客户端渲染是无法传参的,如果想给js传参 建议在html文件中声明变量 ,通过assign:{keyWords:'vite midway'},//html中{{keyWords}}的会被替换为vite midway 的方式传递给html文件 ,然后在vue中直接在window对象上获取对应属性

这样会报服务端渲染失败,执行客户端渲染逻辑 ReferenceError: window is not defined,server逻辑是没window的,只有global,等于说只能走csr

yuntian001 commented 1 year ago

https://github.com/yuntian001/midway-vite-view/blob/9a8eadd31d933e30690e64548e23d29fd2dd9435/src/lib/view.ts#L56-L59

这里能加个assign参数么,比如放在context里 render的时候希望能够使用变量

export const render = (url: string, _manifest: string, props) => {
  return [ReactDOMServer.renderToString(<App props={props} />)];
};

因为服务端渲染出错的时候需要降级为客户端渲染,客户端渲染是无法传参的,如果想给js传参 建议在html文件中声明变量 ,通过assign:{keyWords:'vite midway'},//html中{{keyWords}}的会被替换为vite midway 的方式传递给html文件 ,然后在vue中直接在window对象上获取对应属性

这样会报服务端渲染失败,执行客户端渲染逻辑 ReferenceError: window is not defined,server逻辑是没window的,只有global,等于说只能走csr

不能在生命周期mounted后拿么,必须要在首次渲染后直接使用? 那还是建议走接口获取比较合适,不然无法兼顾服务端渲染和客户端渲染。

tyouzu1 commented 1 year ago

https://github.com/yuntian001/midway-vite-view/blob/9a8eadd31d933e30690e64548e23d29fd2dd9435/src/lib/view.ts#L56-L59

这里能加个assign参数么,比如放在context里 render的时候希望能够使用变量

export const render = (url: string, _manifest: string, props) => {
  return [ReactDOMServer.renderToString(<App props={props} />)];
};

因为服务端渲染出错的时候需要降级为客户端渲染,客户端渲染是无法传参的,如果想给js传参 建议在html文件中声明变量 ,通过assign:{keyWords:'vite midway'},//html中{{keyWords}}的会被替换为vite midway 的方式传递给html文件 ,然后在vue中直接在window对象上获取对应属性

这样会报服务端渲染失败,执行客户端渲染逻辑 ReferenceError: window is not defined,server逻辑是没window的,只有global,等于说只能走csr

不能在生命周期mounted后拿么,必须要在首次渲染后直接使用? 那还是建议走接口获取比较合适,不然无法兼顾服务端渲染和客户端渲染。

嗯嗯明白的,本身是打算用 jsx ssr替换ejs的,需要把变量写进去,获取完整的div片段,改成接口之类的副作用就没法像ejs一样直接获取html