架构的意义与我们的架构

浏览器能够解析html、css、js文件,也支持一些图片和媒体文件,通过插件扩展还可以支持更多的文件格式的解析。浏览器支持http协议的通信,所以web服务器也就是返回一些html、css、js和一些图片、媒体文件和一些其他文件的http服务器。

我们的服务端使用的是node,因为语言是js,所以不只限于根据请求的路径返回不同的打包出的静态文件,还可以运行时build。服务器启动的时候build一次,生成的文件放到一个目录下,之后的请求直接返回对应的静态文件。还可以支持服务端渲染,每次请求渲染html和build,考虑到性能要加上缓存。

返回数据的接口也是服务器的职责,我们并没有把之前所说静态文件、渲染和构建的服务器和这部分放在一起,而是单独出了一个api server。render server和api server分离开来以后,职责更加的清晰,易于维护,不过新人可能理解成本会相对高一些。

公司存在着很多产品线,每个项目的技术栈、代码风格都不统一,这会导致很多问题,比如代码的重复、维护的困难等,架构组很重要的一点就是统一这些混乱的代码,所以我们做了一系列的脚手架:mobile、desktop、weex、weight等,同时根据代码规范扩展了eslint、stylelint又写了projectlint。做完脚手架和全方位lint的工作后,技术栈、代码风格都得到了统一,同时业务开发的人员也就不需要深入去学习具体的技术,只需要使用我们的脚手架就可以快速开发。

统一是架构组的一个目的,还有一个目的就是效率,开发的效率、部署到上线的效率等,开发效率方面我们做了组件库、工具sdk,部署到上线的效率方面我们通过electron客户端把需要打开n个网站才能完成的工作集中到了一起,使得部署上线效率大大提高。

最开始的脚手架是只支持命令行的,因为做了构建方面的electron客户端后,我们觉得可以把一些命令也集成进来,比如build、dev、test、lint等,这能解决一些问题,比如打印的信息特别多,找不到想找的信息等。

架构的代码需要完善的单元测试,每一个流程、流程的每一个分支都要覆盖到。

性能也是架构组要关注的,我们基于 google analytics建立了性能监控平台,可能方便的定位性能痛点,然后针对性的优化。

总结

我们服务端用的node,把api server和render server做了分离,render server支持runtime的build和渲染,支持服务端渲染。为了统一各端(mobile、desktop、weex、widget)的技术栈和代码风格做了脚手架和lint工具,为了提高开发效率做了组件库和工具的sdk,提高构建上线的效率做了electron的桌面端工具,同时基于google analytics建立了性能监控平台。端还在扩展,代码还在优化、一些命令也在逐渐地迁移到桌面端工具,可以做的事情还有很多。

开发和架构关注的东西是两个维度的,开发更多的去关注产品、设计、流程、bug等方面,而架构关注的是代码复用、自动化、开发效率、代码规范、技术方案的合理性等。架构的意义除了统一技术栈和代码风格、提高开发效率和构建上线效率、优化性能等方面外,还有很多意义是需要不断探索的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,142评论 1 32
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,245评论 4 61
  • Competent Communication The Ice Breaker——CC1 亲爱的小头马~到现在...
    Ceeeeeeeee呀阅读 891评论 0 1
  • 按部就班地带小孩,时间长了,真的是时光如流水。来了客人,一下子打乱了原本的节奏,连绵不断地下雨,又觉得加倍的累。 ...
    神奇魔刀小姐姐阅读 157评论 0 0
  • 鼠迁西杵意, 目喜返无殇。 寸断肠思过, 光菲转半行。 注:平起,中华新韵
    芝初阅读 258评论 0 5