如何被称为一名前端工程师?

记于4/10/2015,这年大二,什么都还不知道!

百度百科的回答

网站重构的目的不是为了让网页更符合Web标准,重构的本质是构建一个前端灵活的MVC框架即HTML作为信息模型(Model),CSS控制样式(View),JavaScript负责调度数据和实现某种展现逻辑(Controller)。同时,代码需要具有很好的复用性和可维护性。这是高效率、高质量开发以及协作开发的基础。

DHTML可以让用户的操作更炫,更吸引眼球;Ajax可以实现无刷新的数据交换,让用户的操作更流畅。对于普通用户来说,一个网站是否规范、功能是否强大,服务器端是用J2EE+Oracle的强大组合,还是用ASP+Access的简单组合,并没有太明显的区别。但是,前端的用户体验却给了用户直观的印象。

2.精通JavaScript、jQuery、ExtJS等页面效果框架,这是前端工程师的最核心技能,是专做页面效果的技术。其实精通了JavaScript,后端编程语言,如.NET、PHP、Ruby都很容易掌握,因为其原理是一样的;

3.精通一二种模板语言,并能修改,如织梦或wordpress的模板;

4.掌握thinkphp与zend框架,能修改此类开源源码;

5.掌握html5与sencha,这是做手机等移动设备的页面前端技术;

6.掌握一二种后端编程语言,如PHP、.NET、JAVA,能读懂后端源码,实际上其原理跟JS差不多;

7.掌握node.js,熟悉各种自动化部署工具;

8.掌握FLASH,能制作出动态flash相册,会Flash AS3.0编程。

知乎用户haochuan给的答案

基础:

1.熟练运用HTML的各种element

2.HTML触发event及JS处理event

3.DOM操作,熟练掌握选择器,增删查改,遍历,搜索、children(子孙) parent(父亲) sibling(兄弟)

4.js中的loop循环及condition选择语法、scope(作用域)、closure(闭包)、array、object、this的用法

5.CSS 知识box modal(盒模型)、各种选择器(*, >, ~, :nth-child)、 position(据说大有文章)、 float

提升:

1.基本数据结构 能用JS写出linked list(链表), stack(栈), queue(队列), (binary)tree(树), graph(图), hashtable(哈希表)

2. 基本算法:能用JS实现各种search(linear, binary..), 各种sort(bubble, insertion, merge, quick, selection), 以及树的搜索(Breadth First/Depth First)和遍历(3种顺序)

3.设计模式,举个例子:singleton(单例模式)、factory(工厂模式)、

strategy(策略模式)、decrator(装饰模式)......《大话设计模式》可以一看

4.Git 不要只是停留在把Github当做一个网络储存器的层面上, 了解知道branch(仓库分支作用:

比如你和别人一起写代码,你写A.c 别人是B.c,你不想别人写的干扰你,就建立一个分支,自己调试自己的。以后都通过了,在合并)

diff(比较文件修改差异)

merge(合并项目分支)等等

5.基本的计算机知识 知道位运算, 溢出, thread, lock, concurrency, parallelism

6. 熟悉unix的基本命令,ssh public/private key(公共秘钥、私人秘钥,在密码系统中,密钥(private key)是只为交换加密消息的团体所知的加密和解密的钥匙,在密码系统中,密钥(private key)是只为交换加密消息的团体所知的加密和解密的钥匙。在传统的密钥系统中,一把钥匙会被通信者分享,以便每个人可以编加密码并且解密信息。这一个系统的危险是,如果任一通讯团体失去钥匙,或被偷,系统的安全性将被打破。最近的解决方案是联合使用私人和公开密钥。在这一个系统中,公开密钥连同私人密钥一起被使用。)

7.掌握正则表达式

8.能写出详细的注释/文档

9.基本的检索查询能力(google, stackoverflow, MDN)

10.单独思考解决问题的能力, 团队合作, 与人相处

专业:

1.Javascript模块化编程:AMD(Asynchronous Module Definition),意思就是"异步模块定义",它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。

2.CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标 准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。Node.js就是基于这个库开发的。

3.JS的call, apply, bind的区别与相识点,JS的数组操作foreach, filter, some, every......

4.了解functional.js 是模仿 Haskell 语言标准库 Prelude 制作的函数式编程库,还有还有curry化 :它是一种通过把多个参数填充到函数体中,实现将函数转换成一个新的经过简化的(使之接受的参数更少)函数技术。

5.知道高级HTML的API(File, Web Audio, WebSocket),都是什么鬼

6.CSS Preprocessors(css预处理),原本css不是编程语言,但是sass、less可以把css编程编程语言去写,知道多种css预处理的优缺点。

7.css框架,bootstrap属于一个CSS和HTML的集合框架

8.对比canvas与SVG(矢量图形)的概念

9.知道怎么把你的东西做成responsive, cross-browser support么?

10.SEO优化,知道meta data的含义。

11.掌握Ajax,restful, get, post知道如何与后台交互。

12.知道各种JS框架(Angular, Backbone, Ember, React, Meteor, Knockout...), 能讲出他们各自的优点和缺点。熟悉并掌握一种或几种框架

13.知道webkit(WebKit 是一个开源的浏览器引擎,与之相对应的引擎有Gecko(Mozilla Firefox 等使用)和Trident(也称MSHTML,IE 使用)),会用浏览器的各种工具调试和debug代码。

14.前端一般的工作流程(gulp, grunt, git, svn, npm),前端工程化的趋势,产生了越来越多的构建工具。

15.知道怎么测试代码,知道BDD, TDD, Unit Test, 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)。

16知道npm, V8, node, express, socket

17.(如果要用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering

18.积极关注各种前端产品, 跟上变化的节奏, 也是身为一个前端程序员必备的技能之一. 知道ECMAScript 6里怎么写class么? 知道react, flux, reflux么? 知道polymer, dart么? 知道meteor么?

接下来让我们来看一看各大公司的前端工程师的招聘要求

路书(硅谷一家创新公司)

资深前端工程师:

1. 有丰富前端经验的工程师,深入剖析过各种效果的实现方式,并自己动手mock过,有github等开源项目经验优先。

2. 2-5年开发经验,理解JS等框架的内核机制,有前端性能调优经验,熟悉主流浏览器的兼容性(虽然我们重点发展Chrome)。

3. 善于独立解决问题,对服务器端和算法有了解,能够全面考虑问题并提出最佳方案。

4. 技术人的坚持,有良好的代码和注释习惯,学习新技术的兴趣,相信好的产品和好的代码能改变世界。

5. 我们采用React JS框架,有该框架经验者优先考虑。Angular, Backbone, Ember, Meteor或其他类似框架的经验亦是加分项。

以上

待补充......

那些我不懂的专业名词,我全部百度了一遍。

这一年,我大二,我什么都没有。

你可能感兴趣的:(如何被称为一名前端工程师?)