聊一下前端工程化

前言

最近呢筛选了很多候选人的简历,看到很多关于前端工程化的描述:
> "个人一直致力于前端工程化..."
> "在公司前端工程化规范,自动化..方面的建设做出了巨大改革..."
...

首先我抱有的希望很大(人才嘛谁能不爱..)
然后呢经过交流探讨给我带来更多的反馈是失望。当然这个领域是`非主流前端领域`。
但是个人觉得还是很有趣味而且有必要进行学习的;所以今天笔者简单的聊一下前端工程化,希望能给大家带来帮助。

回顾一下前端发展史

笔者为了照顾到不同时间段融入前端大家庭的读者,这边对于前端研发"方式"发展进行一个简单的回顾;回顾经历过几个阶段,从而了解"工程化"提出的必要性。

  1. 前后端不分离的时代:那时候所谓的前端担任的工作更多是写页面。 然后还有就是通过一些技术(ASP,JSP...)将数据进行页面填充;涉及到这部分技术更偏向于后端,所以前端可能也不并会涉及到这部分工作。(当然也会有扯皮的时候,谁都不愿意干。。那就是看谁没话语权咯)
  2. 前后端半分离时代: 在一部分工作俩边扯来扯去的背景下,就研究着如何进行前后端分离,方便更好的实现团队之间的协作分工。出来很多技术方案 比如在node发展的背景下出现 SSR(server side render) + Node的技术方案;就是服务端将处理好的html模板直接给到前端,前端负责展示。
  3. 前后端逐步完全分离: 在各种技术的推进下慢慢出现了逐步前后端完全分离的各类架构方案例如RESTful架构;也就是双方通过协议(http/https/socket)进行调用进行通信数据传输。这样的话彼此的工作可能就不会有太多的扯皮。但是伴随还有一些问题,比如API的设计谁来定的问题,前端定义接口的话可能会更理想化(服务端那边呢有内部的一个大的技术架构服务比如跨集群这些,在这个背景下可能实现确实会比较困难 [也要帮后端兄弟说句话 哈哈.]);所以个人认为更多的是双方合理的讨论设计来进行推动。
  4. ....

什么是前端工程化?

在研发技术方案的日益更新背景下。前端已经从"page开发工程师"逐步变成了"app研发工程师";前端的工作随着业务的复杂,用户的体验提升已经不是一个简单的工作了,面临着合作问题,性能问题等等...所以在模式转变下伴随着迎来很多问题:

  1. 如何提供团队开发效率?
  2. 如何提高项目研发质量?
  3. 如何加强项目可维护性?
  4. 如何引进更多的人才?
  5. ...

为了解决出现的一系列问题就需要选取好的技术架构方案,推进前端工程化的落地。工程化大概包含几个方面呢?

  1. 整体规范化

    • 编码规范:项目结构规范;html,js,css编码规范;命名规范;接口规范等等。
    • 协同规范:文档规范;资源管理规范;视觉|交互规范等等
  2. 开发模式组件化

    • 模块组件化:公共css提取;公共js提取;公共资源提取等等
    • 技术组件化:base函数库组件化;公共page组件化等等
    • 业务型组件化:同类业务重叠功能组件化等等
  3. 工具化&自动化

    • 研发工具化:资源加载整合
    • 自动化构建研发生成环境
    • 自动化部署,单元测试
    • 持续化集成...
  4. 技术优化,性能优化,方案优化...

    • 技术优化 大前端的背景下 一定要技术革新进步 别还是冷兵器时代 Jquery一把梭; MVC MVVM的设计模式的优势相信大家都是不言而喻,那么为什么不选择进步呢。
    • 性能优化 2C的业务下这个是必然会经历的一个阶段,用户的体验越来越重要。考虑的不光是程序的实现还有用户的体验简单来说一个首屏加载的时间可能就会导致用户的流失。
    • 方案优化 这方面比如团队来说并不一定有机会推行工程化每一个细节的落地,强行推这个整体方向可能会适得其反;没有最好的只有最合适的。

工程能够解决什么?

下面通过一个简单的日常现象看一下能够帮我们解决什么问题.

首先在非工具化(webpack构建生成)的背景下很多研发人员都会遇到一个问题。每次项目部署的时候需要使用者(测试,产品,用户)去手动清理浏览器的缓存;这就是一个很头疼的问题;每次解释也挺累的。"静态资源要清下缓存..."那么如何从工程方面解决这个问题呢?



...

...

                    
                    

你可能感兴趣的:(聊一下前端工程化)