我最喜歡web開發的一點是,它包括許多許多不同的技能。作為一個好的開發者,一定要好好學習,天天向上,因為我們有很多重要的技能要學習,而且它們總是在不停的發生變化。
這裡我列出了其中最為重要的10個技能,它們有點傾向於前端開發,但總體上適合所有的開發人員:
正則表達式
基本SEO
不錯的Javascript庫
跨浏覽器調試
圖片處理和優化
用有效的HTML/CSS進行布局(不適用表)
版權/基本網絡法規
Apache rewrite
調試軟件
版本控制
1. 正則表達式
正則表達式 常用於字符串的解析。其最基礎的運用便是文本中字符的查找與替換了。而這看起來並不算什麼,正則表達式的多樣性是其真正強大的原因。往往可以通過很多方法來優化你的正則表達式,這也意味著你的應用程序的性能的大幅提升。 正則表達式適用於任何一種編程語言,像JavaScript的replace() ,PHP的 preg_replace(), Apache rewrites等等。 奇怪是的只有為數不多的web開發者認為正則表達式相當有用,如果你還沒有學習,那就准備好開始吧 learn regular expressions。
2. 基本的搜索引擎優化
對於網絡開發者來說,了解搜索引擎優化的基本信息是必須的。雖然你可以預留導向你客戶端的關鍵字,開發人員應該用有更合理的在頁面上安排這些關鍵字的策略。這意味著,在整理前端的標記,好好利用 《TITLE》、《META》、《h1》和《h2》標簽,同時在後端組織更加穩固的的鏈接和目錄結構。 我找到的學習SEO的最佳資源是 Beginner’s Guide to Search Engine Optimization 和 Search Engine Ranking Factors v2,二者都來自 SEOmoz。
3. 一個優秀的Javascript庫
即使你不太寫Javascript代碼,掌握一個優秀的Javascript庫也會帶來很大的幫助。無論是jQuery(我的最愛)、 Mootools,還是其它什麼庫,都可以讓你的Javascript開發工作事半功倍。首先,這些庫都提供了跨浏覽器的功能,使你可以直接上手,不需要再去管這方面的事情。而且,它們都提供了大量簡單的動畫,像在DOM中選擇節點這類工作變得易如反掌。 更大膽的Javascript程序員也許會想要接觸Javascript UI語言。以上說的幾種庫都有相關的插件,但我個人推薦Dojo with Dijit。
4. 跨浏覽器調試
為了讓網站被更多的人看到,顯然應該讓它支持所有主流浏覽器(IE6、IE7、IE8、FF2、FF3、Safari 4和Opera 9)。每個人都很厭惡跨浏覽器調試,但 最好的方式是預防,從有效的HTML和良好的reset樣式表開始。就我來說,是使用* {magin:0; padding: 0}。不過,大家也可以使用其它更健壯的方式。 另外,還應了解某些浏覽器的怪癖。最著名的當然是IE家族,特別是IE6(沒錯,一直是它,依然是它)。盡管大多數問題可以歸結為臭名昭著的 haslayout bug,但你不能依賴某些笨拙的方式來解決它,例如* {zoom: 1}。
5. 圖片處理和優化
盡管大多數程序員都是靠專業的設計師來設計圖片,但懂點Photoshop對程序員來說也很重要。掌握一些圖片處理技術之後,一些小修改就不需要再踢回給設計師,直接自己改了就是,而且,在修改設計時,你還會馬上知道是否可行。 圖片優化是Photoshop技能裡對web程序員最為重要的一項。圖片的大小往往是對帶寬最大的威脅,圖片優化直接關系到網站的載入時間。 Photoshop和Illustrator的「Save for Web」選項極大地簡化了圖片優化環節,大家只需要在PC上按下Ctrl-Alt-Shift-S或在Mac上按下Command-Alt-Shift- S即可進入這一向導。
6. 使用有效的 HTML/CSS 進行頁面布局(而非表格)
我們需要重視:現在已經不是1996年了,即時是後端開發者也應該知道如何寫好前端代碼,——使用有效的 HTML 和 CSS——而非一堆表格。標記應當整潔,CSS 和其它類型的文檔應當同 HTML 分離,這樣,就不會有內聯樣式,特別是不會有 《font》 標簽。 初學者應當學學到 CSS 標簽 以及 CSS 盒子模型。然後學學 W3C規則,了解如何寫出合理的代碼 你寫的 HTML 應該符合 xHTML 規則;應該有著合理的嵌套、閉合且含有 alt 屬性信息的圖片標簽等等。然後你可以去了解那些節點能夠嵌套在其它節點中,已經其它的復雜內容。最後,你會發現 w3c 的HTML標記驗證程序 不再報錯,這樣真的很爽。
7. 版權/網絡法規的基礎
雖然無需法學學位,但開發者最好能夠對版權和網絡法規有基本的了解。 因為網頁從本質上來講,是一種出版物,而著作權則是網站最常見的法律問題。從用戶生成的盜取Flicker 圖片的內容到對紐約時報內容大段的引用,如果不想被起訴,或是收到投訴信件,你最好了解這些。當然,如果你想提起訴訟或是投遞投訴信,你也最好了解這些。 除了著作權法之外,簽訂注冊/使用主機托管或是軟件的協議時,你最好也好好看看隱私協議和 COPPA(美國兒童網路隱私保護法) 的規定。
8. Apache 重寫
Apache 的重寫功能使原本凌亂的 URL 更加整潔(只要你了解正則表達式)。你可以將難看的地址: index.php?section=about&page=bioand 重寫位更漂亮的:about/bio。 不僅限於規整 URL,使用 Apache 的 mod_rewrite 能夠很容易的將簡單的一個頁面變成包含路徑的完整應用。只需要將查詢的變量重寫為路徑即可。
同樣,你要注意: Apache 重寫也是出了名的不好調試。重寫規則無法包含任何調試信息,且常常忽略你引用的其它方法的信息。因此,重寫也會導致一些無法追蹤的錯誤。
9. 調試工具
一個好的調試器能讓你更快的進行網頁編程。 當進行前端調試時,我喜歡用 Firebug ,你可以點擊頁面上的元素,它將統計樣式表中的那些生效的設置。你可以添加或刪除樣式,同時也可以修改頁面。 Firebug 也可以用來調試 Javascript。作為 Javascript 的運行控制台,它能夠更好的組織錯誤信息,顯示 fromconsole.log() 的輸出內容。最後,它還提供網絡信息,顯示頁面元素加載事件,以及那些無法加載,無法獲取的內容。 我不知道如何進行後端調試,不過我聽說 PHP 有個叫做 xDebug 的東東。
10. 版本控制
最後但很重要的一點, 一個好的程序員應該學會控制你的版本。版本控制不僅僅是對你工作的備份的一種途徑,而且也是你跟其他開發者合作的重要方式。 我個人比較喜歡 distributed as opposed to centralized (分布式相對集中)版本控制的方式, 因為它有兩個不同層級的版本控制:你可以先將你的部分修改提交到本地存儲中心,之後將所有的更改推送到服務器端存儲。這樣允許你在本地做一個小幅度不穩定的修改,然後將團隊中的更新集中提交。 如果采用分布式的版本控制我比較看好 Mercurial, 而如果是集中是的 Subversion很不錯.