2000年左右编程的时候可不是这样,从来没有前后端分离这回事。如果你自己不能扛起一个项目,不仅是会被淘汰,而且会被嘲笑。我最开始用 Perl 写 CGI 程序,后来陆续学了 JavaScritp、Java、C#、Python、Objective C、Go 等,早期的项目或产品基本上都是从前做到后,除了设计之外,从切图、前端页面到业务逻辑、持久化、连接池、异常、缓存、日志、集群等等,基本上都要自己参与编程或独立实现,在那个年代,你很难以专业细分的方式运作项目,因为根本找不到那么多程序员。

现在的情况完全不一样了,互联网的高速发展需要技术上更为专业、更为精深的编程人员,所以前后端技术体系的分离,就成了大势所趋,形成了一种「反模式」。

早期开发更多是把前端当做一个展示层,大部分业务逻辑都放在服务端实现。前端很轻,因为前端很弱,没有 AJAX 技术,没有 JQuery,没有框架,浏览器引擎和规范都不完善。可谓「通讯基本靠喊,下雨基本靠伞」,最多弄个 XML 数据岛进行页面渲染,没什么重型武器。

随着前端技术的突飞猛进,前端终于从轻量级的小姑娘,变成了矫健的女侠客,依然妩媚多姿,但是前端开始承担更多更重要的职责和角色。这里的「反模式」并不是一种贬义,而是指前端的强大,导致一部分业务逻辑从服务器端转移到了前端去做,后来逐步形成了前后端分离的开发方式,前端负责界面上的大部分业务逻辑,然后通过 Rest 服务与后端进行交互。

原来业务系统看重的事务问题,要么一次 Rest 算一个事务,要么做成幂等服务,要么通过事务补偿的方式实现,要么交给异步消息队列处理,这样就形成了一套更为轻量级的开发模式。现在大部分互联网公司里已经看不到 Java 和 HTML、JS 混在一起的 JSP 文件,也看不到 PHP 和 CSS 混在一起的 PHP 文件,前端程序员们更多的是和 HTML、CSS、JavaScript、JSON 以及满浏览器的 Dom 元素打交道。

不止于此。

前端技术的脚步似乎没有停歇的意思,它们有了离线存储,有了画布,可以在画布上做出精妙的动画和展示效果,有了移动端开发框架,也有了服务器端编程框架。Node.js、Meteor.js 的出现让前端程序员大大出了一口恶气,他们昂首阔步闯入了服务端开发的领地,并开始进行全栈开发。

对于这个新的闯入者, C 程序员、Java 程序员、Go 程序员们纷纷表示:兔子尾巴长不了,看你们还能火几天。说完以后就继续去嵌入式、大数据、高并发、多核编程去了。

但是前端不管不顾,依然很火。如果你问我现在最火的程序员职位是什么?我不得不告诉你,是前端,优秀的前端!前端已经取代了前几年红得发紫的移动开发者,成为程序员新贵!

放眼全球,不仅在国内的互联网行业,在国外,前端工程师一样是需求旺盛、供不应求的香饽饽。

根据 http://indeed.com 抓取的数千家网站的职位显示:目前前端的热门岗位——「HTML5」是需求增长最快的开发岗位,在所有开发职位中排名第一,MongoDB 和 iOS 紧随其后位列第二、第三。

目前,HTML5 可以说是最热门的前端岗位了,在 2010 年和 2014 年底有两次爆发性增长,现在在美国的岗位需求甚至超过了 iOS。

但是,市场上优秀的前端工程师却相对较少,全世界范围看都是个难题。

原因一:前端相对来说是一个新领域,当今的 Web 需要更多的工程师

可能很多人认为前端开发和 Web 开发类似,而 Web 开发已经有 20 多年的历史,所以前端并不是一个新领域。然而,前端工程师的概念中的「接口技术实现和用户体验作为一个专业的工作领域」,却无疑是很新的。大概几年前,前端开发的技术增长迅猛,如下图所示:

过去几年前端工程师的可视化增长趋势 by Google Trends

这几年,或更久以前,Web 的可视化设计和技术实现所需要的资源是平均分配的。随着网站的发展—网站不仅是一个登录页面,工程资源的需求越来越明显。人们开始专门学习网站专用的 JavaScript、后端技术、UX、数据库,甚至系统设计。

今天,一个像 Airbnb、Facebook、Quora 的 Web 应用程序,投入的工程资源比设计资源多得多。换句话说,如今,做出网页的视觉设计比技术实现要更快,所以当今的市场需要更多的工程师。

现在,一位合格的前端工程师,必须对视觉设计有兴趣。

很显然,要处理大量的 Web 应用程序需求,技术任务就要进行分类,以便于多人同时处理网站请求。事实上现在已经不可能一个人快速地解决所有的技术细节了。

现在还有一类人是独自处理一个 Web 应用程序的所有问题,即「全栈工程师」,但是优秀的全栈工程师同样如大熊猫一般数量稀少。

现在,一个创业公司想要成功,几乎要覆盖一个 Web 应用程序的诸多技术方面:前端、后台、DBA、运营等。虽然已经有一些服务可以让企业购买登陆页面的前端模块和组件;但是如果你想要创造一些真正的 Web 应用程序,除了求助前端工程师,别无他法,就像你要创立一个品牌你也绕不开请一位设计师一样。

在前端领域混了这几年,总结了一套前端学习的精讲视频和学习路线,如果有对前端开发感兴趣的伙伴,不管你是想转行,或是大学生,还有工作中想提升自己能力的web前端党,欢迎大家的加入我的前端开发交流群:603985993
希望大家诚心交流!,与企业需求同步。好友都在里面学习交流,每天都会有大牛定时讲解前端技术!也可以关注我的微信公众号:【前端留学生】
每天更新最新技术文章干货。
原因二:对前端,普遍存在巨大的误解,其实前端一点也不简单

大多人都认为前端开发是一个「相对于其他模块来说更简单的领域」,在他们心中的前端工程师是这样工作的:

1、把 Photoshop 文件、图片或者线框放进一个网页;
2、偶尔设计 Photoshop 文件、图片或者线框;
3、用 Javascript 编程,为网页制作动画、过渡效果;
4、用 HTML 和 CSS 编程,确定网页的内容和布局。

事实上,前端工程师在做的是:

1、在设计师和工程师之间实现可视化的语言;
2、用可视化的设计,定义一组代表内容、品牌和功能的组件;
3、为 Web 应用程序的会话、框架、需求、可视化的语言和规格设定底线;
4、定义 Web 应用程序的设备、浏览器、屏幕、动画的范围;
5、开发一个质量保证指南来确保品牌忠诚度、代码质量、产品标准;
6、为 Web 应用程序设定适当的行距、字体、标题、图标、填充等等;
7、为 Web 应用程序设定多种分辨率的图像,设备为主的实体模型,同时维护设计指南;
8、标记 Web 应用程序,使之语义化,SEO 友好;
9、用一种友好的,耗电少的,设备和客户端感知的方式连接 API,获取信息;
10、开发客户端代码来显示流畅的动画、过渡、延迟加载、交互、应用工作流程,大多数时间用来考虑渐进增强和向后兼容的标准;
11、保证后台连接安全,采取跨域资源共享 (CORS) 的程序考虑,防止跨站点脚本 (XSS) 和跨站请求伪造 (CSRF) ;
12、最重要的是,尽管有严格的期限、利益相关者的要求,以及设备的限制,无论现在还是将来永远是「客户第一」。

为了实现上述目标,前端工程师采用了从可视化到编程的多种工具 ,甚至有时要照顾市场、 UX 到内容改进等等。

如果你依然在编程的世界里迷茫,不知道自己的未来规划,可以加web前端学习秋秋裙767,web前端中间的数字是273,web前端最后是102 。7年全栈工程师,根据这些年从事开发经验,整理了一份最适合2019年学习的web前端干货,web前端的大型互联网技术教学视频,不停更新最新的教程和学习方法,每天分享学习经验。无论是零基础,还是进阶都欢迎。这里是前端学习者的集中地

原因三:大量糟糕前端工程师的存在,扰乱了市场

这或许是难以招到优秀前端工程师最明显的原因。由于前端工程师的入门门槛非常低, JavaScript、CSS、HTML 并不是很难入门掌握的语言,似乎只要花一点时间,谁都可以通过网上教程和书本学会它。对的,前端工程师市场就是被这些浅尝辄止的家伙搞坏的。

糟糕的前端工程师是这样做事的:

1、滥用 JavaScript 库,因为他们实际上并不了 JavaScript 的核心(e.g. 一切都用 jQuery);
2、滥用 JavaScript 插件,无节制的复用别人的代码,哪怕自己根本读不懂;
3、不看需求、设计,也不做比较或评价,就给 Web 应用程序添加 CSS 框架,却只用到框架的一小部分;
4、认为只要用了 CSS 框架,网站就是响应式的,或是对响应式设计的意义理解不到位;
5、一边在说着「响应式 Web 设计」,却对服务器端解决方案技术一无所知;
6、用 CSS 编程时不做预处理器、命名规范等;
7、忽视性能、内存泄露(并不理解内存泄露的真正含义),不会检测代码;
8、不会用指标衡量一个产品,或者这种指标旨在自己的电脑、浏览器、设备有效;
9、忽视 30 年来的软件工程技术,闭门造车。

要知道,入门容易精通难,计算机和软件的基础对你用 JavaScript 或浏览器编程都非常重要。Web 可能是最有影响力的平台和环境之一,在那里执行的程序必须被小心对待。一位优秀的前端工程师不仅要考虑 Web 技术和语言,并且还要了解所有不同的组件、系统和概念。

以下是优秀的前端工程师在即时面对普通的任务也会做的事情(这才是市场急需的前端):

1、DNS 解析,使用 CDN,把资源请求分散到多个域名上去;
2、理解 HTTP Headers (Expires、Cache-Control、If-Modified-Since)
3、Steve Souders 的所有高性能网页优化规则(参考:High Performance Websites 一书)
4、如何解决 PageSpeed、YSlow、Chrome Dev Tools Audit、Chrome Dev Tools Timeline 等工具列出的所有问题;
5、何时把任务传到服务器,何时适合传到客户端;
6、缓存,预取和延迟加载技术的使用;
7、原生 JavaScript,知道何时从头开始做,何时参考别人的代码,同时可以评估这样做的优缺点;
8、 最新的 MVC Javascript 库知识以及用法;
9、CSS 标准的知识与用法;
10、JavaScript的计算机科学部分的知识(内存管理,垃圾收集算法等等等等)

换句话说,如果说掌握(或者某些简历里自称的精通) HTML+CSS+JavaScript,了解后端知识,只是 60 分的合格前端;那么要想成为受追捧、拿高薪的 80 分优秀前端,要对业务需求和、架构设计有真正的运用;而 100 分的顶级前端,则必须要能够兼顾技术和设计,更接近「以前端开发为主的全栈工程师」了。

现在,前端工程师终于前所未有的在 Web 中占有了一席之地。随着多设备、浏览器和 Web 标准的演变革命,前端正在成为兼顾逻辑、性能、交互、体验的综合性岗位。

虽然现在互联网行业普遍缺少前端工程师,但是我们相信越来越多的人将会加入前端的大军。不仅是因为大多数前端工作提供的优渥薪水和办公环境,也是因为 Web 中的前端编程变得越来越有挑战和意义。

2021了,前端,移动开发,后端,我该选哪个?相关推荐

  1. LayBox官斗精品手游《勇者名录》完整源码下载 前端laybox typeScipt脚本开发 后端php开发

    LayBox官斗精品手游<勇者名录>完整源码下载 前端laybox typeScipt脚本开发 后端php开发 数据库mysql redies等 含有详细说明文档. 勇者名录是一款三国题材 ...

  2. java后台转前端_从后端开发转职前端开发,我都经历了些什么?

    原标题:从后端开发转职前端开发,我都经历了些什么? 从前端转行后端 从后端开发转职到前端开发真的不容易. 特别是当你已经习惯了后端开发的工作模式,习惯了构建数据结构,编写类似于测试驱动开发的测试,习惯 ...

  3. 2021 大前端技术回顾及未来展望

    作者:腾讯 IMWeb 前端团队 2021 年大前端领域没有出现革命性的明星项目,但在各个细分的技术领域都有一定的拓展与深耕,有很多新技术或者新特性有望在 2022 年迎来爆发.在互联网 " ...

  4. 2021届前端面试知识点(其他)

    2021届前端面试知识点(其他) 1. 什么是"前端工程化"? 2. xss跨站脚本攻击原理?如何进行?防御手段? 3. CSRF跨站请求伪造原理?如何进行?防御手段? 4. Sq ...

  5. 喵喵电影-前端页面开发

    喵喵电影-前端页面开发 一.项目预览 二.开发前准备 1.配置node环境:npm cnpm 2.安装Vue脚手架:vue-cli 3.创建项目 miaomiao 三.实战开发 1.改造项目文件创建框 ...

  6. 第4章 初识HbuilderX之移动前端App开发

    本人学习vue的根本目标是为了让手机移动端的(前端)App通过跨域(Cors)操作和与后端的已经部署在IIS中的.Net(Core)6程序进行数据交互操作,并通过交互操作获取数据后在让手机移动端的(前 ...

  7. 2021年基于VUE开发的一套移动端APP小说 听书AI男女多种 支持云端存储书籍记录

    2021年基于VUE开发的一套移动端APP小说 前端架构主要采用: "axios": "^0.21.1", "better-scroll": ...

  8. 2021年低代码开发会成为主流软件开发模式吗?

    自1804年穿孔卡片可编程式提花织机问世,编程语言已经存在200多年.人类社会奔涌向前,技术潮起潮落,创业者能够压着一点时代韵脚的便足以名噪一时. 2021年的春天还没有到来以前,低代码开发平台早早迎 ...

  9. 跟我学Springboot开发后端管理系统9:AOP+logback+MDC日志输出

    MDC介绍 在比较复杂的应用中,一个请求需要走很多个方法的处理,怎么样才能快速查找一个请求的全部日志呢.在分布式系统中,我们可以用链路追踪,比如zipkin.skywalking去快速查找日志,从而定 ...

  10. 跟我学Springboot开发后端管理系统8:Matrxi-Web权限设计实现

    上篇文章讲述了Matrix-web整体实现的权限控制的思路.现在来回顾一下: 首先,用户需要登录,填用户名.密码,后端接收到登录请求,进行用户.密码的校验,校验成功后则根据用户名生成Token,并返回 ...

最新文章

  1. java 小对话框_创建Java对话框
  2. AutoML取得最新进展 深兰科技助推复杂场景下智能化应用
  3. python格式文件大小_在Python中调整NVSS FITS格式文件的大小并对其进行操作
  4. java开发手册:线程池不允许使用 Executors 去创建
  5. JAVA常见算法题(三十一)---冒泡排序
  6. TOMCAT启动完成但是ECLIPSE仍然显示starting....
  7. 以jieba为首的主流分词工具总结
  8. 浮点数在计算机中存储方式float,double)---转
  9. MonoRail学习笔记十八:在VM中可以使用哪些系统变量
  10. jboss7 java版本_jboss-as-7.1.1.Final与jdk1.8不兼容解决方案
  11. 【总结】最短路径条数问题
  12. linux创建新用户及权限
  13. 前端培训Ajax-onreadystatechange 事件
  14. 如何下载有效的Flash离线安装包
  15. 普元EOS之我要使用多数据源
  16. Intel SGX入门
  17. 微信小程序 实用的公告栏滚动效果
  18. Mybatis学习笔记(二)
  19. 小武匠师PPT 基础篇(一)-武文杰-专题视频课程
  20. Arduino Mega2560引脚说明以及功能剖析

热门文章

  1. 【NGINX入门指北】 基础篇
  2. Android彩信数据库分析
  3. 太牛了!我把阿里、腾讯、字节跳动、美团等Android性能优化实战整合成了一个PDF文档
  4. 2017国际大数据及云计算展开幕 凡科建站云平台吸睛
  5. docker manifest 使用实战
  6. 阿里云视频直播PHP-SDK
  7. 考研数据结构之查找(9.8)——练习题之使用散列函数H(k)= 3k mod 11并采用链地址法处理冲突并构造散列表及设计散列表的完整算法(C表示)
  8. 车载信息服务软件开发包使用指南(20)
  9. java pns 向 IOS 推送消息错误记录
  10. txs0108e原理分析