前端开发人员负责构建用户可以看到并与之交互的应用程序部分. (In most cases, 前端开发特别指由用户浏览器解释的web应用程序.)
如果我们想为用户提供引人入胜的体验,雇佣优秀的前端开发者是关键.
随着时间的推移,web用户界面(ui)变得更具交互性. 它们还传播到了新的环境中,比如手机、可穿戴设备和汽车.
前端开发人员曾经轻松掌握了三种主要技术:HTML、CSS和JavaScript. At that point, JavaScript提供了一组用于实时修改网页的基本功能, 允许动画UI元素,使它们更具互动性.
但是现在使用JavaScript,开发变得更加复杂. 它用于多种编程范例,并代表了自己的前端开发专业化, 与HTML和CSS分离.
在这其中,还有许多更具体的专门化,而且新的专门化一直在出现. 一般的知识和技能也拓宽了, 许多技术被跨专门化使用.
那么,在招聘前端开发人员时,你怎么知道什么是重要的呢?
基于项目和你想提供什么样的用户界面, 我们可以将前端开发技能分成两个主要领域:UI和前端JavaScript.
UI Development
两种风格中较简单和古老的一种, 这在Gmail的“基本HTML”版本和大多数传统网络论坛中使用.
这些网站仍然是由网页组成的,可以包含动画和许多图形元素, 但通常涉及的(自定义)JavaScript要少得多. 对于这类web应用程序,前端开发人员需要知道:
HTML and CSS. 所有前端开发人员都必须了解网页标记(HTML)和层叠样式表(CSS)。. 这些是web浏览器解释并呈现为可视化UI元素的标准构建块. 前端开发人员应该了解HTML5和css3——它们已经成为标准版本有一段时间了——并知道何时使用它们的最新功能.
JavaScript basics. 为了使网页具有交互性,使用JavaScript语言是所有前端开发人员的基础.
前端开发人员经常使用JavaScript库来开发UI小部件, components, 以及插件形式的效果.
并不总是需要向项目中添加JavaScript库. 然而,应试者应该知道如何使用额外的JavaScript库,如jQuery或Ext JS. 这表明他们通常知道如何使用UI框架和重用UI元素.
跨浏览器的兼容性. 有无数的网络浏览器和它们的版本, 每个都支持不同的HTML功能和版本, CSS, and JavaScript. UI开发人员应该知道如何避免和解决跨浏览器的兼容性问题.
Responsive design. 如果我们想在移动设备上使用web应用程序, UI应该适应移动设备环境. (即使您不这样做,您的用户也可能会尝试.前端开发人员需要知道如何构建和优化web应用程序,以便他们在屏幕尺寸方面具有灵活性, ratios, and orientations.
UI frameworks. 很多时候,前端开发人员不需要从头开始构建UI元素. UI框架允许使用已定义的样式指南重用已创建的UI元素, 兼容桌面浏览器和移动设备.
开发人员可以使用轻量级UI框架来为整个布局建立网格系统,或者使用更健壮的框架来包含各种UI元素.
优秀的前端开发人员知道何时使用UI框架, 哪些对快速原型设计特别有帮助.
CSS-transforming tools. 前端开发人员还应该知道如何创建有效的 跨浏览器和移动兼容 style sheets effectively. 这可以避免生产中的问题.
CSS本身在创建优化样式表方面的能力有限, 而是CSS预处理器,比如LESS, Sass/SCSS, 或Stylus提供了一种更高级的方式来编写样式表并将其编译成CSS.
另一类CSS转换工具是像PostCSS这样的工具. 它的插件允许使用CSS预处理器和其他任务运行器来分析和优化样式表. 虽然经验不是严格要求的, 它确实表明开发人员正在以提高生产力的方式保持最新状态.
如果您正在考虑的前端开发人员不知道如何使用CSS转换工具, 您可能会看到臃肿的样式表和需要更长的时间来修复的兼容性问题.
2D and 3D graphics. ui可以包含动态和交互式图形和可视化, 有时甚至在三维空间.
创建图形可以与计算机图形学和设计专业重叠, 但是前端开发人员应该知道如何通过使用 SVG or JavaScript libraries. 如果你的项目特别需要3D图形, 他们应该能够自如地使用X3D或类似的库.
Accessibility. 患有某些残疾的人有时与设备互动的方式非常有限.
雇佣一个前端开发人员,他可以消除残疾障碍并扩展ui的使用 ARIA accessibility attributes. 他们将能够通过文本到语音的软件使你的网站更加可用, text-to-Braille hardware, 可能还有其他特殊的修改.
平面设计和排版. 网页设计师负责为Web应用程序选择和创建视觉效果.
前端开发人员负责确保整个设计在web浏览器中正常工作. 他们应该了解数字产品的平面设计和排版的基础知识.
网页设计的输出可以在图形编辑软件中修改, 前端开发人员应该知道如何使用输出在图形编辑器软件中进行基本编辑, or better yet, 使用浏览器的开发人员选项卡来准确地显示更改.
UI and UX. UI和UX设计师确保用户与产品UI的交互是简单的, usable, 并且在web浏览器渲染能力方面是可行的.
前端开发人员负责实现UI和UX设计人员的工作. 他们应该熟悉用户界面设计的最佳实践,知道如何使用线框图和模型工具(如Sketch和Balsamiq)的输出.
搜索引擎优化(SEO).) 如果你想面向更广泛的目标受众, 开发人员可以使用SEO技术使搜索时更容易找到您的站点.
前端开发人员应该知道如何在网页标记中涉及SEO原则,以使网页在搜索结果列表中可见.
Web template systems. 内容管理系统(cms)和网络发布平台为web应用程序提供了许多内置功能. 这总是包括一个web模板系统.
前端开发人员可以使用模板来自动生成UI元素. 如果您的项目在平台或CMS上运行, 熟悉该平台和模板系统的前端开发人员具有很大的优势, 因为他们可以更快、更少地开发项目UI.
Code versioning tools. Nowadays, 您的项目将使用Git或Mercurial之类的工具来跟踪项目代码的历史记录.
即使您还没有使用代码版本控制工具,您也会希望找到一个前端开发人员,他可以为您设置代码版本控制工具并实现版本控制最佳实践.
Without these tools, 在项目中,您很快就会遇到这样的情况:开发人员需要查看文件历史和更改背后的原因,但却无法查看.
Also, 单独工作时进行简单的提交和知道如何在快节奏的开发团队中集成更改是有区别的. 当你雇佣一个前端开发人员, 更多的源代码管理经验——尤其是您打算使用的版本——将使他们更容易地集成到团队中.
前端Web开发人员面试问题
这些前端开发人员面试问题将帮助你评估你的候选人的经验,如果你正在寻找一个更简单的基础设施,没有太多的自定义JavaScript开发.
你需要解决的最大兼容性问题是什么?
这让开发者有机会展示他们在行业中的经验水平. 如果前端开发人员已经为更广泛的受众开发应用程序或多年, 它们应该会遇到不同浏览器之间的兼容性问题.
答案还包括为移动设备开发响应式设计.
对于web应用程序,你认为快速构建原型和开发的最佳方式是什么?
这是一个让他们解释他们最喜欢的框架和工具的好机会. 开发人员可以引入UI框架以及css转换和其他帮助他们简化软件开发过程的工具.
使用HTML5和CSS3最新标准的主要目标和动机是什么?
UI开发人员应该知道,新的标准版本是为了传递媒体内容(视频)而设计的, audio, 交互式图形),无需额外的插件(如Flash), 为各种设备提供更好的跨平台支持, 并实现对网页的语义支持, 哪些对SEO有重大影响.
前端JavaScript开发
与UI开发相反, 前端JavaScript在所谓的富web应用程序中更为重要, e.g.比如Gmail这样的单页应用程序,或者谷歌Analytics这样的仪表板应用程序.
这个类别需要更广泛的JavaScript知识:
JavaScript高级知识. UI开发人员需要使用JavaScript实时操作页面并重用UI元素.
前端JavaScript开发人员需要对JavaScript框架和库有更深入的了解,因为他们负责设计和实现前端架构,并分析用户交互之间的依赖关系. 他们应该知道如何在一个项目中使用各种JavaScript框架和库,同时避免兼容性冲突.
Programming paradigms. 事件驱动编程不足以设计和实现复杂的前端架构. 前端JavaScript开发人员应该了解其他编程范例,比如MVC, OOP, 函数式编程, 哪些支持有助于创建可重用和可读前端代码的编程概念.
单页应用程序. 如果您想提供更好的用户体验,spa可能是一种方法. spa允许用户操作触发其他UI元素上的重新呈现(重绘)过程,而无需重新加载整个页面. 几乎所有用于实现前端架构的JavaScript框架或库都支持SPA概念.
Web应用程序还可以使用多页面方法或两者的混合. Based on the project, 前端开发人员应该知道哪种方法适合项目,以及如何实现它.
Networking protocols. 应用程序的前端使用网络协议从后端接收数据. 前端开发人员需要了解为web应用环境设计的REST架构风格和标准网络协议.
大多数web应用程序使用HTTP和/或HTTPS协议和Ajax, 应用程序的后端通常通过REST API提供数据.
有时,项目将需要后端和前端之间的高度交互.g., 互动游戏或动态媒体流——在这些情况下, 你的前端开发人员需要熟练使用更高级的协议,比如web套接字.
Security. 前端开发人员应该熟悉web安全概念,以及如何将用户身份验证和授权集成到应用程序的前端.
JavaScript框架已经可以防止大多数安全漏洞, 但是前端开发人员应该熟悉HTTPS协议, 知道如何避免跨站点脚本(XSS)攻击, 并具有实现用户会话管理和基于令牌的身份验证和授权的经验.
Package managers. 复杂的web应用程序包含大量JavaScript依赖项,在没有包管理器的情况下维护它们会显著减慢前端开发过程.
包管理器允许前端JavaScript开发人员管理JavaScript库依赖关系并避免版本冲突.
JavaScript打包器和任务运行器. JavaScript捆绑器允许开发人员利用模块化的概念, 哪个是大多数现代编程语言,尤其是单页应用程序的固有部分.
JavaScript打包器和任务运行器处理前端源代码, 其中包括管理和优化源代码和依赖项的任务. 它们允许在不需要额外工具的情况下自动化前端开发中的重复任务. 如果我们想使用测试驱动开发或行为驱动开发, 带有包管理器的JavaScript任务运行器允许我们设置项目,使应用程序前端可测试.
JavaScript developers need to know how to use these tools; otherwise, 他们将无法有效地发展spa.
Advanced optimization. 复杂的前端架构可能包含大量具有冗余依赖关系的源代码, 需要额外优化的情况.
JavaScript打包器和任务运行器包含用于优化冗余依赖项的插件, 但是前端JavaScript开发人员也应该知道如何实现延迟加载技术, 当用户浏览或滚动网页时,内容是无形地下载的.
Back-end development. 前端JavaScript开发人员经常与后端开发人员密切合作,以设计API调用,定义应用程序前端和后端之间的通信.
前端开发人员在没有应用程序后端任何支持或数据的情况下开始构建前端架构也可能发生. In this case, 他们需要知道如何设计和开发自己的API调用来模拟(伪造)稍后将从后端提供的数据.
如果你的项目是这样的话, 您可能需要倾向于全栈开发人员, 或者至少有一个使用过各种web api并对其最佳实践有很好的了解的人.
前端工程师面试问题
这里有一些重要的前端开发者面试问题,当你需要一个更专注于JavaScript领域的人:
单页面和多页面应用程序之间有什么区别? 你对我的项目有什么建议吗?
spa可以重新绘制UI的任何部分,甚至使用新数据, 无需重新加载所有UI内容. 多页面应用程序使用提交或请求新数据的每个用户操作重新绘制整个UI. 前端开发人员应该理解这个概念,并能够向您解释哪种方法适合项目及其原因.
你会为我的项目推荐哪些JavaScript框架或库?
这是一个很好的机会,让他们展示他们对JavaScript框架和库的知识,以及何时以及如何使用它们. 在开发前端架构时,没有通用的框架或方法, 正确的方法取决于项目和团队.
让他们解释JavaScript框架和库中使用了哪些方法,以及他们是否更喜欢某种方法. 如果前端开发人员不了解JavaScript框架以及它们的设计目的, 千万别想雇佣他们.
如何提高单页应用程序的速度和安全性?
这个问题让开发人员有机会展示他们开发spa的经验. 如果开发人员知道先进的优化技术,如预加载内容或延迟加载, 这意味着他们有开发健壮的spa的经验.
如果他们知道如何获取spa, 他们应该知道如何开发具有多个权限和不同用户角色的应用程序前端. 这种经验可以通过之前的一个简短的项目演示来展示.
不再是“大海捞针”了
在本文中,我们描述了前端开发人员在web应用程序上下文中的职责. 我们将前端开发工作分为两类——ui和JavaScript开发, 每个类别需要特定的知识和特定的技能.
但是很多时候,项目需要两个类别的交集.
对于没有参与软件开发的人来说,要认识到项目需要什么样的开发人员经验是非常困难的. But by using the Q&A in the article above, 您将能够识别前端开发人员是否理解并能够有效地沟通基本概念.
您有了项目的需求. 现在你也知道你应该专注于哪些技能和知识了. 是时候寻找理想的前端开发人员了!