除此我们还需要掌握好HTML的语义化,像DIV / CSS这也会必须会的技能,我们应该还会使用模板引擎和SCSS / SASS 。而这个层面来说,我们开始使用Node.js来完成前端的构建等等的一系列动作 , 这时候必须学会使用命令行这类工具 。并且,在这时候我们已经开始构建单页面应用了 。
高级篇
JavaScript是一门易上手的语言,也充满了相当多的糟粕的用法 。几年前人们使用CoffeeScript编成成JavaScript来编写更好的前端代码,现在人们有了ES6、TypeScript和WebPack来做这些事 。尽管现在浏览器支持不完善,但是他们是未来 。同样的还有某些CSS3的特性,其对于某些浏览器来说也是不支持的 。而这些都是基于语言本来说的,要写好代码 , 我们还需要掌握面向对象编程、函数式编程、MVC / MVVM / MV*这些概念 。作为一合格的工程师,我们还需要把握好安全性(如跨域) , 做好 授权(如HTTP Basic、JWT等等) 。
工程化
这个标题好像是放错了 , 这部分的内容主要都是自动构建的内容 。首先,我们需要有基本的构建工具,无论你是使用gulp、grunt , 还是只使用npm,这都不重要 。重要的是,你可以自动化的完成构建的工具,编译、静态代码分析(JSLint、CSS Lint、TSLint)、对代码质量进行分析(如Code Climate,可以帮你检测出代码中的Bad Smell)、运行代码中的测试 , 并生成测试覆盖率的报告等等 。这一切都需要你有一个自动构建的工作流 。
兼容性
虽然我们离兼容IE6的时代已越来越远了,但是我们仍然有相当多的兼容性工作要做 。基本的兼容性测试就是跨浏览器的测试,即Chrome,IE,Firefox,Safari等等 。除此还有在不同的操作系统上对同一浏览器的测试,某些情况下可能表现不一致 。如不同操作系统的字体大小,可能会导致一些细微的问题 。
而随着移动设备的流行,我们还需要考虑下不同Android版本下的浏览器内核的表现不致,有时候还要一下不成器的Windows Phone 。除此 , 还有同一个浏览器的不同版本问题,常见于IE 。
前端特定
除了正常的编码之外,前端还有一些比较有意思的东西,如CSS3和JavaScript动画 。使用Web字体 , 可惜这个不太适合汉字使用 。还有Icon字体,毕竟这种字体是矢量的 。不过Icon字体还有一些问题,如浏览器对其的抗锯齿优化 , 还有一个痛是你得准备四种不同类型的字体文件 。因此,产生了一种东西SVG Sprite,在以前这就是CSS Sprite,只是CSS Sprite不能缩放 。最后,我们还需要掌握一些基本的图形和图表框架的使用 。
软件工程
这一点上和大部分语言的项目一样,我们需要使用版本管理软件,如git、svn,又或者是一些内部的工具 。总之你肯定要有一个,而不是zip这种文件 。然后,你还需要一些依赖管理工具,对于那些使用Webpack、Browserify来将代码编写成前端代码的项目来说,npm还是挺好用的 。不过就个人来说,对于传统的项目来说我总觉得bower有些难用 。我们还需要模块化我们的源码文件 , 才能使其他人更容易开始项目 。
调试
作为一个工程师来说,调试是必备的技能 。大部分浏览器都自带有调试工具 , 他们都不错——如果你使用过的话 。在调试的过程中 , 直接用Console就可以输出值、计算值等等 。如果你的项目在构建的过程中有一些问题 , 你就需要debugger这一行代码了 。
在一些调用远程API的项目里 , 我们还需要一些更复杂的工具 , 即抓包工具 。在调试移动设备时 , 像Wireshark、Charles这一类的工具,就可以让我们看到是否有一些异常的请求 。当然在这个时候,还有一个不错的工具就是像Chrome自带的远程设备调试 。对于移动网站来说 , 还要有Responsive视图 。
经验总结扩展阅读
- 手表jw是什么牌子,jw是什么牌子
- 桑蚕丝和真丝的区别是什么,桑蚕丝和真丝的区别
- 中国朝代顺序是什么,中国朝代顺序是什么?
- 高版本鞋子什么意思,空军一号高版本是什么意思?
- 大男子主义的表现是什么,大男子主义的具体表现
- 女儿墙的由来是什么,女儿墙是什么意思,为什么叫女儿墙?
- 为什么新水壶烧水壶底有斑点,烧水壶底部的白色斑点是什么?
- vigrx是什么药,vigrx是什么
- 负熵是什么意思,收宇宙灵,收负熵流是什么意思?
- 佩戴手表的寓意 戴手表象征意义是什么,戴手表有什么含义