当前位置:首页 » 网页前端 » 前端复杂问题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端复杂问题

发布时间: 2022-06-14 15:11:46

前端开发的难点到底在什么地方

一般意义上的前端项目:

-从0到1,治理晒哦为健全点的都能捣鼓出来;

-从1到60,后后端或者设计岗位勉强能兼任;

-从60到80,需要比较专业的前端;

-从80到100,这么好的前端可遇不可求。

从0到1就是从无到有的过程,很多人用WordPress,建站之星就差不多就能搞个demo了,可以拿去骗投资人的钱。

从1到60,就是勉强可用,基本上让后端工程师或者UI设计师找一套bootstrap的模板东拼西凑的也能勉强应付到第一版本上线。

从60到80,就是真正要做一款能完备、性能优良、架构合理的中小规模产品,没有专业的设计、前端、后端、产品、运营是走不到这步的,差不多到A轮了。

从80到100,那就是追求各方面的极致,与竞争对手一较高下,各个方面没有顶尖的人才都会影响整体的战斗力,木桶效应。

解释一下:

1. 核心竞争力的主体是工程经验。
其实这个结论可以推广到其他研发岗位,就是每个研发岗位的知识体系都是由基础学科知识+领域工程经验构成,彼此不可替代的就是工程经验部分。一个后端工程师一时间不能替代同等级前端工程师到不是基础或者智商的问题,主要是工程经验不足,你让一个前端一个后端分别实现对方领域中一个有明确输入输出的功能函数,二者通过简单学习新语言新语法,加上开发手册查询,一般都能比较正常的实现业务逻辑,但你让他们hold住对方领域的完整项目就很困难了,技术选型,系统设计,模块拆分,平台特性,宿主环境,性能优化,构建部署,系统测试等等都是领域工程经验问题。

2. 工程经验的等级是能cover项目从0发展到80+。
这个很好解释,因为从0-60的非专业前端也能做到,60+的才是专业前端。

所以不用担心核心竞争力问题,60+的前端现在都很抢手啊。工程经验只有60-的话确实压力比较大。

Ⅱ web前端开发面临的挑战主要是有哪些

平时工作,多数是开发Web项目,由于一般是开发内部使用的业务系统,所以对于安全性一般不是看的很重,基本上由于是内网系统,一般也很少会受到攻击,但有时候一些系统平台,需要外网也要使用,这种情况下,各方面的安全性就要求比较高了。

1、测试的步骤及内容

这些安全性测试,据了解一般是先收集数据,然后进行相关的渗透测试工作,获取到网站或者系统的一些敏感数据,从而可能达到控制或者破坏系统的目的。

2、SQL注入漏洞的出现和修复

SQL注入定义:

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

SQL注入有时候,在地址参数输入,或者控件输入都有可能进行。如在链接后加入’号,页面报错,并暴露出网站的物理路径在很多时候,很常见,当然如果关闭了Web.Config的CustomErrors的时候,可能就不会看到。

3、跨站脚本攻击漏洞出现和修复

跨站脚本攻击,又称XSS代码攻击,也是一种常见的脚本注入攻击。例如在界面上,很多输入框是可以随意输入内容的,特别是一些文本编辑框里面,可以输入例如这样的内容,如果在一些首页出现很多这样内容,而又不经过处理,那么页面就不断的弹框,更有甚者,在里面执行一个无限循环的脚本函数,直到页面耗尽资源为止,类似这样的攻击都是很常见的,所以我们如果是在外网或者很有危险的网络上发布程序,一般都需要对这些问题进行修复。

Ⅲ 面试web前端的工作,会被问到什么问题

在实际的面试中,你可能需要使用 JavaScript、CSS 和 HTML 来编写代码。在你的面试期间,你可能需要实现 UI、构建窗口小部件或使用 Lodash 和 Underscore.js 这样的库编写常用的实用程序函数。例如:构建常见的 Web 应用程序的布局和交互,例如类似 Netflix 网站那样的。实现小部件,如日期选择器、轮播或电子商务网站购物车。写一个类似 debounce 或深度 clone 对象的函数。

Ⅳ 关于网页前端开发的问题

一口吃不出胖子的喂,我本身做后台程序的,但是你上面提到的我全都会,不说精通,但很多地方比我们的前台设计人员还要知道的多一点,因为某些时候我可以给出一些优化意见。
你上面说到的JS框架,说到底现在一般也就是JQUEYR这样的东西,这个东西本身其实是为了优化JS使用而存在的,只不过是个写好的JS文件而已,上来就学这个可能会感觉死记硬背的好烦,我建议你学习一些JS的基本知识,然后在看JQUERY这些包。
开始的工作不可能很复杂所以应该把工作学习重点放在DIV+CSS的布局上,这其中其实也有很多要学的地方,特别是浏览器兼容上的事,是需要慢慢的积累和习惯的。一开始JS实在不会可以网上搜人家写好的,反正常用的也就几个JS,最好不要搜用了JQEURY的,不能提高新手水平的。
所谓的审美,我可以很现实的告诉你,小公司为了省钱肯定请不起专业做美工的,所以都只可能是半吊子的美工,而大公司是有专门做美工的人员的,人家都是灰常NB的,不需要你查收。你的话会用PS,会用网上搜索到的素材,经常性的看看TAOBAO啊,微博啊之类的布局,美工足够了,真要做到精通美工,先问下公司肯不肯给你10K一个月。

Ⅳ 前端面试官常问的问题有哪些

1、重绘和重排的关系:

重绘不会引起重排,但重排一定会引起重绘,一个元素的重排通常会带来一系列的反应,甚至触发整个文档的重排和重绘,性能代价是高昂的。

2、重绘的概念:

重绘是一个元素外观的改变所触发的浏览器行为,例如改变visibility、outline、背景色等属性。浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。由于浏览器的流布局,对渲染树的计算通常只需要遍历一次就可以完成。

但table及其内部元素除外,它可能需要多次计算才能确定好其在渲染树中节点的属性值,比同等元素要多花两倍时间,这就是我们尽量避免使用table布局页面的原因之一。

3、触发重排的情况:

页面渲染初始化时;浏览器窗口改变尺寸;元素尺寸改变时;元素位置改变时;元素内容改变时;添加或删除可见的DOM元素时。

4、rex的缺点:

(1)一个组件所需要的数据,必须甶父组件传过来,而不能像flux中直接从store取。

(2)当一个组件相关数据更新吋,即使父组件不需要用到这个组件,父组件还是会重新render,可能会有效率影响,或者需要写复杂的shouldComponentUpdate进行判断。

5、对MVC和MVVM的理解:

(1)mvc:View传送指令到Controller Controller完成业务逻辑后,要求Model改变状态Model将新的数据发送到View,用户得到反馈所有通信都是单向的。Angular它采用双向绑定(data-binding):View的变动,自动反映在ViewModel,反之亦然。组成部分Model、View、ViewModel

(2)View:UI界面ViewModel:它是View的抽象,负责View与Model之间信息转换,将View的Command传送到Model;Model:数据访问层。

Ⅵ H5前端听起来好像很复杂,学起来难不难啊

同学,我们先来看看H5前端到底是何方神圣!H5前端:通过使用HTML标记语言制作网页的过程。又有同学问,是不是只会HTML标记语言就能学好前端了?其实不然,前端是集合了许多主流技术的一门学科。学好H5要掌握哪些技术呢?具体如下:

  1. 前端网页基础:熟悉HTML、css基本知识,掌握选择器、盒子模型、布局样式等使用方法。

  2. 前端编程基础:Javascript基础、BOM+DOM编程、jQuery+交互动画。

  3. 响应式网站与项目自动化开发。

  4. 前端框架编程及原理。

    这样看起来H5前端好像很复杂,让很多同学也开始打退堂鼓了。但只要你是喜欢编程、喜欢解决问题,或者非常非常想进入高薪行业,并且可以为之长期坚持努力,那么前端学好就不在话下。

Ⅶ 前端是有多难看完你就知道了

最近感觉追不动前端的发展了,写篇文章感叹一下。
HTML
我知道有一些学校会教一些简单的网页制作,就是用 Dreamweaver 点一点的那种。大多也会留作业,最后交作业的时候看起来也像模像样。
只要不看代码。
看了代码感觉宁愿选择死亡。
table 布局,无意义的 dom 节点。大小写混用,缩进混乱。
作为一个前端工程师,至少要写明白自己写的声明是什么意思对吧?
然后还得减少不必要的 dom 节点,毕竟很多文章说节点多会影响渲染速度(ps: 我是不在乎的,我觉得有点儿矫枉过正的味道了)
然后比较重要的一点儿是对于语义化标签的见解。比如什么时候该用 ul, 什么时候该用 section, aside
至于 head 里面的那些无聊的声明只要会复制粘贴就好了,我觉得没什么意思
自信做到这些的应该算差不多了
文章说的是前端有多难,很多人都觉得这些标签简单。然而想象一下,要写多少的标签才能理解语义化的意义?要写多少页面才能真正的明白这个节点应该写什么标签?如何组合才算合理?
CSS
然后是关于 CSS,我觉得这方面是很复杂的。并不像很多人觉得只是一些单词的组合。
一开始我会改 background-color 觉得开心得不行,以为掌握了
后来无限突破视野。
在第一次写超过50个class之后就感觉想死,重复性劳动,样式修改调试,写法丑。。。
接触到 Sass 之后像是发现了新大陆,有一段时间甚至不会写原生 css 语法了。
然后折腾: Sass -> Stylus
到这里结束了么? naive
后面还有postcss, cssnext 这些东西。
在 react 生态中还有 css-moles, css-in-js 这些鬼东西。
虽然语法都不是很难。但是这么长时间的折腾下来,虽说提升是有的,但并没有感觉到生产力有多少巨大的提升。
css 到这里还没完。
还有BEM的命名方式要去理解。
到这里依旧没有完。
css3 的新特性,还有各种 hack。比如如何实现footer始终在底部,内容始终撑满全局?如何实现条纹?
到这里结束了么?
依旧没完。
css stage 4 等着去学习。
还有精力?
可以试着多做些兼容性相关的东西。会崩溃,相信我
到这里?
在我的视野中差不多算结束了,然而有谁能确定明天有没有一个什么new-css之类的东西解决什么问题。
JS
来了来了,前端的一个核心。
说JS轻松么?咱们来扯扯。
首先是各种 dom 的增删改,然后是ajax相关。学会了差不多能做简单的页面了。
然后对异步的理解。只有理解了异步才能正常地写js。
然后是对js语言特性的理解。比如ES5如何实现继承什么的,闭包。
总之这些就是面试题总是会问的东西。
之后还应该理解设计模式对吧?
到这里是正常的语言应该学习的内容了。然而js到这里只是起步。
之后一个前端工程师还得会 ES2015/2016 之类的吧。现在不写个async谁好意思说自己是写前端的?
之后应该是配合工具了,后文说。
继续顺着语言往下说。会了 ECMAScript 就能做个合格的前端了么?
还早呢。
之前火的 coffee script 现在不行了,然而 TypeScript 火了啊。不学一下怎么好意思追前端?
ts 对于之前写 Java, C# 的非常友好,基本语法没什么变化。然而可苦了那些不写这些语言的同学。语法改变倒是其次,思维方式的转变才是难以接受的。
现在还有 Elm 了。。。
我觉得我老了,追不上了

Ⅷ Web前端岗位面试题有哪些

前端面试题汇总,基本上会有四大类问题,具体如下:
一、HTML

1、Doctype作用?严格模式与混杂模式如何区分?它们有何意义?

2、HTML5 为什么只需要写 <!DOCTYPE HTML>?
3、行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
4、页面导入样式时,使用link和@import有什么区别?
5、介绍一下你对浏览器内核的理解?
6、常见的浏览器内核有哪些?
7、html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
8、简述一下你对HTML语义化的理解?
9、HTML5的离线储存怎么使用,工作原理能不能解释一下?
10、浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?
11、请描述一下 cookies,sessionStorage 和 localStorage 的区别?
12、iframe有那些缺点?
13、Label的作用是什么?是怎么用的?(加 for 或 包裹)
14、HTML5的form如何关闭自动完成功能?
15、如何实现浏览器内多个标签页之间的通信? (阿里)
16、webSocket如何兼容低浏览器?(阿里)
17、页面可见性(Page Visibility)API 可以有哪些用途?
18、如何在页面上实现一个圆形的可点击区域?
19、实现不使用 border 画出1px高的线,在不同浏览器的Quirksmode和CSSCompat模式下都能保持同一效果。
20、网页验证码是干嘛的,是为了解决什么安全问题?
21、tite与h1的区别、b与strong的区别、i与em的区别?

二、css

1、介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的?

2、CSS选择符有哪些?哪些属性可以继承?
3、CSS优先级算法如何计算?
4、CSS3新增伪类有那些?
5、如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?
6、display有哪些值?说明他们的作用。
7、position的值relative和absolute定位原点是?
8、CSS3有哪些新特性?
9、请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?
10、用纯CSS创建一个三角形的原理是什么?

11、一个满屏 品 字布局 如何设计?

三、常见兼容性问题?


  1. 1、li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?
    2、经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ?
    3、为什么要初始化CSS样式。
    4、absolute的containing block计算方式跟正常流有什么不同?
    5、CSS里的visibility属性有个collapse属性值是干嘛用的?在不同浏览器下以后什么区别?
    6、position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
    7、对BFC规范(块级格式化上下文:block formatting context)的理解?
    8、CSS权重优先级是如何计算的?
    9、请解释一下为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式
    10、移动端的布局用过媒体查询吗?
    11、使用 CSS 预处理器吗?喜欢那个?
    12、CSS优化、提高性能的方法有哪些?
    13、浏览器是怎样解析CSS选择器的?
    14、在网页中的应该使用奇数还是偶数的字体?为什么呢?
    15、margin和padding分别适合什么场景使用?
    16、抽离样式模块怎么写,说出思路,有无实践经验?[阿里航旅的面试题]
    17、元素竖向的百分比设定是相对于容器的高度吗?
    18、全屏滚动的原理是什么?用到了CSS的那些属性?
    19、什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE?
    20、视差滚动效果,如何给每页做不同的动画?(回到顶部,向下滑动要再次出现,和只出现一次分别怎么做?)
    21、::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的作用。
    22、如何修改chrome记住密码后自动填充表单的黄色背景 ?
    23、你对line-height是如何理解的?
    24、设置元素浮动后,该元素的display值是多少?(自动变成display:block)
    25、怎么让Chrome支持小于12px 的文字?
    26、让页面里的字体变清晰,变细用CSS怎么做?(-webkit-font-smoothing: antialiased;)
    27、font-style属性可以让它赋值为“oblique” oblique是什么意思?
    28、position:fixed;在android下无效怎么处理?
    29、如果需要手动写动画,你认为最小时间间隔是多久,为什么?(阿里)
    30、display:inline-block 什么时候会显示间隙?(携程)
    31、overflow: scroll时不能平滑滚动的问题怎么处理?
    32、有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度。
    33、png、jpg、gif 这些图片格式解释一下,分别什么时候用。有没有了解过webp?
    34、什么是Cookie 隔离?(或者说:请求资源的时候不要让它带cookie怎么做)
    35、style标签写在body后与body前有什么区别?

    四、JavaScript

    1、介绍JavaScript的基本数据类型。
    2、说说写JavaScript的基本规范?
    3、JavaScript原型,原型链 ? 有什么特点?
    4、JavaScript有几种类型的值?(堆:原始数据类型和 栈:引用数据类型),你能画一下他们的内存图吗?
    5、Javascript如何实现继承?
    6、Javascript创建对象的几种方式?
    7、Javascript作用链域?
    8、谈谈This对象的理解。
    9、eval是做什么的?
    10、什么是window对象? 什么是document对象?
    11、null,undefined的区别?
    12、写一个通用的事件侦听器函数(机试题)。
    13、[“1”, “2”, “3”].map(parseInt) 答案是多少?
    14、关于事件,IE与火狐的事件机制有什么区别? 如何阻止冒泡?
    15、什么是闭包(closure),为什么要用它?
    16、javascript 代码中的”use strict”;是什么意思 ? 使用它区别是什么?
    17、如何判断一个对象是否属于某个类?
    18、new操作符具体干了什么呢?
    19、用原生JavaScript的实现过什么功能吗?
    20、Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
    21、对JSON的了解?
    22、[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) }) 能解释一下这段代码的意思吗?
    23、js延迟加载的方式有哪些?
    24、Ajax 是什么? 如何创建一个Ajax?
    25、同步和异步的区别?
    26、如何解决跨域问题?
    27、页面编码和被请求的资源编码如果不一致如何处理?
    28、模块化开发怎么做?
    29、AMD(Moles/Asynchronous-Definition)、CMD(Common Mole

    Definition)规范区别?
    30、requireJS的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何 缓存的?)
    31、让你自己设计实现一个requireJS,你会怎么做?
    32、谈一谈你对ECMAScript6的了解?
    33、ECMAScript6 怎么写class么,为什么会出现class这种东西?
    34、异步加载的方式有哪些?
    35、documen.write和 innerHTML的区别?
    36、DOM操作——怎样添加、移除、移动、复制、创建和查找节点?
    37、.call() 和 .apply() 的含义和区别?
    38、数组和对象有哪些原生方法,列举一下?
    39、JS 怎么实现一个类。怎么实例化这个类
    40、JavaScript中的作用域与变量声明提升?
    41、如何编写高性能的Javascript?
    42、那些操作会造成内存泄漏?
    43、JQuery的源码看过吗?能不能简单概况一下它的实现原理?
    44、jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this?
    45、jquery中如何将数组转化为json字符串,然后再转化回来?
    46、jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?
    47、jquery.extend 与 jquery.fn.extend的区别?
    48、jQuery 的队列是如何实现的?队列可以用在哪些地方?
    49、谈一下Jquery中的bind(),live(),delegate(),on()的区别?
    50、JQuery一个对象可以同时绑定多个事件,这是如何实现的?
    51、是否知道自定义事件。jQuery里的fire函数是什么意思,什么时候用?
    52、jQuery 是通过哪个方法和 Sizzle 选择器结合的?(jQuery.fn.find()进入Sizzle)
    53、针对 jQuery性能的优化方法?
    54、Jquery与jQuery UI有啥区别?
    55、JQuery的源码看过吗?能不能简单说一下它的实现原理?
    56、jquery 中如何将数组转化为json字符串,然后再转化回来?
    57、jQuery和Zepto的区别?各自的使用场景?
    58、针对 jQuery 的优化方法?
    59、Zepto的点透问题如何解决?
    60、jQueryUI如何自定义组件?
    61、需求:实现一个页面操作不会整页刷新的网站,并且能在浏览器前进、后退时正确响应。给出你的技术实现方案?
    62、如何判断当前脚本运行在浏览器还是node环境中?(阿里)
    63、移动端最小触控区域是多大?
    64、jQuery 的 slideUp动画 ,如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行,该如何处理呢?
    65、把 Script 标签 放在页面的最底部的body封闭之前 和封闭之后有什么区别?浏览器会如何解析它们?
    66、移动端的点击事件的有延迟,时间是多久,为什么会有? 怎么解决这个延时?(click 有 300ms 延迟,为了实现safari的双击事件的设计,浏览器要知道你是不是要双击操作。)
    67、知道各种JS框架(Angular, Backbone, Ember, React, Meteor, Knockout…)么? 能讲出他们各自的优点和缺点么?
    68、Underscore 对哪些 JS 原生对象进行了扩展以及提供了哪些好用的函数方法?
    69、解释JavaScript中的作用域与变量声明提升?
    70、那些操作会造成内存泄漏?
    71、JQuery一个对象可以同时绑定多个事件,这是如何实现的?
    72、Node.js的适用场景?
    (如果会用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
    73、解释一下 Backbone 的 MVC 实现方式?
    74、什么是“前端路由”?什么时候适合使用“前端路由”? “前端路由”有哪些优点和缺点?
    75、知道什么是webkit么? 知道怎么用浏览器的各种工具来调试和debug代码么?
    76、如何测试前端代码么? 知道BDD, TDD, Unit Test么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
    77、前端templating(Mustache, underscore, handlebars)是干嘛的, 怎么用?
    78、简述一下 Handlebars 的基本用法?
    79、简述一下 Handlerbars 的对模板的基本处理流程, 如何编译的?如何缓存的?
    80、用js实现千位分隔符?(来源:前端农民工,提示:正则+replace)
    检测浏览器版本版本有哪些方式?
    81、我们给一个dom同时绑定两个点击事件,一个用捕获,一个用冒泡,你来说下会执行几次事件,然后会先执行冒泡还是捕获

Ⅸ 为什么我们的WEB前端变的越来越复杂

1、以前对于前端的定位可能只是“页面仔”,把设计师的设计变成一个实际的网页。不过现在可不是这么简单了,同样是一张设计图,需要在许多千奇百怪的浏览器上面进行兼容,调试。而且因为现在网页的交互已经变得越来越复杂,单纯的网页已经不能够满足于用户。而更加像是一个富客户端。
2、而且随着HTML5跨平台应用的兴起,前端的定位又进一步发展了。因为可以要求前端编写移动端web app应用甚至是跨平台应用。这个时候,前端要学习的东西就更多了。
3、可能这些只是一个表面上看到的东西。因为前端工程师如果定位不好,在一个团队中很容易成为一个中间人。为什么这么说呢,因为团队中会使用一种后端语言,常见的有python,php,ruby现在还有node.js(对不起,我知道node.js不是一种语言,不过你懂就行了),如果你不会这种后端语言,你会变得好像一个局外人,甚至在团队中显得像个外包。因此前端又需要在应用层面上会这些后端的语言,比如说要爬爬数据,你总不能在浏览器上就完成吧?所以前端的范围就更广了。
好吧,从几个方面说了前端为什么那么苦逼。其实前端是一个很好的练武场,你一定会在前端职位上成为一个多面手,学习到最多的东西,因为你跨维度是最大的,你懂设计,懂交互,懂后端语言,懂前端语言,会沟通,会兼容,你都做到了,你已经是个牛人了!欢迎加入前端。

Ⅹ 前端开发的难点到底在什么地方

  • 不同级别的前端面临的难点各不相同,不可一概而论;

  • 业务开发的前端难点在于对业务的理解和把控能力;

  • 平台开发的前端难点在于产品化的把控和推进能力。

  • 观点1:不同级别的前端面临的难点各不相同,不可一概而论。

    其他回答有说 CSS 难,有说 CSS 不难的,每个人水平不同,这样争论毫无意义。我刚学前端时觉得 JS/CSS/浏览器兼容问题都很难,现在觉得也就那样,因为前端路子广,办法总比问题多。后来觉得要评估好需求,把控好项目质量比较难,很多时候我们是在干事,在解决问题,不是只埋头写代码,时间一长你会发现前端工作中,技术问题往往比较好解决,反而资源+协作问题比较麻烦。现在对我来说比较难的是快速产品化的能力,如何从无到有去做出一些有价值的东西。

    举一个简单粗暴的例子吧:阿里前端很多,P5/P6 一大把,但是 P8/P9 的非常少,为什么?进阶的难点在哪里?

    前端开发的难点跟前端进阶的难点是非常相似的。阿里对每个前端层级都有一个标准,这也从侧面回答了这个问题,比如对 P5 来说,难点可能是写好业务代码,保证其灵活性和可维护性,能解决各种适配问题;对 P6 来说则需要独挡一面,能独立 owner 需求,而 P7 则需要在某方面技术有深入理解,等等。

    能提出这个问题首先得恭喜题主,说明题主在当前阶段遇到瓶颈了,需要向下一个 level 出击了。

    观点2:业务开发的前端难点在于对业务的理解和把控能力。

    业务逻辑开发本身并不是难点,谁都可以写。但是对于你自己负责的这块业务,后续业务的发展方向和潜力,你有去了解过吗?当业务方提需求过来时你是只负责执行还是和业务方一起探讨更合理的方案?你有没有给自己负责的产品提过一些建议?做过一些改善措施?如果前端只是作为一个执行者,作为一种被调度的资源,那么即使最终项目取得了好的成绩,跟你有多大关系?你自己会有多大的成就感?

    另外一个很重要的点:就是对业务的把控能力。业务方总是会催着上线,开发时间不断被压缩该怎么办?进度不如预期怎么办?开发遇到瓶颈怎么办?发布新功能翻车了怎么办?

    我见过有默默加班保证进度的,也有跟需求方重新谈延期的,有发布出问题手足无措的,也有自己默默修复的,有遇到瓶颈一筹莫展的,也有及时跟老板沟通,跟业务方撕逼的… 如何优雅的处理这些问题,有时候比写代码更难。为什么有的人业务代码逻辑混乱,写的一团糟?我不相信是智力问题,反倒更相信是对项目本身没有把控好,本来排了5天工作量的需求被业务方压到了3天,你还能保证写出健壮而不失风度的代码?

    观点3:平台开发的前端难点在于产品化的把控和推进能力。

    做业务时有人给你提需求,帮你出交互视觉稿,你只要负责写页面就行了。但是在支付宝前端,很多内部平台和技术产品都是技术自己主导,你需要自己发现问题,出方案,设计数据库,自己出页面,这是一个从无到有的创造的过程。并且要保证你做的东西是真正解决问题的,而不是做一些自己觉得很牛逼实际上并没有解决用户痛点的东西,用我老板的话说就是对产品的把控能力,不要跑偏了。前端是最容易做出产品化东西的工程师了,因为后端不会做 UI,UI 不会写代码,唯前端兼顾,这是最大优势。

    再一个就是对产品的推进能力了,你做的东西可能需要各种资源?如何争取?可能牵扯到多方利益?如何权衡?东西做出来了如何推广?如何在用户的一片骂声中奋勇前进?

    印象中很多平台型产品,刚开始投入使用时都是一片骂声,各种问题,说实话负责这些产品的程序员压力是相当大的,天天被骂还得彻夜帮别人解决问题,还得不断优化系统,你说难不难?

    以上三点就是本文所展现的理念,希望能对大家有帮助。