HolyZheng / holyZheng-blog

草稿
36 stars 0 forks source link

前端演变的理解 #1

Open HolyZheng opened 6 years ago

HolyZheng commented 6 years ago

作者:holyZheng 转载请注明出处

什么是前端

web应用是一种运行在浏览器中的软件,这些软件的图形用户界面(Graphical User Interface, 即GUI)称为前端。(前端是一种GUI应用)

前后端不分离时代 web1.0

早期,前后端开发是一体的,网站开发采用后端为主的mvc模式,前端相当于后端的view层。前端的主要工作是编写页面模板,后端代码根据浏览器请求,读取模板,替换变量,生成静态页面,发送给浏览器。

Ajax技术诞生 web2.0

AJAX不是JavaScript的规范,Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求。

2005年 Ajax 正式提出,前后端分工逐渐清晰,前后端协作的关键是Ajax接口。前端不再是后端的模板,前后端分离,网页也从静态网页转为动态网页。前端开始逐渐复杂。

前端mv*

为了降低前端开发的复杂度,出现了大量前端MV*框架比如Backbone,KnockoutJS、AngularJS 等等,对代码进行合理的分层,如models,controllers,view,viewmodel等,让代码各施其职。

前端工程化

随着前后端分工的清晰,前端工作的复杂度的增高,开始出现了前端工程化的概念,前端工程化分为几个阶段

  1. 技术选型
  2. 构建优化
  3. js/css模块化
  4. 组件化开发与资源管理

    构建优化

    比如grunt,gulp,对网站资源进行优化如代码压缩,校验,资源合并,对简化前端开发中很多复杂重复的工作,提高开发效率,和执行运行性能。

    模块化

    js的模块化方案很多,如AMD/CommonJS/ES6 Module等 css的模块化主要是靠less,sass,stylus等预处理器的import/mixin来支持实现 模块化打包工具webpack,parcel,browserify等等

    模块化的主要思想在于分而治之,是复杂系统开发和维护的基石。将一个复杂的应用,分成多个更小的部分进行开发与维护,最后再由每一个模块相互作用构成我们的整个应用。

    组件化和资源管理

    组件化也是对分治思想的一种实践,前端作为一种GUI软件,在大型应用中还需要对ui进行组件化开发

  5. 页面上每个独立的可视/可交互区域为一个组件
  6. 组件间可以自由组合,替换
  7. 页面为组件的容器

    静态资源管理

    目前大多数的前端应用都是远程部署,运行时增量下载的GUI软件 由“增量”原则引申出的前端优化技巧几乎成为了性能优化的核心,有加载相关的按需加载、延迟加载、预加载、请求合并等策略;有缓存相关的浏览器缓存利用,缓存更新、缓存共享、非覆盖式发布等方案等等 有关前端工程化更详细的了解可到 前端工程 了解

    大前端

    随着nodejs的出现,JavaScript的覆盖范围扩大,大前端的概念也开始出现。大前端的原始定义可以定义为前端技术的扩大化。再后来react native的出现,JavaScript的覆盖范围再一次扩大,拥有了开发跨平台app的能力,大前端的概念进一步加深。 前端的工作不再局限于“前端”,必要时时兼顾后端和移动端开发。

    总结

    所以我认为现在的前端应该具备的技术有:

    • html,css,JavaScript过硬的基础。
    • 了解模块化,工程化
    • 深入学习一门JavaScript框架
    • gulp等自动化构建工具
    • webpack等模块化资源打包工具
    • scss,es6等提高生成效率的工具
    • 一门后端语言
    • 有能力的话学习如react native等跨平台技术
HolyZheng commented 3 years ago

联系方式:zhenghaoli1996@gmail.com 出生年份:1996 学历:本科(华南师范大学) 目前任职于网易邮件事业部,担任前端开发工程师。主要复杂webmail邮箱相关模块维护和业务活动开发。

工作经历 一、2019年7月-今 ,网易邮件事业部

  1. cma

    • 接手后,快速熟悉。
    • 添加兼容ie8的react模版,节省了活动的技术选项与兼容低级浏览器的工作时间
    • 紧跟cra v4的脚步添加引入全新JSX转换和react-hot-loader(代办)支持
  2. 邮箱会员业务开发(问题,解决方法?)

    • 技术架构较为复杂,快速熟悉代码与业务架构
    • 开展了xx、xx等活动开发(详情)
    • 将支付流程封装为umd包(代办)
  3. 积极配合esm化(问题,解决方法?)

  4. 技术分享活动

    • 组内推广React Hooks,展开React Hooks相关的技术分享组内会议。
      • 介绍React Hooks的优劣&缘由&原理。
      • 汇总业务相关工具函数与流程,封装为Hooks工具库,提供给组内使用(代办)