Java基础、中级、高级、架构面试资料

未来的两种软件工程师:端工程师和云工程师

HTML5 herman 5473浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

先说个有趣的事情,国内Web前端的标杆人物克军(豆瓣)和玉伯(阿里)写了个“对联”如下:前端研究,研究个屁;前端设计,设计个鸟。就算是调侃吧,但也可见业内顶尖人士对此职业在纵深上的担忧。

前端、后台和数据库是一个互联网公司必备岗位。前端开发的产品直接面向广大用户,所以个人觉得,前端开发的前景还是非常不错的。当然也鼓励大多数前端开发工程师学习一些后台和数据库知识,这样在开发过程中,能更好与团队进行协作。下面就来说说软件工程师的发展趋势。

什么是前端

前端:针对浏览器的开发,代码在浏览器运行
后端:针对服务器的开发,代码在服务器运行

前后端不分的时代

互联网发展的早期,前后端开发是一体的,前端代码是后端代码的一部分。

  • 后端收到浏览器的请求
  • 生成静态页面
  • 发送到浏览器

后端 MVC 的开发模式

那时的网站开发,采用的是后端 MVC 模式

  • Model(模型层):提供/保存数据
  • Controller(控制层):数据处理,实现业务逻辑
  • View(视图层):展示数据,提供用户界面

前端只是后端 MVC 的 V。

以 PHP 框架 Laravel 为例。
Laravel 架构图

前端工程师的角色

那时的前端工程师,实际上是模板工程师,负责编写页面模板。
后端代码读取模板,替换变量,渲染出页面。

典型的 PHP 模板

<html>
  <head><title>Car {{ $car->id }}</title></head>
  <body>
    <h1>Car {{ $car->id }}</h1>
    <ul>
      <li>Make: {{ $car->make }}</li>
      <li>Model: {{ $car->model }}</li>
      <li>Produced on: {{ $car->produced_on }}</li>
    </ul>
  </body>
</html>

Ajax 技术

Ajax 技术诞生,改变了一切。

  • 2004年:Gmail
  • 2005年:Google 地图

前端不再是后端的模板,可以独立得到各种数据。

Web 2.0 时代

Ajax 技术促成了 Web 2.0 的诞生。

  • Web 1.0:静态网页,纯内容展示
  • Web 2.0:动态网页,富交互,前端数据处理

从那时起,前端变得复杂了,对前端工程师的要求越来越高。

前端 MVC 框架

前端通过 Ajax 得到数据,因此也有了处理数据的需求。
前端代码变得也需要保存数据、处理数据、生成视图,这导致了前端 MVC 框架的诞生。

Backbone.js

2010年,Backbone.js 。Backbone 将前端代码分成两个基本部分。
Backbone.js 架构图

  • Model:管理数据
  • View:数据的展现

前端 Controller

Backbone 只有 M 和 V,没有 C。因为,前端 Controller 与后端不同。

  • 不需要,也不应该处理业务逻辑
  • 只需要处理 UI 逻辑,响应用户的一举一动

所以,前端 Controller 相对比较简单。Backbone 没有 C,只用事件来处理 UI 逻辑。

var AppView = Backbone.View.extend({
    events: {
      "keypress #new-todo":  "createOnEnter",
      "click #clear-completed": "clearCompleted",
      "click #toggle-all": "toggleAllComplete"
    },
  }

Router

前端还有一种天然的方法,可以切换视图,那就是 URL。
通过 URL 切换视图,这就是 Router(路由)的作用。以 Backbone 为例。

App.Router = Backbone.Router.extend({
  routes: {
    '': 'index',
    'show': 'show'
    },
  index: function () {
    $(document.body).append("调用了 Index 路由");
  },
  show: function () {
    $(document.body).append("调用了 Show 路由");
  },
});

MVVM 模式

另一些框架提出 MVVM 模式,用 View Model 代替 Controller。

  • Model
  • View
  • View-Model:简化的 Controller,唯一作用就是为 View 提供处理好的数据,不含其他逻辑

本质:view 绑定 view-model,视图与数据模型强耦合。数据的变化实时反映在 view 上,不需要手动处理。

前后端分离

  • Ajax -> 前端应用兴起
  • 智能手机 -> 多终端支持

这两个原因,导致前端开发方式发生根本的变化。
前端不再是后端 MVC 中的 V,而是单独的一层。

REST 接口

前后端分离以后,它们之间通过接口通信。
后端暴露出接口,前端消费后端提供的数据。
后端接口一般是 REST 形式,前后端的通信协议一般是 HTTP。

前端开发模式的根本改变

  • Node 环境下开发
  • 大量使用服务器端工具
  • 引入持续集成等软件工程的标准流程
  • 开发完成后,编译成浏览器可以运行的脚本,放上 CDN

全栈工程师

前端工程师正在转变为全栈工程师

  • 一个人负责开发前端和后端
  • 从数据库到 UI 的所有开发

全栈技能

怎样才能称为全栈工程师?

  • 传统前端技能:HTML、JavaScript、CSS
  • 一门后端语言
  • 移动端开发:iOS / Android / HTML5
  • 其他技能:数据库、HTTP 等等

软件行业的发展动力

历史演变:前后端不分 -> 前后端分离 -> 全栈工程师
动力:更加产业化、大规模地生产软件.效率更高,成本更低。通用性好、能够快速产出的技术最终会赢,单个程序员的生产力要求越来越高。

未来软件的特点

  • 联网
  • 高并发
  • 分布式
  • 跨终端

现在基于 Web 的前端技术,将演变为未来所有软件的通用的 GUI 解决方案。

未来只有两种软件工程师

  • 端工程师

    • 手机端
    • PC 端
    • TV 端
    • VR 端
    • ……
  • 云工程师

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » 未来的两种软件工程师:端工程师和云工程师