Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

「同构」与前后端共用模块

  「同构」这个词最近挺火,查了下具体定义发现它还是个源自抽象代数的词(请原谅我没有系统地学过抽象代数)。在我的理解中,它的定义就是「映射」的升级版。「映射」只是针对集合,而同构是针对群、对象甚至系统。说白了就是代码的跨平台复用。
  这并不是什么新概念,好几年前「共用模板」的概念就已经有了。这个博客之所以能被搜索引擎收录就是因为有一套后端模板系统在工作,而这套模板是与前端共用的,所以前端更新的数据也会通过相同的模板实时地渲染出来。虽然当时的实现很烂,但这已经是「共用模板」的一个实践产物了。
  如果只是「共用模板」,那一点新意都没有。后来我也研究了一大堆代码共用相关的问题,比如共用表单验证就是个不错的尝试。但后端程序有时候并不是 JavaScript,如果使用别的编程语言就可能存在 表单验证规则不统一的问题 。这些都是可以解决的问题,也就是说表单验证的逻辑确实是可同构的。
  也许有,但是我觉得其他东西共用的意义就不大了。比如分页计算、简单筛选排序之类的。要么前端实现,要么后端实现,没必要两端都实现。而且就算两端都实现,实现方式可能也会造成无法同构。比如分页、筛选、排序,这些基本功能可能并不是后端直接负责处理,而是交给 SQL 服务器的。
  当然,特殊需求可以单独考虑解决方案。我只是不太赞同把这些基本数据操作也以同构方式实现,前后端程序的同构这件事能做到的大概也只有简单表单验证这一层了(只是简单表单验证而已,不包含入库安全验证)。
  要实现同构,最大的阻碍就是多编程语言开发。前端很简单,只有 JavaScript,所以没坑。坑在后端!就我现在维护的项目后端就有 PHP、Python、Java、Golang 等一堆奇怪的东西混在一起的。直接同构显然不现实,也许在最外层包一个 nodejs 可以勉强跑起来吧?但运维方面将会面临很大挑战。所以首先要把后端的编程语言统一了,无论统一成什么,只要能统一都有办法解决。至于一些历史遗留问题,真的无法实现同构就算了,过于勉强最终只会呵呵哒。
网名:
34.203.245.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^