新的一年, 要开始学习啦

春节过去一个月了, 才慢慢开始感觉到要进入工作和学习状态了. 人总是很容易放纵自己, 为自己找各种各样的借口. 真是应了那句话, 对自己总是过于宽容

简单梳理了一下, 按照之前工作中的经历, 我主要的兴趣还是在于简化中小项目开发的整体复杂性. 就具体技术来说, 目前关系数据库仍是主流, 并且庞大的商业数据库可能在会越来越多的领域被轻量的开源数据库替代. Mysql和PostgreSQL各具特色, 不过从一般的使用来讲, 同为关系数据库, 思路上区别不大. 但是现有的后端模式可以进一步简化. 目前还是考虑用通用接口, 避免手工编写后端代码. PostgREST相对成熟, 但是只限于PostgreSQL, APIJson虽然刚开始, 但是基本功能也够用了. 这种方式的关键问题在于权限的控制, 不过从中小项目的实践来看, 很多并没有很严格的权限机制, 暂时先用token或session控制一下, 不处理未登录的请求. 将来希望能建立一套独立可插拔的权限系统. 比如可以在nginx中通过URL路径来控制, 只配置规则, 不牵涉代码. 一些确实需要在web层处理的逻辑可以使用像OpenResty或hi-nginx这样的平台实现(官方出了NGINX Unit). 这样的话后端基本就是规范和轻量的了, 基本没有代码和开发工作量. 前几天试着用了数据库的BLOB类型, 文件也可以保存在数据库里了. 所以主要的工作就放到了前端. 对于项目整体来说, 减少了关注点, 避免了重复的代码和不必要的格式转换.

前端方面的主要问题是不成熟, 混乱. Web标准和实现都在快速演进中. 以至于前端包含了各个时代的不同技术, 需要担负各种不同的技术债务. 最近接触老项目, 是JSP 加 Jquery那个时代的东西(叫这个时代也行, 毕竟很多地方到现在也只有这一种开发方式). 然后想加一些页面, 如果不用原有这一套, 要么用原生API, 由于好多也是新标准提供的, 要考虑兼容性; 要么用Vue, 又要按照Vue的方式去组织数据和标签. 当各种技术掺杂在一起的时候, 简直让人抓狂. 最早的组件都是JSP封装的标签, 按照JSP的格式传入数据在后端渲染, 到页面之后再用jQuery和DOM API处理, 如果中间还要用Vue管理数据更新, 就要把Vue插在中间, 否则Vue负责渲染的DOM没有生成, 其他脚本都不能绑定节点进行处理. 怎一个凌乱了得. 总体感觉前端开发并没有形成普遍认可和规范成熟的开发模式. 在思路和实现上大家都各出奇招, 然而最终留下的却是莫衷一是的一地鸡毛. 如果再考虑客户端适配各平台的Native开发, 真是会让人感到生活如此灰暗.

之前微软.NET搞的一套是打通全后端, 横跨各平台的技术, 但是仅限于微软自家产品内部. 虽然听很多人都说过好用, 但是还是觉得局限性太大. 所以去年Google的Flutter一出世就声名远播. 虽然Dart语言提高了学习门槛, 但是着眼未来, 感觉还是可以赌一把的. 毕竟在现有条件下要想实现跨平台只能借助web或者小程序, 但是和Native应用还有不小的差距. 现在理论上可以全平台通吃(目前好像只是移动平台, PC桌面好像还在开发计划中), 并且性能接近原生, 想想还是挺令人神往的. 况且Google在筹备新平台Fuchsia, 入手flutter的很大一部分理由是赌未来的Fuchsia的. 智能手机经过几年的高速扩张已经有点创新乏力, 迫切需要寻找新的增长点, 硬件厂商甚至都已经拿出了折叠屏这样的炫酷技能, Google想从头开始打造一个新平台也不难理解. 想想十年前, Android也是这样从实验室中传说中的项目迅速引爆市场的, 十年内软硬件开发人员都靠着Android大赚一笔, 未来靠着fuchsia再重演一次也不无可能.

用统一的方式写客户端是一个美好的愿望. 但是如果我们看历史和现实各方面的情况, 恐怕也只能是愿望而已, 看似一直在努力接近实现, 很多时候也感觉好像是越走越远. 远的偏的就不说了, 就说现在每天要遇见的, 就有x86和ARM两种处理器架构, 软件方面是windows和Linux两大家族(算上老前辈UNIX的各支派). 编程语言, UI界面, 浏览器, 数据库, 网络协议, 无不是混战的江湖. 身为技术人员, 有时也真是无力吐槽, 小心翼翼的的在各种坑中前行, 铺出一条差不多能走通的路, 承担着大家对信息化社会的希望.

你可能感兴趣的:(新的一年, 要开始学习啦)