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