何谓技术体系

技术体系指社会中各种技术之间相互作用、相互联系、按一定目的、一定结构方式组成的技术整体。技术体系是科技生产力的一种具体形式。

前端技术体系的范围和作用

随着科技的发展,终端种类越来越丰富,前端行业也在迅猛发展,目前前端早已成为连接用户终端、视觉体验、服务端的重要一环,相比十年前前端的边界和范围也更广泛甚至模糊,一名优秀的前端工程师不仅需要精通自己的专业领域,还需要了解设备终端的特点、OS、运行环境,同时还需要具备良好的审美和对用户体验的感觉,此外还需要了解服务部署、服务运维的知识。

前端的知识领域也从最初的单点扩展到了现在的网状结构,开发方式也从最初的页面级开发到了现在的工程级的开发协作方式。技术体系归根结底是要围绕业务发展、团队规模和团队特点量身打造的,主要目的是为了提升团队整体的研发效率,确保线上的质量和稳定性。

结合前端研发的特点,一个完备的技术体系应当包括流程规范(涵盖开发、构建、部署、运行的各个阶段)、技术工具栈(技术选型和基础工具设施)、构建工具栈、自动化测试、部署流程和部署平台、监控体系(错误监控、性能监控、业务监控、服务监控)。

酒旅前端团队的技术体系

以上是酒旅前端团队的技术体系结构图,我们有两种共存的项目类型(静态化项目和服务端项目),不同类型的项目技术工具栈和部署平台略有不同,静态化项目是通过CDN进行承载,前端使用轻量级的MVVM框架Vue进行功能开发,同时借助移动端样式组件库提升开发效率,通过离线包机制和KNB (Native Bridge)增强页面在容器内的表达能力,最后通过AWP(自建的静态化发布系统)可以高效的进行上线部署。服务端项目不同的是使用NodeServer进行承载,前端通过AngularJS/VueJS进行功能开发,同时配合NGUI(AngularJS样式组件库)快速进行页面搭建,Node端框架选用的是Express,服务的部署通过OPS(内部的运维发布系统)完成。静态化项目和服务端项目有各自不同的适用场景,静态化开发模式适合轻量型的项目,比如移动端H5就是一个典型的例子,服务端开发模式适合稍大型的独立项目,这种模式开发可以一定程度上降低纯前端开发的复杂度,而且可以进行服务端渲染,也非常适合对SEO非常敏感的项目。

人机识别服务是我们在前端角度设计和开发的一套安全机制,它包含前端SDK和基于Node实现的验证服务,可以用于接口的防抓取、防止接口被第三方非法调用等场景。目前线上接入的业务平均拦截率在30%左右,接口TOP90的响应时间在9ms以内,由此可见,Node的应用很大程度上扩展了前端研发的能力范围,使得前端的业务解决方案有了更多的可能性。

构建工具栈中我们通过Yeoman开发了团队的脚手架,开发者可以通过脚手架快速的进行项目搭建和组件开发,通过Gulp和Webpack进行项目的构建和打包,NPM作为团队统一的包管理工具,Sass作为CSS的预编译工具提升CSS代码的可维护性,Babel作为ES6的编译工具,这样我们代码里可以用到ES6的一些新特性和语法糖,ESLint作为团队的代码检查工具保证代码的规范一致,并且接入了Sonar。同时借助一些开源的自动化测试工具提升开发阶段的代码质量。

监控体系中Sentry用于线上错误信息的收集和监控,Perf平台用于Web端性能数据的收集,灵犀用于业务的统计和埋点,Falcon一方面用于Server的监控报警,一方面用于业务监控和报警(比如火车票的抢票失败率和接口调用情况),PM25是我们自建的一套针对NodeServer进程粒度的开源的监控报警系统,用于确保线上Node服务的稳定性,它可以针对进程级别进行监控和远程操作,当现场出现异常时可以第一时间进行现场信息的收集和保留,同时通过日志平台实时上报服务端的日志用于后续进行数据分析和追查问题。

当前技术体系下的效果

技术体系的基本架构原则

  • 围绕业务发展
  • 结合团队规模和特点
  • 自动化、组件化、标准化
  • 聚焦效率、体验和质量
  • 如无必要,勿增实体

团队技术选型的一些思考

为什么选用Node作为前后端中间层,以及它所发挥的作用

  • 作为很薄的中间层,前端能够独立部署独立发布,同时降低大型项目的纯前端开发复杂度
  • 全栈开发拓展前端的能力范围,能够更好地支撑业务,同时也能让工程师得到能力提升

为什么移动端采用强混合的开发方式

  • 新业务层出不穷,需要快速迭代上线并验证业务模式,H5开发有天然的优势
  • 采用强混合的开发方式可以兼顾开发效率和体验,使得H5页面在客户端接近原生的体验

移动端为什么选用Vue而非React

  • 非常轻量的一款MVVM框架,生态健全、高性能、高可控性和优秀的组件化机制
  • 便于技术栈统一,Vue2.0已经支持SSR,PC端和移动端可以采用相同的技术选型
  • 阿里开源的Weex基于Vue(Vue-Native),是一种全新的Hybrid开发途径,会持续关注
  • 天然适合移动端场景,虽然不支持IE8,但兼容性要求较高的PC端项目较少
  • 移动端基于Vue和AWP的纯静态化开发方案可以应用离线包等离线化方案提升加载速度
  • 尤雨溪目前全职开发,更新及时(前不久刚发布了2.0版本,已经支持服务端渲染)
  • React虽有专业团队维护,但Licence有潜在的商业风险,并且较Vue而言体积庞大

自动化、组件化、标准化

我们团队目前近80人的规模,通过自动化、组件化和标准化的方式能够解放生产力,让工程师和开发者聚焦在业务逻辑、技术创新上。目前团队内各项核心指标的监控和推送都会集成内部的IM系统,可以通过自动化工具进行故障通报、个人和项目方面能够对时间投入进行追踪和分析,重复工作可以通过脚手架进行一键傻瓜式操作,组件化方面沉淀了移动和PC的样式组件库、组件平台,标准化主要体现在整个团队的技术栈高度统一,从而更能够在技术上有深耕和积累、并且抹平了项目间人员流动的成本。

过去未去,未来已来。前端没有终点,当你以为是终点的时候,其实是还未看到新的起跑线。前端行业的发展太过迅速,因此作为一名优秀的前端工程师,我们必须使用动态的思维去搭建、优化我们的技术体系,更好的服务于业务、支撑业务的快速发展。

作者简介

郭凯,美团点评酒旅事业群前端团队负责人,高级技术专家,资深互联网人,全栈工程师,工作狂,崇尚工匠精神,曾就职于音悦台、淘宝旅行。翻译作品有《编写可维护的JavaScript》、《第三方JavaScript编程》,有In、Juicer、jSQL、F2E.im、PM25等开源项目,业余时间负责开源前端技术社区F2E的开发和维护。

转载于:https://www.cnblogs.com/chris-oil/p/6170511.html

[转] 美团点评酒旅前端的技术体系相关推荐

  1. 美团点评酒旅数据仓库建设实践

    在美团点评酒旅事业群内,业务由传统的团购形式转向预订.直连等更加丰富的产品形式,业务系统也在迅速的迭代变化,这些都对数据仓库的扩展性.稳定性.易用性提出了更高要求.对此,我们采取了分层次.分主题的方式 ...

  2. 大圣魔方——美团点评酒旅BI报表工具平台开发实践

    当前的互联网数据仓库系统里,数据中心往往存放了大量Cube化或者半Cube化的数据.如果需要将这些数据的内在关系体现出来,需要写大量的程序和SQL来发现数据之间的内在规律,往往会造成用户做非常多的重复 ...

  3. (JSP程序设计)SSH、SSM、前端开发技术体系

    一.SSH SSH就是 struts+spring+hibernate 的一个集成框架,是java中一种流行的JAVA WEB 应用程序开源框架. Struts 是一个很好的MVC框架,主要技术是Se ...

  4. SSM,SSH,前端开发技术体系

    1.什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录.如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄 ...

  5. 美团点评前端技术体系的思考与实践》知乎 live 文字稿

    为什么要讲这个题目 前端圈是一个被技术圈的人称为娱乐圈的领域,很多做后端的.算法什么的,会经常来调侃前端圈,知乎上甚至有个问题问「前端架构是什么,前端有架构可谈吗?」,甚至前端圈自己也有很多人在自嘲. ...

  6. 前端技术体系与发展计划

    为什么会想起来整理这么一套东西 最近和很多已经工作了的同学聊天,发现大家都遇到了很多的问题或者说是烦恼.整理了一下,大体可以分为两个大的种类: 关于前端技术体系的问题 关于技术能力发展的问题 从这些问 ...

  7. 美团点评金融平台Web前端技术体系

    背景 随着美团点评金融业务的高速发展,前端研发数量从 2015 年的 1 个人,扩张到了现在横跨北上两地 8 个事业部的将近 150 人.业务新,团队新,前端领域框架技术又层出不穷,各个业务的研发团队 ...

  8. 转载《美团点评金融平台Web前端技术体系》

    复制代码 作者:禹霖 原文地址: tech.meituan.com/2018/03/16/- 背景 随着美团点评金融业务的高速发展,前端研发数量从 2015 年的 1 个人,扩张到了现在横跨北上两地 ...

  9. 解密国内BAT等大厂前端技术体系-美团点评之上篇(长文建议收藏)

    引言 进入2019年,大前端技术生态似乎进入到了一个相对稳定的环境,React在2013年发布至今已经6年时间了,Vue 1.0在2015年发布,至今也有4年时间了. 整个业界在前端框架不断迭代中,也 ...

最新文章

  1. python二叉搜索树建立_700. 二叉搜索树的搜索(Python)
  2. vscode php调试插件,构建VSCode开发调试环境(强大且实用的插件推荐)
  3. android double精度_Android车辆运动轨迹平滑移动(高仿滴滴打车)最佳实践
  4. c++层次遍历_动画:二叉树遍历的多种姿势
  5. DIY一个基于树莓派和Python的无人机视觉跟踪系统
  6. Python高级语法-详解set机制
  7. 阿里帝国到底有多庞大
  8. 【转】ABP源码分析三十三:ABP.Web
  9. arduino无源蜂鸣器歌曲编码_Arduino加无源蜂鸣器,播放音乐《葫芦娃》
  10. 【转】C#3.0入门系列(九)-之GroupBy操作
  11. Candies-POJ 3159
  12. 视频会议平台Zoom市值近1200亿美元,投资人李嘉诚赚翻了
  13. python中的列表和元组_浅析Python中的列表和元组
  14. 40种javascript设计模式总结及实例代码演示
  15. 赛马问题(30匹马,5个跑道,比赛多少次可以分出前三名)
  16. 计算机课程成绩认定管理办法,全日制普通本科生课程学分成绩对接认定管理办法...
  17. 简要介绍DES、RSA MD5 sha1 四种加密算法的优缺点
  18. assigning the result of this type assertion to a variable could eliminate the followin assertion解决
  19. mysql 有等待事件,排查性能详情中活动会话正在 SYNCH 等待事件状态下等待的问题...
  20. okcc呼叫中心系统防封号系统的工作原理

热门文章

  1. No qualifying bean of type ‘java.lang.String‘ available expected
  2. 微服务架构深度解析:你知道微服务的主要特性有哪些吗?
  3. (Habitat) A Platform for Embodied AI Research --Facebook开源室内导航仿真平台 的简介和安装
  4. Unity 基础 - 预设
  5. php mysql js弹出登陆小窗口_基于Jquery+div+css实现弹出登录窗口(代码超简单)_jquery...
  6. 企业如何做好培训直播
  7. tomcat部署vue項目
  8. node安装报错及解决方法
  9. PlantSimulation中Byref的应用
  10. JAVA内部类、外部类