分享:ThinkPHP和Webpack前后端结合构建SEO多页应用的一个思路

举报
彭世瑜 发表于 2022/05/22 01:01:53 2022/05/22
【摘要】 有时候遇到的需求是这样的: 部分页面,如详情页,需要做SEO优化,而部分页面需要实现复杂的交互,如用户后台,可发布信息。 之前采用过一次,Nuxt.js 等前后端同构的方案。 优点就是一套js代码,...

在这里插入图片描述
有时候遇到的需求是这样的:

部分页面,如详情页,需要做SEO优化,而部分页面需要实现复杂的交互,如用户后台,可发布信息。

之前采用过一次,Nuxt.js 等前后端同构的方案。
优点就是一套js代码,就可以实现后端渲染。
使用后发现开发环境性能要求较高,经常出现启动慢,打包慢,有时候还进程自动退出

编写代码的时候发现,Vue生命周期把控不好,会出现一些奇怪的报错,不能很好的区分代码在服务端执行还是客户端执行,需要写一些判断。

上图的方案,采用了ThinkPHP作为服务端,使用他的Active Records 形式的 ORM 能够很快进行MySQL数据库的CURD开发,而且一台服务器部署多个应用也比较简单,通过PHP-FPM可以很好的管理PHP应用。当然也可以换成其他语言实现,例如:

  • Python的Flask、Django;
  • Node.js的express、Koa;
  • Java的SpringBoot;
  • PHP的Laravel等

通过Twig渲染模板,主要是Twig模板引擎比较通用,

类似的有

  • PHP 生态下的 Twig
  • Python生态下的 jinja2
  • javascript生态下的nunjucks

甚至是Vue中也有其影子

有了Webpack的加持,乘着前端工具链的快车

  • 不需要复杂交互的部分,就可以直接使用后端模板引擎做后端渲染
  • 需要做复杂交互的部分,可以使用Vue.js、React.js等前端库来处理

开发环境

使用webpack devServer处理静态文件,同时又实现了Live Server,提升开发体验
使用ThinkPHP处理HTML,通过模板引擎Twig动态渲染模板

生产环境

通过Nginx转发请求,先将请求转发给PHP处理模板引擎,获取THML文件

浏览器再去请求js、css、图片等静态资源,打包后的文件名可以增加hash值,解决浏览器对静态资源的缓存问题,通过manifest.json文件的文件映射关系,动态查找真实的文件名,实现动态替换

文件目录结构,可以参考微信小程序的方案

app/
	index/
		IndexController.php
	src/
		pages/
			index/
				index.js
				index.less
				index.html

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这样将相关文件都放置在一起,易于维护,Webpack和ThinkPHP各取所需

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/124899531

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。