【已解决,感谢各位佬】关于web前端服务端渲染单独组件的疑惑,有没有佬能帮忙看看

背景:我现在维护着一个比较复杂的前端系统,现在的系统是用php的laravel框架写的,有一个页面是通过读取CMS服务的内容来动态展示对应的组件,总共有几十个组件,现在都是服务端使用模板引擎渲染好静态html,然后把这个页面所有组件对应的css还有js一起返回给浏览器然后展示的,js使用了vue,在客户端通过new Vue()的方式进行初始化
目标:现在想迁移到node.js,因为组件比较多,目前无法一次性的迁移所有的组件,打算逐步一个一个的迁移这几十个CMS组件,我是这样想的,能不能通过node这边的某个ssr框架(next.js/nuxt.js)来先实现我上边描述的php实现的东西,第一步是我先在node.js这边写好对应的组件,把这个组件当一个页面返回,里边有这个组件对应的js和css, 但不包含< html></html>标签的那种,我从php这边请求node服务,拿到这个组件的html,在php这边那这段html代码插入到对应的位置去,返回给浏览器,就这样把所有的组件都迁移完,然后就可以在node这边返回整个页面了,这样可行吗,有没有现成的框架可以实现这种,或者有没有佬有更好的方法来实现逐步迁移。
:sob:期待有佬可以解惑

3 个赞

这个前端问题过于高级,只能帮顶 :tieba_087:

4 个赞

哈哈哈,感谢始皇 :smiling_face:

1 个赞

这个前端问题过于高级,我也只能帮顶 :tieba_087:This frontend issue is too advanced, I can only support it :tieba_087:

1 个赞

根据描述来看,最终目的是 前后端分离 吧?

那可以简单理解为:后端提供数据、前端消费数据

所以第一步就是拆:将 PHP 渲染模板中的 data 和 html 拆分出来,得到下面三个东西:

  • 一个提供 data 的接口(后端),

  • 一个消费 data 生成 组件 的接口(中间层)

  • 一个组装 html 的接口(可以放在前端,也可以放在后端)

考虑到原有技术栈已经足够复杂了,就不建议再引入新的框架

  • 后端延用 PHP 将原本在模板引擎中获取数据的逻辑提取为 API 接口

  • 中间层渲染组件,使用 nitro 或者 express 根据请求入参 data 直接返回组件的 html + script + style 字符串

  • 组装完整 html 的逻辑先放在 PHP 里完成

等拆分完成后(实际就是等后端接口化完成后),前端再引入 SSR 框架来逐步替换上一步的中间层和组装层

如果觉得上诉流程麻烦,工期也允许,可以直接用你喜欢的前端 SSR 框架从头开始撸,不过后端数据和业务逻辑怎么来就是个问题了

如果是 Vue3 自己实现是用 renderToString 吧

vue3-sfc-loader 不知道能不能满足需求

可行, createRoot – React 中文文档

感谢佬,这里我可能没讲明白,这个系统实际上算是个前后端分类的项目,php只是用来输出前端资源的,实际不会直接和数据库产生交互,在这中间还有一层java,我刚才看了下,楼下有一个回答可能比较接近我想要的效果,再次感谢佬 :handshake:

哈哈,感谢佬,我大概看了下,你这个应该可以解决我的问题,谢谢佬 :handshake:

这个是客户端的,不太符合我的需求,楼上给了一个可行的Vue这边的API,我去试试,谢谢佬 :handshake:

这个前端问题过于高级,我也只能帮顶 :tieba_087:This frontend issue is too advanced, I can only support it

请求到 node 还是到 php,如果是 php 直接在 php 端模板渲染一下就行。如果是 node ,直接在 node 做页面和组件的组装

这个是服务端

哈哈,周末我也想到这了,反过来做也是一样的,直接在node这边开新页面,没迁移完的直接用php这边的就行了,就是需要在php这边支持下单组件返回 :rofl:

呀 多谢佬,看来我得回去好好看下vue和react的文档了 :+1: