前段时间写了不少react,有些复杂的任务很快搞定。而有些简单的任务却很伤脑筋。
现在想想,大约是陷入了想用一种工具搞定所有事情的误区了。
我入手web开发的时候,是在做Android开发,前后端分离这种事,是理所当然的。直到看到有人讨论前后端分离这个事,才意识到以前web的传统开发前后端是不分离的。
写函数模块习惯了的,自然就接受了react这种高度组件化的方式。直到看到有人吐槽react碎片化,才意识到其实传统开发不是这样的。
前后端分离的优点就不多说了。接口分离:好测试。静态动态分离:好优化。
说说我现在困惑的问题,比如一个注册登陆,我要写的代码不比核心功能少多少。
前后端要写的都一大堆。然而很少看到有人吐槽这样的问题,这是为什么呢?想来大概是对于大型网站,登陆功能改动很少,一次搞定以后就很少要改了。对于小型网站,登陆功能是可以复用的。
整个是传统的前后端不分离的好处,登陆页面一个php页面搞定了。以后复制以下就能用了。传统的以页面为编辑单位而不是组件为编辑单位还有好处,多个内容就在一个页面里,而不是散落到不同的文件里。编辑起来要到处找。
从逻辑上来说,不同的功能分成细小独立模块是好的。从实用上来说,太多碎片模块却增加了很多整合的工作量。
怎么平衡这件事?
想到近年来用的很多的工具:包管理。
过去写个程序,全都打包到exe里,最简单。然而却有可能很臃肿,然后有了dll。但是没有dll管理,要到处找dll下载。node系统是用包管理的,自己的代码是代码。别人的代码是名字。包管理把它们整合起来。
所以理想的模式是,有个功能模块,比如说登陆。它分成前端代码,后端代码。一个文件描述它的前端部分和后端部分。用的时候再整合起来。
也可以直接做成node module,使用起来大约时这样:
后端express代码:
var login=require('login/server')
app.use('/entry',login)
后端react代码:
var Login=require('login/client')
return <Login url="/entry"/>