【初學者必讀】:前端工程師的知識體系

下圖是前端工程師圖解:

前端開發的核心是HTML + CSS + JavaScript。本質上它們構成一個MVC框架,即HTML作為信息模型(Model),CSS控制樣式(View),JavaScript負責調度數據和實現某種展現邏輯(Controller)。

HTML


1.標簽的分類

  • 標簽表示一個元素

  • 按性質劃分: Block-Level和Inline-Level

  • 按語義劃分:

Headings: h1, h2, h3, h4, h5, h6Paragraphs: pText Formatting: em, strong, sub, del, ins, smallLists: ul, li, ol, dl, dt, ddTables: table, thead, tbody, tr, th, tdForms and Input: form, input, select, textareaOthers: div, span, a, img,?HTML5: header, footer, article, section

2.XHTML

XHTML 于2000年的1月26日成為 W3C 標準。W3C 將 XHTML 定義為最新的HTML版本。XHTML 將逐漸取代 HTML。XHTML是通過把 HTML 和 XML 各自的長處加以結合形成的。XHTML 語法規則如下:

  • 屬性名和標簽名稱必須小寫

  • 屬性值必須加引號

  • 屬性不能簡寫

  • 用 Id 屬性代替 name 屬性

  • XHTML 元素必須被正確地嵌套

  • XHTML 元素必須被關閉

3.標簽的語義化為表達語義而標記文檔,而不是為了樣式,結構良好的文檔可以向瀏覽器傳達盡可能多的語義,不論是瀏覽器位于掌上電腦還是時髦的桌面圖形瀏覽器。結構良好的文檔都能向用戶傳達可視化的語義,即使是在老的瀏覽器,或是在被用戶關閉了 CSS 的現代瀏覽器中。同時結構良好的HTML代碼也有助于搜索引擎索引你的網站。(web前端學習交流群:328058344 禁止閑聊,非喜勿進!)

  • 不要使用table布局,table是用來表格顯示的。

  • 不要到處濫用div標簽,div是用來分塊用的

  • 不要使用樣式標簽,如font, center, big, small, b, i,樣式可以用CSS來控制,b和i可以用strong和em來代替。

  • 不要使用換行標簽和空格來控制樣式,請用CSS。

  • 盡量不要使用內聯CSS

CSS

1.基礎

  • 層疊和繼承

  • 優先級

  • 盒模型

  • 定位

  • 浮動

2.進階

  • CSS Sprite:CSS Sprite主要用于前端性能優化的一種技術,原理是通過將多張背景圖片合成在一張圖片上從而減少HTTP請求,加快載入速度。

  • 瀏覽器兼容性:絕大部分情況下我們需要考慮瀏覽器的兼容性,目前正在使用的瀏覽器版本非常多,IE6, IE7, IE8, IE9, IE10, Chrome, Firefox, Safari。

  • IE HasLayout和Block Format Content:IE HasLayout是一個 Internet Explorer for Windows的私有概念,它決定了一個元素如何顯示以及約束其包含的內容、如何與其他元素交互和建立聯系、如何響應和傳遞應用程序事件、用戶事件等。這種渲染特性可以通過某些 CSS 屬性被不可逆轉地觸發。而有些 HTML 元素則默認就具有”layout”。目前只有IE6和IE7有這個概率。BFC是 W3C CSS 2.1 規范中的一個概念,它決定了元素如何對其內容進行定位,以及與其他元素的關系和相互作用。這個其實和瀏覽器的兼容性有關,因為絕大部分的兼容性問題都是它們引起的。(web前端學習交流群:328058344 禁止閑聊,非喜勿進!)

  • CSS Frameworks:CSS框架是一系列CSS文件的集合體,包含了基本的元素重置,頁面排版、網格布局、表單樣式、通用規則等代碼塊,用于簡化web前端開發的工作,提高工作效率。目前常見框架有:

960 Grid System?
Blueprint CSS?
Bluetrip?
Minimum Page

還是一個比較出名和特殊的框架是Twitter的Bootstrap。Bootstrap是快速開發Web應用程序的前端工具包。它是一個CSS和HTML的集合,它使用了最新的瀏覽器技術,給你的Web開發提供了時尚的版式,表單,buttons,表格,網格系統等等。它是基于Less開發的。不支持IE6,在IE7和IE8里效果也不咋地。

CSS3:

雖然CSS3還沒有正式成為標準,但是包括IE9+, chrome, Firefox等現代瀏覽器都支持CSS3。CSS提供了好多以前需要用JavaScript和切圖才能搞定的功能,目前主要功能有:

圓角?
多背景?
@font-face?
動畫與漸變?
漸變色?
Box陰影?
RGBa-加入透明色?
文字陰影

  • CSS性能優化:CSS 代碼是控制頁面顯示樣式與效果的最直接“工具”,但是在性能調優時他們通常被 Web 開發工程師所忽略,而事實上不規范的 CSS 會對頁面渲染的效率有嚴重影響,尤其是對于結構復雜的 Web 2.0 頁面,這種影響更是不可磨滅。所以,寫出規范的、高性能的 CSS 代碼會極大的提高應用程序的效率。

  • LESS and SASS:CSS 預處理器,用來為 CSS 增加一些編程的的特性,無需考慮瀏覽器的兼容性問題,例如你可以在 CSS 中使用變量、簡單的程序邏輯、函數等等在編程語言中的一些基本技巧,可以讓你的 CSS 更見簡潔,適應性更強,代碼更直觀等諸多好處。SASS基于Ruby開發。LESS既可以在客戶端運行,也可以借助Node.js或者Rhino在服務端運行。

javascript


1.基礎

  • 數據類型

  • 變量

  • 表達式與運算符

  • 控制語句

  • 函數

  • 異常

  • OO

  • 事件

  • BOM

  • 閉包

2.進階

  • DOM:DOM即文檔對象模型,HTML DOM 定義了訪問和操作HTML文檔的標準方法。幾乎所有的現代瀏覽器都能很好的支持DOM了。

  • JSON:(JavaScript Object Notation) 是一種輕量級的數據交換格式,易于人閱讀和編寫,同時也易于機器解析和生成。是目前事實上數據交換的標準格式,幾乎所有語言都支持JSON,比XML強太多了。

  • AJAX:即“Asynchronous JavaScript and XML”(異步JavaScript和- XML),AJAX并非縮寫詞,而是由Jesse James Gaiiett創造的名詞,由Google發揚光大。用于創建更好更快以及交互性更強的 Web 應用程序的技術。

  • JavaScript Frameworks:極大簡化我們JavaScript編程的工作量,它主要提供了以下幾個主要功能: DOM操作,跨瀏覽器兼容性,以及程序架構。當然像jQuery它本身其實并不是一個框架,它是一個庫(lib)。目前主流的框架或庫有如下幾個:

jQuery?
YUI?
DOJO

  • HTML5:同CSS3類似,即雖然沒有成為標準,但是主流的瀏覽器都支持了。HTML5不是HMTL,雖然也提供了一些新標簽,但是它的主要用途還是JavaScript。HTML5主要提供以下功能:

本地音頻視頻播放?
Canvas/SVG?
地理信息?
硬件加速?
本地運行?
本地存儲?
從桌面拖放文件到瀏覽器上傳?
語義化標簽,Form表單

  • 前端模板:主要是為了解決復雜的數據拼接問題,可以將模板語言轉換化為HTML結構,可以大大簡化工作量,同時代碼的可維護性得到很大的提高。目前比較主流前端模板有:

MustCache?
JsRender

  • 前端MVC:Web應用的功能越來越強,Javascript代碼也越來越多,大量的JS代碼要以何種架構來組織就成了一個亟待解決的問題,于是就有人把傳統的MVC架構移植到前端來解決這些問題。目前主流前端MVC框架主要有以下這些:?
    (web前端學習交流群:328058344 禁止閑聊,非喜勿進!)

Backbone.js?
Spine?
YUI?
Agility.js?
Ember.js?
Batman.js?
Dojo?
AngularJS(MVVM)?
KnockoutJS(MVVM)

  • 模塊化開發:特點是“模塊化開發,按需加載“。這其中CommonJS組織定義了AMD的規范用來規范瀏覽器端的模塊定義。RequireJS和SeaJS是實現了AMD的兩個優秀的框架。詳見:http://www.weakweb.com/articles/341.html

  • JavaScript單元測試:QUnit

  • JavaScript設計模式

  • NodeJS:把JavaScript移植到服務器端了,這樣前端和后端就可以使用同樣的技術,方便統一開發。而且NodeJS是非阻塞調用的,在特定領域性能是非常強勁的。而且這是前端開發人員進軍后臺開發的好機會,進而前后端統一開發,但又不用去學習其它后臺開發語言。

  • ES5:ECMAScript 5,也就是最新的JavaScript規范,對之前的JavaScript作了很多改進,增加了好多新的特性,比如JSONECMAScript 5,也就是最新的JavaScript規范,對之前的JavaScript作了很多改進,增加了好多新的特性,比如JSON。

Others


  • 響應式設計:伴隨著各種智能設備的流行,響應式設計現在是非常火熱。以前做網頁只要面向PC機的瀏覽器,頁面直接固定寬度就行,比如960px,而現在通過手機的訪問量已經超過PC機,并且設備的尺寸多種多樣,未來會更多。在這種背景下,網頁支持所有設備進行訪問是基本要求了,而響應式設計能很好的解決這些問題。

  • Http1.1:GET,POST方式,Request/Response 頭部,狀態碼等。

  • Web移動開發:開發方式一般是native的方式或者Web方式,作為前端開發人員來說自然是去學習Web移動開發了。PhoneGap是必學的,前端層面的框架如jQueryMobile, Sencha Touch, jQTouch等都是不錯的選擇。

  • 前端安全:隨著前端技術的發展,安全問題已經從服務器悄然來到了每一個用戶的的面前,盜取用戶數據, 制造惡意的可以自我復制的蠕蟲代碼,讓病毒在用戶間傳播,使服務器當掉. 更有甚者可能會在用戶不知覺得情況下,讓用戶成為攻擊者,這絕對不是駭人聽聞。富客戶端的應用越來越廣,前端的安全問題也隨之增多。常見的攻擊方法有:

  • XSS,跨站腳本攻擊(Cross Site Script)。它指的是惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入的惡意html代碼會被執行,從而達到惡意用戶的特殊目的。
  • CSRF(Cross Site Request Forgery),跨站點偽造請求。顧名思義就是 通過偽造連接請求在用戶不知情的情況下,讓用戶以自己的身份來完成攻擊者需要達到的一些目的。
  • cookie劫持,通過獲取頁面的權限,在頁面中寫一個簡單的到惡意站點的請求,并攜帶用戶的cookie 獲取cookie后通過cookie 就可以直以被盜用戶的身份登錄站點。
  • 跨域處理:同源策略規定跨域之間的腳本是隔離的,一個域的腳本不能訪問和操作另外一個域的絕大部分屬性和方法。所謂的跨域處理就是處于不用域之間的腳步互相調用,目前有很多方法來處理它。

  • 調試工具:前端的調試工具很多,比如Firebug,Webkit核心的web inspector, IE的iedeveloper。HTTP相關的fiddler, httpwatch等,還有格式化代碼的jsbeatutifier,它有助于閱讀壓縮處理過的JavaScript代碼。IETester可以模擬所有的IE版本,是調試IE兼容性的好工具。

  • SEO:搜索引擎優化

  • A/B test:確定兩個元素或版本(A和B)哪個版本更好,你需要同時實驗兩個版本。最后,選擇最好的版本使用。

  • 可用性/可訪問性:

  • 可用性指的是:產品是否容易上手,用戶能否完成任務,效率如何,以及這過程中用戶的主觀感受可好,是從用戶的角度來看產品的質量。可用性好意味著產品質量高,是企業的核心競爭力。
  • 可訪問性:上網用戶中那些視力受損的人,通過屏幕閱讀器使用鍵盤命令將網頁的內容讀給他們聽。以語義化的HTML(結構和表現相分離的HTML)編寫的網頁文件,就可以讓此類用戶更容易導航,且網頁文件中的重要信息也更有可能被這些用戶找到。
  • 前端流程/部署:Grunt,Bower和Yeoman現在幾乎是前端最流行的自動化的項目構建工具

  • 正則表達式

  • 瀏覽器插件開發
  • 瀏覽器原理

溝通能力

優秀的前端工程師需要具備良好的溝通能力,因為你的工作與很多人的工作息息相關。在任何情況下,前端工程師至少都要滿足下列四類客戶的需求。?
(web前端學習交流群:328058344 禁止閑聊,非喜勿進!)

  • 產品經理——這些是負責策劃應用程序的一群人。他們能夠想象出怎樣通過應用程序來滿足用戶需求,以及怎樣通過他們設計的模式賺到錢(往往事與愿違)。一般來說,這些人追求的是豐富的功能。

  • UI設計師——這些人負責應用程序的視覺設計和交互模擬。他們關心的是用戶對什么敏感、交互的一貫性以及整體的好用性。他們熱衷于流暢靚麗但并不容易實現的用戶界面,但考慮問題往往不周全。

  • 項目經理——這些人負責實際地運行和維護應用程序。項目管理的主要關注點,無外乎正常運行時間(uptime)——應用程序始終正常可用的時間、性能和截止日期。項目經理追求的目標往往是盡量保持事情的簡單化,以及不在升級更新時引入新問題。

  • 最終用戶——當然是應用程序的主要消費者。盡管我們不會經常與最終用戶打交道,但他們的反饋意見至關重要;沒人想用的應用程序毫無價值。最終用戶要求最多的就是對個人有用的功能,以及競爭性產品所具備的功能。

從某種意義上說,優秀的前端工程師就像是一位大使,需要時刻抱著外交官的心態來應對每一天的工作。

如何提高前端技術

  • Github是一個優秀的代碼托管網站,我們可以在上創建我們個人的項目,同時也是學習的好地方,我們可以關注其它優秀的項目。JSFiddle是一個web開發人員的練習場,一個可以在很多方面應用的工具。我們可以用他來在線編輯一些HTML,CSS,javascript片段。你編輯的代碼可以與其他人分享,或嵌入你的博客等
  • 閱讀優秀的開源代碼
  • 關注技術發展趨勢,了解最新的行業技術,可以通過訂閱知名博客,閱讀技術新聞獲取
  • 寫博客/記筆記,可以進行知識積累。

前端修煉之路

入門:打基礎同時能參與到項目中去。

  • HMTL & XHTML
  • CSS基礎知識
  • JavaScript基礎知識
  • DOM
  • JSON
  • AJAX
  • JavaScript Frameworks

深入:掌握前端核心技術,可以獨立干活。

  • HTML5標簽,TML標簽語義化
  • CSS Sprite
  • 瀏覽器兼容性
  • IE HasLayout和Block Format Content
  • CSS3
  • 精通JavaScript Frameworks
  • HTML5
  • 前端模板
  • 前端MVC
  • 模塊化開發
  • Http1.1
  • 調試工具
  • 正則表達式
  • 響應式設計

潛出:把握整個前端項目,做整個前端項目的架構師。

  • CSS性能優化
  • LESS and SASS
  • JavaScript單元測試
  • JavaScript設計模式
  • NodeJS
  • ES5
  • Web移動開發
  • 瀏覽器插件開發
  • 前端安全
  • 跨域處理
  • SEO
  • A/B test
  • 可用性/可訪問性
  • 前端流程/部署
  • 瀏覽器原理

出師:一代宗師。

  • 不停的學習新的技術
  • 交互設計能力,管理能力

前端的未來

    • 走技術流路線,即深入研究前端相關的各項技術,比如瀏覽器原理,JavaScript本身的研究,W3C各種標準等。前端技術發展很快,各種新技術層出不窮,這條路走下去是很累的。

    • 往交互設計方向走,前端工程師做到一定程度后交互設計能力也會得到很大的提高,對整個信息架構的把握能力也會更強。可以很好的彌補視覺設計師在交換設計上的不足。這條路其實和第一條是不沖突的,甚至可以理解為同一條路。

    • 往后走,即去學習后臺開發的技術,比如JAVA/PHP等,其實絕大部分傳統的后臺開發人員就是這個狀態,即前后臺都做。個人認為這樣的話其實已經走回老路了,畢竟前端就是從原來的后臺開發那里獨立出來的。

    • 往管理方向,比如項目經理,或者干脆轉行,比如公務員等。

轉載于:https://www.cnblogs.com/qianduantuanzhang/p/7772071.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540386.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540386.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540386.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[轉載] Java面試題大全(2020版)

參考鏈接: Java中的循環 發現網上很多Java面試題都沒有答案,所以花了很長時間搜集整理出來了這套Java面試題大全,希望對大家有幫助哈~ 本套Java面試題大全,全的不能再全,哈哈~ 博主已將以下這些面試題整理成了一個…

使用Prometheus監控Cloudflare的全球網絡

Matt Bostock在SRECON 2017歐洲大會的演講中,介紹了如何使用Prometheus實現對CloudFlare分布于全球的架構和網絡的監控。Prometheus是一種基于度量進行監控的工具,CloudFlare是一家CDN、DNS和DDoS防御(Mitigation)服務提供商。\\基…

[轉載] Java-forEach增強for循環是值傳遞規則詳解

參考鏈接: Java中的for-each循環 1. 引入 正如Java語法意義,變量的傳遞只有值傳遞,雖然變量分為引用變量和基本類型變量,前者更像C中的地址概念。 在學習Lambda表達式的時候,遇到了試圖在增強for循環中對原鏈表元素重…

開始吧

2019獨角獸企業重金招聘Python工程師標準>>> 寫C三年有余,在技術方面也算小有所成。準備在這里分享一些C進階、Python、Golang技術文章。 CSDN博客地址: http://blog.csdn.net/godmaycry 以后博客同步更新。 轉載于:https://my.oschina.net/u…

[轉載] 常用應屆生Java開發筆試面試題(更新中)

參考鏈接: Java中的循環的重要事項 Java開發面試題 Java基礎篇Java8大基本數據類型Java的三大特性面向對象如果讓你推銷一款Java產品,你會怎么推銷呢?(java的特點)JVM與字節碼JDK與JREStringBuilder和StringBuffer的區…

java/javascript 時間操作工具類

一、java 時間操作工具類 import org.springframework.util.StringUtils;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List;/*** 時間操作工具類** author zwq**/ public …

[轉載] java語言程序設計-基礎篇

參考鏈接: Java中的決策制定(if,if-else,switch,break,continue,jump) 第1章,計算機、程序和Java概述 包括【每個java初學者都應該搞懂的問題】 http://blog.csdn.net/haobo920/article/detai…

Exchange server 2013(十四)WSUS部署及組策略設置(2)

我們繼續上一節未完的博客,繼續我們的WSUS設置。[上一章節標題:Exchange server 2013(十四)WSUS部署及組策略設置(1) 網址:http://1183839.blog.51cto.com/blog/1173839/1182366] 首先單擊自動審批,來修改審批規則,也就是說當wsus偵測到新的更…

[轉載] Python中的switch語句的替代品

參考鏈接: Java中的switch語句 Python 中沒有 switch語句。 一般用if-else 語句可以替代switch語句,今天學習了使用字典的映射來代替switch語句。Mark一下 day 8; def get_sunday(): return sunday def get_monday(): return monday def get_tues…

“□” 表情無法在 Android 設備顯示? 快試試 EmojiCompact 表情兼容庫

有了支持庫 v26 下的 Compact 庫,基于 API 19 及更高版本開發的應用就能獲得 emoji 的向下兼容,再也不會看到顯示失敗的 “豆腐塊” 啦。如要使用 EmojiCompact,需要在應用啟動時通過下載或者打包字體來初始化庫。通過集成小插件,…

[轉載] jstl獲取Parameter參數及switch使用

參考鏈接&#xff1a; Java中的字符串使用switch <% taglib uri"/WEB-INF/tld/c.tld" prefix"c" %> param 獲取 Parameter參數 <c:choose> <c:when test"${empty param.name}"> Please enter your name. …

syslinux 制作多系統啟動U盤

syslinux 制作多系統啟動U盤標簽&#xff1a;u盤使用 syslinux 制作多系統啟動U盤 syslinux 能加載虛擬內存盤&#xff0c;能引導各種鏡像文件&#xff0c;適合用于制作多系統啟動U盤&#xff0c; 但是我按照網上說的步驟&#xff0c;總是不能制作成功&#xff1a; 1. 格式化…

[轉載] JAVA基礎----java中E,T,?的區別?

batch_size 1 layout "NHWC" target tvm.target.Target("cuda") dtype "float32" log_file "%s-%s-B%d.json" % (network, layout, batch_size)

用MATLAB結合四種方法搜尋羅馬尼亞度假問題

選修了cs的AI課&#xff0c;開始有點不適應&#xff0c;只能用matlab硬著頭皮上了&#xff0c;不過matlab代碼全網僅此一份&#xff0c;倒有點小自豪。 一、練習題目 分別用寬度優先、深度優先、貪婪算法和 A*算法求解“羅馬利亞度假問題”。具體地圖我這里不給出了&#xff0c…

[轉載] Java中文與ASCII碼的轉換

參考鏈接&#xff1a; 擴展Java中的原始轉換 今天在研究Java中編碼的時候&#xff0c;看到了Java中ascii碼的強大。寫了一個CoderUtils.java&#xff0c;以后會擴展它。 package com.xingxd.study.test; import java.io.File; import java.io.FileWriter; import java.io.I…

[轉]Paul Adams:為社交設計

為社交設計 Strong, Weak, and Temporary Ties by Paul Adams on 2010/04/09 PS&#xff1a;作者Paul Adams Facebook全球品牌體驗總監 電話和手機聚集十億用戶用了15年的時間&#xff0c;而Facebook只用了9個月。我們看到越來越多的人開始用在線社交網絡&#xff0c;這種網絡好…

[轉載] Java中日期格式轉換

參考鏈接&#xff1a; Java中的類型轉換和示例 Code: /** * 字符串轉換為java.util.Date<br> * 支持格式為 yyyy.MM.dd G at hh:mm:ss z 如 2002-1-1 AD at 22:10:59 PSD<br> * yy/MM/dd HH:mm:ss 如 2002/1/1 17:55:00<br> * yy/MM/dd HH:…

Android Framework中的Application Framework層介紹

Android的四層架構相比大家都很清楚&#xff0c;老生常談的說一下分別為&#xff1a; Linux2.6內核層&#xff0c;核心庫層&#xff0c;應用框架層&#xff0c;應用層。我今天重點介紹一下應用框架層Framework。 Framework層為我們開發應用程序提供了非常多的API&#xff0c;我…

[轉載] java注釋

參考鏈接&#xff1a; Java注釋 Java注釋 java中注釋有三種&#xff1a;這些都稱之為java doc標記&#xff0c;含義如下&#xff1a; java中注釋有三種&#xff1a; 單行注釋 //注釋的內容&#xff0c;多行注釋 /…注釋的內容…/&#xff0c;文檔注釋 /**…注釋的內容….*/。…

環路是怎樣形成的實例

環路是怎樣形成的一個由十多臺交換機組成的小型局域網&#xff0c;交換機大多是Cisco的中低端系列產品。某日突然出現問題&#xff1a;局域網內的主機之間相互ping時&#xff0c;都出現延時長、丟包現象&#xff0c;網絡應用奇慢無比。 觀察交換機設備&#xff0c;指示燈看不出…