快捷搜索:

您的位置:环球彩票登陆 > 环球彩票登陆 > 为前端工程之崛起而编程!环球彩票登陆

为前端工程之崛起而编程!环球彩票登陆

发布时间:2019-12-08 03:40编辑:环球彩票登陆浏览(70)

    第二、精益求精,离不开数据结构与算法

    其实前端开发跟后端开发是相辅相成的。web前端开发工程师是负责交互设计的,需要和后端开发人员进行交互设计的配合才能完整的呈现一个项目。

    前端仿佛一直处在焦虑当中。前两年我们的主要矛盾是日益爆发的前端新技术同前端程序员学不动之间的矛盾。

    算法本身也不是高深莫测,它的目的是高效解决问题。比如之前做彩票业务,会有投注和奖金计算的需求。如果前端不擅长算法,可能就会和服务端同学说:前端算不出来,把数据提交到后端,后端再把结果返回给前端吧。殊不知,这样的做法既牺牲了用户体验,也加大了服务端的开销导致公司成本的上升。

    1.编程能力,就是用代码解决问题的能力,你编程能力越强,就能解决越复杂的问题,细分又有调试、算法、数据结构、OS原理等这些的支撑,你才能解决各种麻烦的问题。

    实在实现不了,打回换一份更简单的视觉稿。可不甘心做一个流水线工人啊,似乎都能看到年纪大了以后被裁员的结局。那这又该怎么办呢?

    当很多的事情你都能拍着胸脯说:我行,我来。那你的机遇和待遇就不远了,不信试试看?

    问:你觉得开发网站的后台难还是前台难?为什么?

    多端统一

    从我们接触编程的时候就知道一个理论,程序=数据结构 算法。所以,只要写的是程序,就离不开数据结构和算法。当然,有的同学会说,我就做一个纯静态的官网,交互都不多,根本不需要懂那么多。那试问:你在别人眼中还是程序员吗?你拿到的待遇还是程序员的待遇吗?你未来的竞争力还是程序员所具备的抗风险能力吗?

    有些人对前端开发和后端开发还存在着疑惑,其实顾名思义,前端开发就是用户看得见摸得着的东西,而后端更多的是与数据库进行交互以及处理相应的业务逻辑。其实主要区别体现在以下两个方面:知识结构与实现和工作职责。

    应急-快速回滚能力

    上述两个小场景足矣说明前端开发工程师真的需要懂数据结构和算法。

    环球彩票登陆 1

    所以在我们组,业务需求所涉及的前端变更是需要做系统分析的,后端系统分析也是要参加的,这些涉及了上述所说种种。

    当从事前端3年以后,你会发现纯业务开发已经满足不了你了。多媒体、游戏、服务端、客户端都可以作为自己的第二个出路,正所谓技多不压身。每一个方向都是深不可测,在多媒体领域要涉及大量的音视频数据,如何做帧信息的关联计算、如何快速查询 Box 等等;对于游戏来说,物理碰撞检测是最基本的算法(“等一下,我碰!”——常见的2D碰撞检测 ),服务端就不用说了,前面所说的“前端做不到”的事情服务端要有兜底的能力(五花八门的算法设计)。其实客户端和前端没有本质的区别,无非前端是调用浏览器的能力,客户端调用系统的能力,也就说客户端的能力更大,也就有更多的算法需求:比如图像处理能力,大家能看到现在各种App都有美颜、人脸识别,这些图形图像的处理是需要大量的算法的。

    总而言之,前端是需要考虑页面的结构,外观视觉表现以及交互实现;后端需要考虑的则是如何实现功能、数据的存取、平台的稳定性与性能等。

    只有前端崛起,前端工程师才能摆脱焦虑,而这不是一两个人的战斗,需要大家一起去努力实现。我个人想了三条计策。

    环球彩票登陆 2

    后端更多是考虑业务逻辑、数据库表结构设计、服务器配置、负载均衡、数据的存储、跨平台API设计等等,更多的是考虑用户看不到的部分,保证业务逻辑处理数据的严谨,保证数据吞吐的性能

    更好的体验:

    第一,只要是程序员,基本功都是数据结构与算法

    后端开发以java为例,主要用到的是包括但不限于Struts、spring、springmvc、Hibernate、Http协议、Servlet Tomcat服务器等技术。通常需要根据业务场景进行不同语言的选择,另外后端开发的重点在于算法设计、数据结构、性能优化等方面,在具体的功能实现部分可以采用Java、Python或者PHP等编程语言来实现。

    换言之,上游依托于下游。这自然而然的导致技术评估从下游开始。到前端评估时,已经是最后一道坎了。

    数据结构的意义是易于存储、快速查找,换句话说只要涉及到数据操作,理论上都需要数据结构。打个比方吧,我们在页面中会有各种请求接口:业务的、埋点的、监控的。众所周知,浏览器是有请求并发数限制 的,如果埋点、监控的的请求太频繁会阻塞掉业务的接口请求。即使只有业务接口,随着feed流的流行,业务接口也需要控制,比如我滚动一屏需要若干个数据支撑,业务接口会频繁的发出,当我快速滚动的时候,前面发出去的接口已经没有意义了,但是前面发出的接口如果没有响应,后面的发出的接口就会被pending。从前端开发的角度,如何去管理接口?如果你知道队列、栈的数据结构,自然就知道利用这两个数据结构可以进行接口管理。如果刚才的业务场景,应该选用栈的数据结构,后进先出,保证最新的接口发出去。对于埋点和监控应该用队列,先进先出,不遗漏接口。通过这样的接口管理既能满足需要也可以避免接口的阻塞。

    写在最后,欢迎大家关注我们的头条号(搜课)一个可以免费学技术的地方!

    Git

    我先说下结论:需要,非常需要。

    Web前端开发主要针对的是PC端开发任务;而Android开发、iOS开发和各种小程序开发主要针对的是移动端开发。

    蚂蚁应该是实践Node比较多的公司了。目前蚂蚁的大部分移动端业务,都有对应的体验适配层BFF层,也即大家通俗理解中的Node中间层。

    我们都知道前端开发工程师更多偏向 DOM 渲染和 DOM 交互操作,随之 Node 的推广前端工程师也可以完成服务端开发。对于服务端开发而言大家都觉得数据结构和算法是基础,非学不可。所以正在进行 Node 开发的同学而言,这个答案跃然纸上。我们今天重点说一说纯前端开发的同学到底需不要数据结构与算法。

    前端能力分为三大块:编程能力、架构能力、工程能力。

    能从现有工程中发现痛点,创造出一个系统或服务,提高效能、促进业务出成果。

    打破常规思维,让老板知道你是不可多得人才。对于很多同学来说关于算法起步排序,止于递归,只要超出这两个选项统统认为“做不到”。现在大家出行都依赖地图,对于地图一个核心需求就是能算出从起点到终点的若干路径并给出经济成本和时间成本。我们把这个问题简化下,从A点到B点的地铁有几种坐法,哪个是最快的,哪个是最短的,哪个是最便宜的?很多前端同学望而却步,“理直气壮”的告诉后端你算好通过接口传给我。凡是都靠服务端来实现,很难体现前端开发在自己岗位上的“精益求精”的探索精神。可能大家也想自己搞,苦于知识面有限,容易得出“做不到”的结论。实际上,你只要学过“动态规划”的算法,这个题目就迎刃而解,足够让你拍着胸脯说前端来就可以了。

    前端工程师主要的工作职责包括:

    我觉得,随着互联网产品越来越多,用户们必定也会不断的索取更好的用户体验,前端同学也会扮演着越来越重要的角色。责任越来越重,天花板就越来越高(诶,自己说的话,貌似也没必要加什么引用......)。

    第三、持续提升,依赖数据结构与算法

    前端主要怕设计稿的频繁变更,布局样式、交互效果的需求变更;后端主要怕业务逻辑变更,或者当使用规模增大之后的稳定性

    在蚂蚁,前端工程师往后走了一步,多了一层Node层,在整体系统工程中扩大了自身占比,还算好一些。

    我们做事情,“精益求精”是非常必要的职业心态,凡事不琢磨,事事不深究,慢慢我们的路就被堵死了。“精益求精”不是喊口号,是实实在在的砥砺前行。而要做的更好,没有深厚的基本功,没有一定的知识储备,很容易得出“运气不好”的借口,AI技术已经离我们越来越近了,低能的技术是首先要被新时代淘汰掉的。

    3)大数据呈现端开发

    接口管理与Mocker

    说实话,很多人做后台开发天生是有优越感的。因为与前端相比,后端更加接近业务本质,数据结构基本上都是后端来设计的,对公司的业务后台开发也更加了解,所以在很多人眼中或者潜意识里:后端比前端要重要。这也是很多人选择做后台开发的原因。然而事实真的如此吗?

    这时候前端又开始了新的焦虑,前端的天花板是不是太低?工资是不是没后端高?前端开发的壁垒在哪里?

    扩展资料:

    它的主要目的为:让后端更专注于领域模型,将页面数据的设计交与前端,彼此更专业高效。更通俗点说:让业务开发更快!

    理论上后台要比前台难,后台偏重的是逻辑多一些,但是做网站后台相对于前台要简单

    在这个软件系统中,前端所涉及的工程扮演着哪些角色?哪些系统影响着它?它影响着哪些系统?它们的变更都会产生什么影响?

    3)功能实现

    化被动为主动,改接受为影响,进而提高自身工程地位。典型的如小程序。小程序最初是由客户端同学去实现,最开始其实也是致力于平台生态问题。

    平台设计主要是搭建后端的支撑服务容器;接口设计主要针对于不同行业进行相应的功能接口设计,通常一个平台有多套接口;功能实现则是完成具体的业务逻辑实现。并且在一般的中小型企业,后端开发基本上都是开源的。

    开发规范

    2)移动端开发

    我刚毕业的时候,在一家创业公司做全栈,职称是Web开发工程师。当时前后端未分离,而我内心的工程,就是我手头整个前后端工程代码。当时对前端工程是没有概念的,对我而言,前端就是JS CSS HTML,它脱离了服务器就没了意义。单把这些代码拎出来,我也无法称之为工程。

    1)平台设计

    如果涉及后端变更,需要评估其变更影响,需要评估系统的依赖与发布的先后顺序。此外还需要考虑需求上线时,Node层与前端的灰度方案、监控方案、应急方案。

    后端追求的是:三高(即高并发,高可用,高性能),安全,存储,业务等等。

    当你不断的经历这些挑战,可能突然有一刻,会有种感觉:作为一名工程师,以前都只关注自己手头的前端代码,对于整个软件系统工程的思考实在太少了。

    1、语言不同

    曾经在知乎的一个问答《从事前端真的没有后端工资高?》中谈到自己对前端工程师的天花板的认识:

    前端开发涉及到的内容包括Html、CSS、Java、Android开发(采用Java或者kotlin)、iOS开发(采用OC或者Swift)、各种小程序开发技术。前端开发用到的技术包括但不限于html5、css3、java、jquery、Bootstrap、Node.js 、AngularJs等技术。

    当然这其中也有一些交集,比如三大框架的出现既为高交互页面提供了可能性,也提高了整体开发效率与质量。比如围绕高效率与高质量会统一建设一个前端迭代管理系统,负责工程迭代、构建、发布、回滚。

    web前端:代码主要在客户端(pc、手机、pad)运行;web后端的代码主要在服务端(某台机房服务器等)运行

    那我们下游还有什么存在的意义呢?现在流行的FaaS似乎就给我们提供了一个Idea、亦或者就是个契机。

    2.架构能力,则是解决代码规模的问题,当一个系统足够复杂,你会写每一块,能解决每一个问题,你能搞定整个系统,这就需要架构能力

    本文经授权转载知乎“相学长”

    知识结构与实现

    前端虽然是上游系统,但可以通过提高自身工程能力,主动地放大业务可能性。将可能性的瓶颈下抛,进而促进下游系统提高自身能力。

    整体来说网站的后台相对于前台要简单很多。

    而这一道坎,业务方往往是无论如何也得过的。如果坎比较高,最终也是通过降低交互复杂度与用户体验,来保证产品功能先上。

    2)接口设计

    能力更多:

    而前端工程师会把精力放在html5,css3,jquery,angularjs,bootstrap,reactjs,vuejs,webpack,less/sass,gulp,nodejs,java多线程,模块化,面向切面编程,设计模式,浏览器兼容性,性能优化等等。

    在这个“工程化”概念下,我所认为的“前端工程”,就是我眼前的 “前端代码”,它的最终目的是为用户输出前端页面。

    后端工程师的主要职责也集中在三大部分,分别是:

    何谓前端工程

    工作职责

    相信随着无数优秀的前端同学不断的奋斗,几年以后的前端工程师必然又是另外一番成就。

    3.工程能力,则是解决协作的问题,当系统规模更大,光靠一个人,是没办法完成的,如何保证几个高手互相能够配合好?如何保证项目里面水平最差的人不拖后腿?这个工程化建设,往往会跨越多个业务,以汇报关系上的团队为单位来做。

    环球彩票登陆 3

    搜课~搜罗天下好课!

    当时的角度主要注重产品体验上。现在入职蚂蚁1年左右,对其又产生了一些新的想法。虽然前端的能力越来越强,技术栈要求也越来越高。但从工程角度出发,前端目前还处在一个较低的阶级水平。

    所谓术业有专攻就是这个道理。前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx tomcat的方式有效的进行解耦,并且前后端分离会为大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。对于一个产品来说, 前端后端都是必不可少的;无论前端还是后端,并没有地位高低贵贱之分。

    我认为我们的主要矛盾已经发生了变化,变成了前端日益增长的工程地位诉求同前端工程局限性之间的矛盾。

    首先要搞清楚前端开发和后端开发有什么区别

    在这种情况下,说白了,很多前端只是流水线工人。视觉稿来了,实现它。

    前段主要是考虑怎样能让用户觉得用起来更舒服,考虑界面布局、交互效果、页面加载速度等等,主要是偏向用户看得见的部分,客户端(pc、手机、pad)上浏览web

    前端的焦虑

    3、稳定性不同

    当时我回答:“前端工程化就是:代码模块化、功能组件化,打包、构建、发布自动化、流程化。”在后面的一年中,我的工程化概念,大致还是如此,可能还会加上一个开发规范。

    1)传统的Web前端开发

    其实我也就随便列列,有很多东西都没涉及,但也能感受到这几年前端领域的突飞猛进。再站在现在这个时期,看前后端未分离的时期,那段后端兼职JS、视觉兼职CSS的上古年代,确实不能称前端代码为“工程”,更不太好意思说前端程序员为“工程师”。这也难怪很多高校老师、后端同学不屑前端。

    网站对于前台要求会多点,尤其是遇到js动效或者数据折线图,这对前端是个大的考验。

    所以前端工程师,其作为一名软件工程师,应该从整个软件系统工程去看。前端工程师不仅仅是完成自己的前端工程,而是完成了整个软件系统中的一部分,它也不会脱离整个系统而独立。

    对于以Java工程师为代表的后台开发,基本上大部分精力会放在诸如Java基础,设计模式,Jvm原理,spring springmvc原理及源码,linux,mysql事务隔离与锁机制,mongodb,http/tcp,多线程,分布式架构,弹性计算架构,微服务架构,java性能优化,以及相关的项目管理等等。

    小程序

    2、思考的方向是与用户交互不同

    我最关注的即是:如何更高效率、更高质量的为用户输出体验更好、能力更多的页面。这些年前端Coder围绕着这点也做了很多:

    因为网站的后台都是数据显示与修改,都是简单的增删改查,没有太复杂的功能。

    高效率:

    前端追求的是:页面表现,速度流畅,兼容性,用户体验等等。

    其实我觉得很多前端工程师是很厉害的。尤其是这几年,越来越多的优秀毕业生加入了前端。

    开发高质量

    而对于大多数只涉及Web页面工程的同学来说,望着这个巨大的软件系统工程,即使有心,似乎也无力。

    但立足现在,前端所涉及的范围已经远远超出了当年,我们的“工程”复杂度与其能拥有的能力也超出当年的想象。我们可以骄傲地说自己是一名前端工程师了。但我觉得,我们似乎离软件工程师还差一点点。

    前端工程在一个软件系统中是处于最上游的。因此,也就没有其他系统需要调取前端系统的服务。

    尤其是当需求变更较大、波及较广,甚至还同时涉及了多个系统间的迁移、升级、重构,这其中的复杂度便会迅速上升。对于体量较大、用户量较多的业务,这就是对工程师的一个考验了。

    有很多同学认为前端对业务的参与度太低了。但我们自我感觉对业务参与度也挺高呀,我知道产品都有哪些页面,都有哪些功能。

    框架、工具库、组件库

    如果我需要侵占下游的核心能力时,他们便不一定让步了。这时候我们可以采取“远交近攻”。如果我们能直接对接下游的下游,同时又能拥有下游的能力。

    这时候再来看这句话:前端工程师,先是软件工程师。不知道大家能否多了一些体感。

    监控系统

    有时候我会觉得,前端的交互逻辑如此复杂,其对代码水平的要求比后端大部分的业务场景高到不知道哪里去了。

    崛起三计

    线上质量保证

    但了解并不是参与,影响才是参与。前端的工程影响力以及业务影响力,导致了前端对业务的参与度本质上是很低的。

    希望届时,我们可以骄傲的称自己为一名软件工程师。我们依旧会不断学习,但学习的背后不再是因为焦虑,而是纯粹对于工程与代码的热爱~

    而加入蚂蚁后,BFF层可以说给我增加了很多工作量。我们需要开始给自己页面设计接口,需要对接多个后台系统。新增接口,可能需要考虑拓展性;旧的接口变更,需要考虑兼容性。

    在整个软件系统中,前端对接的系统少,所影响的系统也少,工程地位低。不像后端,它既需要为前端提供能力,又需要问中后台、数据层索取能力,也可能需要问其他业务后端索取能力,对接系统很多,工程地位自然也高。

    而这一两年前端技术栈趋于稳定,轮子相对也少了。加上前端程序员也比较拼,学不动的感觉也随着无数个夜晚的学习而渐渐逝去。

    因其技术栈基本与前端契合,极大了利好了前端开发者。前端开发同学疯狂涌入后,一方面做了非常多基建工作,极大提高了小程序开发效率。

    前端地位低

    动画、游戏

    多尺寸适配

    由此又会导致,前端往往不是产品能否实现的决定性因素。在软件系统中,需要上游系统调取下游系统服务。

    责编 | 胡巍巍

    后来三大框架出现,前后端逐渐分离,开始出现“前端工程化”的概念。2017年初时,曾面试过一家小创业公司,面试官问我前端工程化怎么做?

    典型的如Node层,利用Node服务端能力,搭建一层为前端服务的BFF层。于是便在一个软件系统工程中,硬生生造出一层系统,拓展了前端工程师的工程地盘。

    作者 | 蚂蚁保险体验技术团队

    1.无中生有

    ES6

    首先,我们作为前端工程师,是怎么定义这个“工程”的呢?

    3.反客为主

    Native能力

    解决当下前端焦虑的办法只能是打破前端工程局限,增加前端工程影响力,拔高其工程地位。最终让前端人员也能在软件系统工程中当家做主,平等的参与到软件系统建设当中。

    高性能

    复杂交互

    它的主要职责为:衔接页面与后端,聚合后端接口,做好数据转化,输出最满足页面期望的数据结果。

    Code Review

    另一方面,大量的小程序让业务看到小程序的无限可能。进而对小程序本身能力也多了很多诉求,如微信小程序支持了NPM包。社区里,前端程序员在小程序建设上不断努力,如今说到小程序,大家似乎都在夸前端厉害。

    但纯粹的代码水平并无法决定前端工程的影响力。即使你能用0和1敲打出一个天花乱坠的页面,那它也就是一个页面。

    加油吧前端程序员们!让我们一起为前端工程之崛起而编程。

    前端工程师,首先是软件工程师

    2.远交近攻

    聪明或勤奋,再加上时间的积累,总是能解决“学不动”的问题的。但前端工程地位诉求怕是自身再怎么努力也不一定能解决的。

    网上有很多人,都说过这句话。说的似乎很有道理,却又没啥体感。而近几天我对这句话感受日深,这其中很大原因归功于蚂蚁在Node上的丰富实践。

    高质量:

    在一个系统工程中,我们多做了一部分工作,自然就有人少做了一部分。现在我们无中生有的,是人家不愿意做的“脏活累活”。

    而作为整个系统工程的一部分,前端工程要懂得去索取,懂得去影响,了解整体工程的能力与痛点,思考整体工程如何去提高。

    但如果我们从整个软件工程来看,这时候我们就会意识到一个惨痛的事实:前端工程在整个系统工程中的地位太低了。

    本文由环球彩票登陆发布于环球彩票登陆,转载请注明出处:为前端工程之崛起而编程!环球彩票登陆

    关键词: 前台 算法 后台 数据结构