WEB开发自己涵盖了许多领域的许多技术,那么,有哪些是WEB开发者必备的技能呢?这是一个 Quora 上用户提出的问题,其中Ellyse Taylor的回答得到了1900+的赞同,今天就WEB资源网就为你们翻译整理其回答内容,但愿你们可以从中学到一些东西。php
By Ellyse Taylor:css
可能不少人对下面这个列表中的大部份内容都已经了解了,但其中一定有一些是你以前没有看到过,或者没有彻底理解的,甚至有些你可能历来没据说过。前端
注意,浏览器的实现标准是不一致的,请确保你的网站可以兼容全部主流的浏览器。最少须要测试的有 Gecko 引擎(Firefox),WebKit引擎(Safari以及一些手机浏览器),Chrome,你所要支持的 IE 浏览器,以及 Opera。此外,你还须要了解不一样系统下,浏览器是如何渲染网页的。web
考虑一下人们不使用主流浏览器的状况,如手机,屏幕阅读器和搜索引擎。一些可用的辅助信息:WAI 和 Section508,移动开发:MobiForge。算法
阶段:如何在不影响用户的状况下部署更新。有一个或多个能够用来改变架构、代码或所有内容,并确保它们在可控范围内实现部署的测试或临时环境。有一种自动化的方式把更新部署到线上网站。最有效的实现方式是结合使用版本控制系统(CVS、Subversion等)和自动构建机制(Ant、NAnt等)。数据库
不要直接向用户显示不友好的错误信息。跨域
不要用纯文本的方式显示用户的电子邮件,由于他们可能会被垃圾邮件烦到死。浏览器
为用户生成的连接添加 rel=”nofollow” 属性,以免垃圾邮件。缓存
为你的网站创建周全的限制–这条也同时属于安全方面。tomcat
学习如何进一步的提升。
POST 提交成功后进行重定向,以避免刷新形成重复提交。
别忘了考虑无障碍访问。这老是不错的,在某些状况下,这甚至是法律要求的。 WAI-ARIA 和 WCAG 2 里都有关于这方面很好的资源。
不要让我思考。
OWASP开发指南 几乎覆盖了网站安全全部的内容。
了解注入,尤为是 SQL注入,并学会如何阻止它。
永远不要相信用户的输入,以及其余任何请求(包括Cookies和隐藏域的值)。
使用盐值(salt)哈希密码,并对不一样的行使用不一样的盐值,防止攻击。使用哈希算法如 bcrypt 或 scrypt(更安全,但比较新)(1, 2)来存储密码。(如何安全的存储密码)。NIST也容许使用PBKDF2来加密密码。避免直接使用 MD5 和 SHA 等算法。
不要企图拿出本身喜欢的认证系统。这是很容易出错的,而且是不可测的,甚至直到你被攻击了你才知道。
了解信用卡处理规则。(也可查看该问题)
在登陆页和任何须要输入敏感数据的页面使用SSL/HTTPS。
防止 session 被劫持。
避免跨站脚本(XSS)。
避免点击劫持。
保持系统更新到最新的补丁。
确保数据库链接信息的安全。
让本身了解最新的攻击技术和会影响你平台的漏洞。
阅读谷歌浏览器安全手册。
阅读WEB应用黑客手册。
考虑最小特权原则,尽可能使用非root用户运行服务器(以tomcat为例)。
若是有必要的话,实现缓存,请正确理解和使用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错误,消耗服务器带宽。
使用“搜索引擎友好”的URL,如 http://example.com/pages/45-article-title 而不是 http://ofexample.com/index.php?page=45。
在动态内容中,把 # 改为 #! ,而后在服务器端使用$_REQUEST["_escaped_fragment_"]。换句话说 ./#!page=1 变成了 ./?_escaped_fragments_=pa
ge=1。此外,对于使用 FF.b4 or 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 的回答中有一些很是有用的信息。
理解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,保存轻便、快速、灵活是最重要的。
要了解你花费20%的时间写代码而花费80%的时间来维护,所以写代码时必定注意。
创建一个好的错误报告解决方案。
创建一个别人能够提建议和批评的系统。
为将来的支持人员和维护人员创建良好的文档。
常常备份!Ed Lucas 的回答中有一些建议。有一个恢复策略,而不仅是一个备份策略。
使用版本控制系统,如 Subversion、Mercurial 或 Git。
不要忘记验收测试。Selenium 等框架能够帮到你。
请确保您有足够的日志记录的地方,可使用框架如log4j, log4net 或 log4r。当网站出现问题的时候,你须要可以找到问题所在。
日志要记录已处理异常和未处理异常。分析日志输出,由于它会显示出你网站的关键问题。
这里有些省略的东西并非由于它们没用,而是由于它们过于详细或者超出了范围,或者说的太远了。固然,上面的内容可能也有一些遗漏或者错误。
连接:http://webres.wang/essential-skills-every-web-developer-should-have原文:https://www.quora.com/What-are-5-essential-skills-every-Web-Developer-should-have