WEB 开发者应该具备的 6 大技能?

简介:

WEB开发本身涵盖了许多领域的许多技术,那么,有哪些是WEB开发者必备的技能呢?这是一个 Quora 上用户提出的问题,其中Ellyse Taylor的回答获得了1900+的赞同。

可能很多人对下面这个列表中的大部分内容都已经了解了,但其中必定有一些是你之前没有看到过,或者没有完全理解的,甚至有些你可能从来没听说过。

WEB 开发者应该有哪些必备的技能?

1. 界面和用户体验

  • 注意,浏览器的实现标准是不一致的,请确保你的网站能够兼容所有主流的浏览器。最少需要测试的有 Gecko 引擎 (Firefox),WebKit引擎(Safari以及一些手机浏览器),Chrome,你所要支持的 IE 浏览器,以及 Opera。此外,你还需要了解不同系统下,浏览器是如何渲染网页的。

  • 考虑一下人们不使用主流浏览器的情况,如手机,屏幕阅读器和搜索引擎。一些可用的辅助信息:WAI 和 Section508,移动开发:MobiForge。

  • 阶段:如何在不影响用户的情况下部署更新。有一个或多个可以用来改变架构、代码或全部内容,并确保它们在可控范围内实现部署的测试或临时环境。有 一种自动化的方式把更新部署到线上网站。最有效的实现方式是结合使用版本控制系统(CVS、Subversion等)和自动构建机制(Ant、NAnt 等)。

  • 不要直接向用户显示不友好的错误信息。

  • 不要用纯文本的方式显示用户的电子邮件,因为他们可能会被垃圾邮件烦到死。

  • 为用户生成的链接添加 rel=”nofollow” 属性,以避免垃圾邮件。

  • 为你的网站建立周全的限制–这条也同时属于安全方面。

  • 学习如何进一步的提高。

  • POST 提交成功后进行重定向,以免刷新造成重复提交。

  • 别忘了考虑无障碍访问。这总是不错的,在某些情况下,这甚至是法律要求的。 WAI-ARIA 和 WCAG 2 里都有关于这方面很好的资源。

  • 不要让我思考。

2. 安全

  • OWASP开发指南 几乎覆盖了网站安全所有的内容。

  • 了解注入,尤其是 SQL注入,并学会如何阻止它。

  • 永远不要相信用户的输入,以及其他任何请求(包括Cookies和隐藏域的值)。

  • 使用盐值(salt)哈希密码,并对不同的行使用不同的盐值,防止攻击。使用哈希算法如 bcrypt 或 scrypt(更安全,但比较新)(1, 2)来存储密码。(如何安全的存储密码)。NIST也允许使用PBKDF2来加密密码。避免直接使用 MD5 和 SHA 等算法。

  • 不要企图拿出自己喜欢的认证系统。这是很容易出错的,并且是不可测的,甚至直到你被攻击了你才知道。

  • 了解信用卡处理规则。(也可查看该问题)

  • 在登录页和任何需要输入敏感数据的页面使用SSL/HTTPS

  • 防止 session 被劫持。

  • 避免跨站脚本(XSS)。

  • 避免点击劫持。

  • 保持系统更新到最新的补丁。

  • 确保数据库连接信息的安全。

  • 让自己了解最新的攻击技术和会影响你平台的漏洞。

  • 阅读谷歌浏览器安全手册

  • 阅读WEB应用黑客手册

  • 考虑最小特权原则,尽量使用非root用户运行服务器(以tomcat为例)。

3. 性能

  • 如果有必要的话,实现缓存,请正确理解和使用HTTP缓存。

  • 优化图片。不要使用20K的图片作为平铺背景。

  • 学习如何 gzip/deflate 内容(deflate效果更好)。

  • 合并样式表与脚本文件以减小浏览器链接数,同时提高 gzip 的压缩能力。

  • 浏览雅虎性能卓越的网站,以及大量的指南,其中包含提升前端性能和YSlow工具(需要安装Firefox, Safari, Chrome 或 Opera)。此外,Google page speed(浏览器扩展)也是一个性能分析工具,它同时可以优化你的图片。

  • 对于小的如工具栏图片,使用CSS Image Sprites(参考最小化HTTP请求)。

  • 访问量大的网站应该考虑跨域拆分组件。

  • 静态内容(如图片、CSS、JavaScript及不需要访问cookie的内容)应该放在一个单独的域下,因为域及其子域的每一个请求都会发送cookie。这里是使用内容分发网络(CDN)的一个很好的选择。

  • 减少浏览器渲染页面所需的HTTP请求的总数量。

  • 利用Google Closure Compiler及其他压缩JS的工具。

  • 确保网站根目录下有一个favicon.ico文件,即使在HTML中并没有提到它,浏览器也会自动加载它。如果你没有 /favicon.ico ,就会返回很多404错误,消耗服务器带宽。

4. SEO (Search Engine Optimization) 搜索引擎优化

  • 使用“搜索引擎友好”的URL,如 http://example.com/pages/45-article-title 而不是 http://ofexample.com/index.php?page=45。

  • 在动态内容中,把 # 改成 #! ,然后在服务器端使用$_REQUEST["_escaped_fragment_"]。换句话说 ./#!page=1 变成了 ./?_escaped_fragments_=page=1。此外,对于使用 FF.b4 或 Chromium 的用户,history.pushState({“foo”:“bar”}, “About”, “./?page=1″); 是一个非常棒的命令。因此,即使地址栏已经改变了,页面也不会刷新。

  • 不要使用“点击这里”这样的链接。你是在浪费一个搜索引擎优化的机会,而且它让使用屏幕阅读器人们更难阅读。

  • 有一个XML网站地图,最好在默认位置 /sitemap.xml。

  • 当有多个URL指向同一个内容的时候,使用 <link rel=”canonical” … /> ,这个问题可以通过 Google Webmaster Tools 来解决。

  • 使用 Google Webmaster Tools 和 Bing Webmaster Tools。

  • 安装 Google Analytics 或者其他开源分析工具如:Piwik。

  • 了解 robots.txt 及搜索引擎蜘蛛 是如果工作的。

  • 使用重定向(301)www.example.com 到 example.com(或者反过来),防止它们平分谷歌网站排名。

  • 要知道有 badly-behaved 蜘蛛的存在。

  • 如果你的网站有非文本内容,Tim Farley 的回答中有一些非常有用的信息。

5. 技术

  • 理解HTTP以及GET、POST、session、cookie以及“无状态”的意思。

  • 撰写XHTML/HTML和CSS要遵循W3C规范,并确保它们通过校验。这样做的目的是为了避免浏览器的怪癖模式,并且这使得非标准浏览器如屏幕阅读器和移动设备更加容易实现。

  • 理解浏览器是如何处理JavaScript 的。

  • 理解JavaScript 、样式表、以及页面使用的其他资源是如何加载的,并考虑它们对感知性能的影响。现在普遍认同的一种做法是把除分析代码等以外的脚本文件放在页面底部。

  • 了解JavaScript 沙箱是如何工作的,特别是当你想使用 iframe 的时候。

  • 需要注意到,JavaScript是可以被禁用的,因此AJAX只是一个扩展,而不是基准。虽然大部分用户并没有禁用它,但记住,NoScript正在变得越来越流行。并且,谷歌在索引你的网站时也不会运行JavaScript。

  • 学习 301 和 302 重定向之间的不同。

  • 尽可能多地了解你的部署平台。

  • 考虑使用 Reset Style Sheet 或 normalize.css。

  • 考虑使用JavaScript框架(如jQuery, MooTools, Prototype, Dojo 或 YUI 3),这可以避免很多使用JavaScript操作DOM时的差异。

  • 在考虑感知性能和框架的同时,考虑使用服务,如Google Libraries API,来加载框架,这样浏览器可以使用已经缓存的框架而不是从你的网站上下载。

  • 不要重复造轮子。在做任何事情之前,先搜索相关的组件或者实例。99%的可能别人已经实现了并发布出了开源的代码。

  • 在确定需求之前,尽量不要使用超过20个的库,这是非常不利的。特别是客户端WEB,保存轻便、快速、灵活是最重要的。

6. BUG修复

  • 要了解你花费20%的时间写代码而花费80%的时间来维护,因此写代码时一定注意。

  • 建立一个好的错误报告解决方案。

  • 建立一个别人可以提建议和批评的系统。

  • 为未来的支持人员和维护人员建立良好的文档。

  • 经常备份!Ed Lucas 的回答中有一些建议。有一个恢复策略,而不只是一个备份策略。

  • 使用版本控制系统,如 Subversion、Mercurial 或 Git。

  • 不要忘记验收测试。Selenium 等框架可以帮到你。

  • 请确保您有足够的日志记录的地方,可以使用框架如log4j, log4net 或 log4r。当网站出现问题的时候,你需要能够找到问题所在。

  • 日志要记录已处理异常和未处理异常。分析日志输出,因为它会显示出你网站的关键问题。

这里有些省略的东西并不是因为它们没用,而是因为它们过于详细或者超出了范围,或者说的太远了。当然,上面的内容可能也有一些遗漏或者错误。


来源:51CTO

相关文章
|
6月前
|
前端开发 关系型数据库 Go
Go语言学习路线 - 5.基础篇:从一个web项目来谈Go语言的技能点
经过了 入门篇 的学习,大家已经初步了解Go语言的语法,也能写常见的代码了。接下来,我们就从一个Web项目入手,看看一些常见的技能与知识吧。 我们先简单地聊一下这个Web项目的背景:我们要做的是一个简单的web系统 ,有前端同学负责界面的开发,后端不会考虑高并发等复杂情况。
62 0
|
2月前
|
SQL 开发框架 .NET
ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
33 0
|
3月前
|
前端开发 JavaScript Java
系统化web前端需要技能所占比(通过图表分析来看您是不是一个合格的前端)
系统化web前端需要技能所占比(通过图表分析来看您是不是一个合格的前端)
36 0
|
9月前
|
存储 前端开发 JavaScript
2023年如何成为Web3开发者?详细聊聊Web3开发者的那些事
2023年如何成为Web3开发者?详细聊聊Web3开发者的那些事
283 0
|
10月前
|
机器学习/深度学习 人工智能 算法
人工智能入门指南:Web 开发者版 (5)深度学习与神经网络
本节将介绍深度学习的基础概念以及在人工智能中的应用。我们将涵盖卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)以及迁移学习等内容
97 0
|
10月前
|
机器学习/深度学习 人工智能 算法
人工智能入门指南:Web 开发者版 (4)机器学习算法与实践
本节将介绍常用的机器学习算法及其实践应用。我们将涵盖监督学习算法、无监督学习算法以及模型调优与性能优化等内容。
130 0
|
10月前
|
数据采集 机器学习/深度学习 人工智能
人工智能入门指南:Web 开发者版 (3)数据处理与准备
本节将介绍在人工智能项目中进行数据处理和准备的关键步骤。我们将涵盖数据收集与清洗、数据可视化、特征选择与处理以及数据集划分与交叉验证等内容。
128 0
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能入门指南:Web 开发者版 (2)基础概念
本节将介绍人工智能中的基础概念,包括机器学习和深度学习的基础知识。我们将探讨监督学习、无监督学习和强化学习等机器学习的基本概念,以及神经网络、前向传播和反向传播等深度学习的基础知识。此外,我们还会介绍一些常用的深度学习框架
76 0
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能入门指南:Web 开发者版 (1)简介
本节将介绍人工智能(Artificial Intelligence, AI)的概念以及它在 Web 开发中的应用。我们将深入探讨 AI 的基本原理和方法,并提供一些具体的代码示例,帮助你理解如何将 AI 技术应用到 Web 开发中
115 0
|
10月前
|
存储 设计模式 人工智能
Web开发者的云原生指南(8)进阶话题与资源推荐
本节将探讨云原生技术的未来发展,并推荐一些相关的社区和资源,以及阅读和学习资料。
111 0