1. 程式人生 > >2017進入前端的必備資料!!~~

2017進入前端的必備資料!!~~

這裡寫圖片描述

先來個大概預覽:

  • 專案工程化
  • 發展方向
  • 職業環境
  • 總結要掌握的框架/技能

小結放在前:

  • 2017的前端與其說更殘酷,不如說更規範化,前兩年各種培訓了幾個月就出來隨口開價上萬,幾萬的新手將被市場淘汰。

  • 前端開發工具/編譯工具 逐漸成型,雖然比不上object-c, java, C+ 等排名靠前程式語言有完善的IDE環境,但是。工程化模組化的概念開始深入人心,這年頭還編寫原始HTML CSS Javascript 程式碼的,要麼就是小專案,要麼就是新手。

  • 前端的工作更具有挑戰性,方向更多樣化

假設我今年要入WEB前端開發的坑

這裡強調web前端是因為,現在很多iOS,安卓開發加入大前端的這個稱呼。主要是因為React同構的出現吧,很多開始混合在一起了。

首先我們來回顧一下我們老同學印象中的前端:

  • 老古董: PS切圖匯出
  • 新手小白: Adobe Dreamweaver 寫程式碼
  • 懶人: UltraEdit, notepad++ …

或許你精通之後隨便找個能敲字的東西就可以開始寫程式碼,但是我遇到過一個有著多年豐富經驗的前端老前輩,就是因為懶惰開啟編輯器,手寫了一段程式碼也沒有檢查,就直接提交,然後不小心敲錯字元,導致整個專案差點爛尾的事情。真正厲害的人,任何時候都應該是非常謹慎的。 請善用IDE的查錯糾錯功能。

跟以往不同,如果你今年要開始web前端的開發(下面都簡稱前端),那麼至少你是不用去折騰太多的瀏覽器相容,但並不是完全不需要去關心,只是開發環境不像以前那麼多坑,因為各種編譯器的出現。

前端面對的國內最嚴峻的挑戰是:

落後的瀏覽器版本迭代。
我拿到過國內某500強手機企業的手機,我一看自帶webkit核心,居然是2003 的 Releases 版本 webkit. 我當時是比較震驚的,畢竟安卓核心也是 4.x, 我至今不知道他們是如何做到把一個那麼舊的瀏覽器核心塞進一個比較新的安卓系統的,也不知道這麼幹是幾個意思,當然即使是高通soc基帶,要升級一下系統也是登天還難,更別說其它soc基帶。

安卓版微信在截稿之前是大概Chrome35的版本(最新是Chrome55) 並且持續了1年不變,據說是為了穩定。

UC,百度,等套殼瀏覽器大行其道,但它們呼叫的只是系統的瀏覽器核心,你別跟我說優化了載入速度什麼東西,載入速度是網路狀態、系統硬體決定的,跟你一個套殼瀏覽器有半毛錢關係?所以我不知道它們幾十兆容量到底寫了什麼東西,細思極恐。

總之,在桌面時代,我們面對的是IE6,7,8這個毒瘤, 在移動時代我們面對的是安卓這個毒瘤(限國內)

推薦兩款編輯器:

  • ATOM 目前最熱門的編輯器
  • Sublime text 良心編輯器,雖然是收費的,但不強制,偶爾提醒而已
  • vscode 基礎外掛完善但第三方外掛更新緩慢

工欲善其事,必先利其器。

前端框架的高速發展,意味著各種外掛的不斷快速迭代,那麼Dreamweaver這種半封閉式的大型工具,雖然單方面很強大,但明顯版本更新跟不上社群更新的腳步,即使我裝了最新的2017版本體驗了一下,我也覺得它無法勝任這個時代了

專案工程化

避免毫無意義的報錯

老實說,雖然前端開發工程化的概念終於開始普及,是一件好事,但事實上還是屬於初級階段,對入門新手並不友好。還不能像xcode一樣,直接建立一個工程,然後配置,然後就一條龍寫程式碼搞定,雖然 macOS 平臺有個CodeKit已經做得非常好了,但由於更新力度跟不上各種框架發展的速度,所以,也只是能參考。

現在寫前端,你起碼要建一個本地執行環境(localhost) 之類的。這是非常非常基礎的東西,請不要 再像以前那樣,雙擊HTML去預覽你寫的程式碼,有個問題我在一些群裡回答新手不止上百次: XXXXX is not allowed by Access-Control-Allow-Origin , 基本上99% 就是直接雙擊HTML導致的(剩下1%是http跨域之類的)

既然都要建立 localhost 了那麼部署 IIS , os server, 之類的,都是非常麻煩的一件事至少我覺得是。 並且還涉及到一些付費軟體之類的,成本上升不少。

得益於nodejs的發展,現在 Browsersync , webpack dev server都能快速的部署起一個工程目錄,前提是你裝了node。

前端不再直接編寫CSS,HTML,JS

雖然這個小標題寫得有點誇張,但是一個趨勢。
瀏覽器執行鐵三角:css html js,這些必須檔案,如果現有瀏覽器保持不變的話,那麼以後的工程師,獎越來越少直接編寫這些檔案, 轉而通過 編譯工具,選擇一款自己喜愛的新興語言去編寫,然後編譯成瀏覽器可以認識的鐵三角檔案,當然不排除以後瀏覽器可以直接執行 less、scss、ts 等檔案,這都是有可能的。

最有名的例子就是 jQuery 的語法被ES2015 甚至被新時代的瀏覽器吸收並內建原生支援了(以前甚至傳出瀏覽器要內建jQuery)

CSS:

現在大部分都是通過 less、scss、sass 等去編譯成普通css檔案
然後通過著名的postCSS外掛,補全各種瀏覽器字首。
舉個例子:

在less檔案我們這麼寫:

.foo {
    display: flex;
    justify-content: center;
    flex-direction: column;
    .bar {
        flex-grow: 0;
        flex-shrink: 0;
        flex-basis: auto;
        &:hover {
            color:red;
        }
    }
}

編譯出來的css是這樣:

.foo {
  display: -webkit-box;    
  display: -webkit-flex;    
  display: -moz-box;    
  display: -ms-flexbox;    
  display: flex;    
  -webkit-box-pack: center;    
  -webkit-justify-content: center;    
  -moz-box-pack: center;    
  -ms-flex-pack: center;    
  justify-content: center;    
  -webkit-box-orient: vertical;    
  -webkit-box-direction: normal;    
  -webkit-flex-direction: column;    
  -moz-box-orient: vertical;    
  -moz-box-direction: normal;    
  -ms-flex-direction: column;    
  flex-direction: column;
}

.foo .bar {    
  -webkit-box-flex: 0;    
  -webkit-flex-grow: 0;    
  -moz-box-flex: 0;    
  -ms-flex-positive: 0;    
  flex-grow: 0;    
  -webkit-flex-shrink: 0;    
  -ms-flex-negative: 0;    
  flex-shrink: 0;    
  -webkit-flex-basis: auto;    
  -ms-flex-preferred-size: auto;    
  flex-basis: auto;
}

.foo .bar:hover {    
  color: red;
}

這效率,這補全,你手寫要寫多久? 搞不好還寫漏。 所以,無論是出於對老闆給你的工資負責, 你父母給你生命負責,還是你自己對你的身體負責,都請採用編譯工具去書寫你的css,html,js。

上面是用css做例子,

還有針對 HTML 的 pug (以前叫jade), HAML
針對JS的 typescript, coffeeScript
不過這裡js我要特別說一下, 新版本的ES6,ES7,其實已經非常完美了,
語法模組化什麼的應有盡有, 然後通過著名的 Babel 編譯器,編譯成現在流行瀏覽器相容的版本即可,雖然typescript我覺得蠻不錯的,但個人覺得這個就沒必要增加團隊學習成本了,除非你個人愛好。

大型專案無法避免 MV** 工程

從 Ajax 的興起, requirejs 的新興思維模式一些專用術語就不逼逼了
隨著前端的發展,nodejs 的成熟,前後端分離勢在必行,那麼前端專案越來越複雜,一個健壯清晰的模組體系非常重要,不然隨時會把自己做蒙。

現在流行的 MV** 框架有

  • Angular 2
  • Vue.js 2.0
  • React
  • React-Native
    注:MV** 框架一般指 MVC、MVP、MVVM 這些,具體什麼意思,其實懂了也沒啥意義。

我個人看好 vue2,還有它的全家桶

這些框架,無法避免需要編譯器,需要工程目錄,需要nodejs。

Koa2, Express 我就不說了,有興趣的人自己去研究但也是後期要學的

所以現在入門,工程化你的專案,勢在必行,別嫌麻煩。當然這裡只指出路子,並不進行深入介紹,會在以後單獨一篇介紹如何開始工程化你的專案。

發展方向

前端一直有2個方向:

  • 交互向
  • 資料向

不黑不偏,交互向是非常難走的一條路。也是非常缺的。
總之,選擇一條你喜歡的路,並堅持走下去就對了。這裡說說這兩個方向今年的一些趨勢吧。

交互向

16年大熱的東西,無疑就是VR,大概在 2013年的時候,Google的工程師熱推過一波webGL,但是各種效能跟渲染問題那時候沒有完全搞定。(其實我覺得現在也沒搞定)
但無論如何 webGL 必將大熱。

就目前來說比較能繼續跟下去的就是
Three.js還有 Mozilla 搞的A-frame,
特別aframe最近動作很大,都配合 threejs 搞起webVR
但是我在這裡還是建議大家先學webGL再玩webVR.

很多人不知道怎麼沒開始webGL,確實一大堆三維矩陣演算法定點渲染一開始就能把人看暈,但是別怕,試試看 blender 這款開源建模軟體, threejs 也是有針對這款軟體的匯出外掛。 blen4web 雖然收費,但也是可以參考。

其它的庫要麼就棄,要麼就突然沒下文了。

當然技能與財力突出的朋友可以去嘗試 unity3D

小提示:儘量在手機上嘗試, 現在的 Retina 桌面顯示器…webGL真心帶不動,別說web了,原生的3D渲染在Retina顯示器上都很難,不過可以設定引數1倍渲染,只是醜了點。

順帶說一句,你以為交互向的,就不用學資料向的東西? 不要天真,該學的還是要去學,所以我說路不好走。

資料向

毫無疑問,這是應該算是大家都認同的正統路線,也是發展得非常全面的一個方向,路已經有很多前輩踏平了。各種 MV* 框架, 各種服務端node中介軟體,大前端一下子吞併了本來後端要乾的大部分工作。
前後端分離開發勢不可擋,大資料視覺化依舊是非常熱門
如果一切順利的話,這個方向的人學一下D3.js會利好升職加薪。

題外話:有個叫微信小程式的東西,大家可以作為技能提升去研究研究。

Chrome PWA 專案其實大家有時間也可以作為技能提升去看看。

    個人觀點:搞那麼多事,還不如做好 Add to homescreen 的功能。有時候真感概Chrome在國內真不接地氣。

職業環境

現階段就業環境其實非常合適入門前端,掃清了微軟三大毒瘤 瀏覽器(淘寶率先不支援IE8 ,幹得漂亮), 即使在移動端webkit核心不是很完美的情況下,你依舊可以書寫出很多你要的web效果,反正老版本的核心的那部分客戶物件,根本不能給你帶來任何利潤,不如直接放棄。因為只有最新技術才能給你帶來利益,成就感。

前端各種工具也漸漸給前端開發帶來便利,雖然前期部署起來確實麻煩,但試問一下,你連這點耐心都沒有,我實在看不到你的未來在哪。

然後我們要面對的,也是一個不可抗力因素,我這裡不是慫恿你們幹什麼事,有時候一些封鎖,錯誤的封掉了一些學習資料。這個請自己務必不要放棄,找方法突破封鎖,我就舉個例子,假設你要用 npm 安裝 node 模組。那麼首要面對的問題就是某些不可抗力的封鎖,還有運營商的QoS限制,有些朋友向我推薦 yarn, 我親身試過,也是被封得一塌糊塗。

這裡我覺得可以曲線用npm, 非常感謝淘寶 fork 了一份 npm。 稱之為 cnpm, 他們的網址是 npm.taobao.org 具體使用方法我不多講自己看。

然而有時候這並不能滿足我們的需求,例如命令列下的一些操作。

假設你有 SS 這種梯子。
那麼你可以在命令列下做一些臨時的 proxy 設定:
MacOS 終端(假設你梯子的埠是1087):

export http_proxy="http://127.0.0.1:1087"
export https_proxy="http://127.0.0.1:1087"

Windows 命令列(同樣假設你的埠如下):

set http_proxy=http://127.0.0.1:1080
set https_proxy=http://127.0.0.1:1080

然後就可以愉快地 $ npm xxxxx… 或者 ATOM 的升級 package 也能這麼幹。

題外話:ATOM升級package不順利的話,用這個方法然後命令列

    apm install [packagename]

總結:掌握的框架 / 技能

  1. 要會部署nodejs環境
    • webpack
    • babel
    • gulp
    • postCSS的外掛
  2. CSS:Less, scss
  3. HTML:pug, haml (可選)
  4. Javascript: ES6, ES7
  5. WebComponents (可選)
  6. Vue.js / React (反正掌握一款MV** 框架是必要的)

對了還有即將大熱的 hotfix, 代表作有:阿里熱修復技術,據說餓了麼,騰訊也出了。沒去關注,但我個人覺得這個 apple 不會坐視不理的,畢竟你可以隨時服務端修改APP繞過稽核,這種外道招數我覺得可以學學但不要認真。

其它:

Angular 2 被小編你吃了?
Angular 3 開發組告訴我,你又得像 ng1 轉 ng 2 一樣, 從頭學一次。 so…你們玩得開心就好,真的,我的專案連平滑升級都做不到,我真心沒辦法陪你們玩。

jQuery 要死了? 要死了啊!?
哥,穩住。不會死,即使死了,也是融入到原生支援,如果你要從jQuery過度到原生,叔叔推薦網址你去學,別怕:

svg不可少,

sketch 是神器,

webGL 見仁見智,但是自從2016年第二、三季度,各大科技巨頭公司都在技術積累,你懂的。但真心不強求。

然後就是把資料向的也學了。

相關推薦

2017進入前端必備資料~~

先來個大概預覽: 專案工程化 發展方向 職業環境 總結要掌握的框架/技能 小結放在前: 2017的前端與其說更殘酷,不如說更規範化,前兩年各種培訓了幾個月就出來隨口開價上萬,幾萬的新手將被市場淘汰。 前端開發工具/編譯工具 逐漸成型,雖然

入門大資料行業必備的十大基礎

現在由於人工智慧的大熱,這方面的人才稀缺,薪資水平不用說,行業中的NO.1,所以各路人馬紛紛集結網際網路行業,有轉行的,有轉崗的。對於初學者在學習這方面肯定有許多疑問,是什麼疑問呢,我在這裡一 一給你解答。 推薦下小編的大資料學習群;251956502,不管你是小白還是大牛,小編我都歡迎,不定期

資料必備的那些技術

大資料是對海量資料進行儲存、計算、統計、分析處理的一系列處理手段,處理的資料量通常是TB級,甚至是PB或EB級的資料,這是傳統資料處理手段所無法完成的,其涉及的技術有分散式計算、高併發處理、高可用處理、叢集、實時性計算等,彙集了當前IT領域熱門流行的IT技術。 想要學好大資料需掌握以下技術: 1

實用VUE 開發外掛前端必備

element - 餓了麼出品的Vue2的web UI工具套件 Vux - 基於Vue和WeUI的元件庫 mint-ui - Vue 2的移動UI元素 iview - 基於 Vuejs 的開源 UI 元件庫 Keen-UI&nbs

Web前端必備基礎知識點,百萬程式設計師:牛逼

因為要告知瀏覽器的解析器用什麼文件標準解析這個文件,所以在文件的開頭要寫上文件型別宣告,H5的文件型別宣告要比H4文件型別宣告簡潔的多。因為H5不基於SGML(標準通用標記語言),所以不需要對DTD文件型別定義)進行引用,但是H4是基於SGML,必須對DTD進行引用。H4的三種文件型別宣告是:過渡模式,嚴格模

Web前端必備基礎知識點,百萬程序員:牛逼

cati 後退 gecko 簡單的 開頭 存儲 搜狗 ofo 插件 因為要告知瀏覽器的解析器用什麽文檔標準解析這個文檔,所以在文檔的開頭要寫上文檔類型聲明,H5的文檔類型聲明要比H4文檔類型聲明簡潔的多。因為H5不基於SGML(標準通用標記語言),所以不需要對DTD文檔類型

推薦一款Python開源庫,技術人必備的造資料神器

# 1. 背景 在軟體需求、開發、測試過程中,有時候需要使用一些測試資料,針對這種情況,我們一般要麼使用已有的系統資料,要麼需要手動製造一些資料。由於現在的業務系統資料多種多樣,千變萬化。在手動製造資料的過程中,可能需要花費大量精力和工作量,此項工作既繁複又容易出錯,比如要構造一批使用者三要素(姓名、手機

重磅福利機器學習和深度學習學習資料合集

best from pytho robert article 我會 you sandbox lob 比較全面的收集了機器學習的介紹文章,從感知機、神經網絡、決策樹、SVM、Adaboost到隨機森林、Deep Learning。 《機器學習經典論文/survey合

前端網站資源精編

beta windows example json數據 kit 前端工程師 ipp gen efi 不要吝嗇你的贊美喜歡就點個贊 目錄: 1-------- 走進前端2-------- jQuery3-------- CSS4-------- Angularjs5---

年度必選:2017微軟技術暨生態大會

新興 重要 2017年 left 新技術 pan 聚集 don 平臺 這是微軟中國年度最盛大的科技峰會 這是微軟技術大會與合作夥伴大會的首次聯袂 這也是聚集眾多IT大咖的技術狂歡派對 不管你是關心企業轉型的業務決策者 還是緊跟技術趨勢的技術決策者 亦或是致力於激發澎湃動力的

SQL Server 2017 正式發布:同時支持 Windows 和 Linux(現在看下來,當年那德拉的“雲優先,移動優先”是有遠見的,而且是有一系列的措施和產品相配合的,只是需要一點時間而已。真是佩服!!

suse 中新 新的 ada 開發 tap 安全性 adding 互連 微軟在去年 3 月首次對外宣布了 Linux 版的 SQL Server,並於今年 7 月發布了首個公開 RC 版。前幾日在美國奧蘭多召開的微軟 Ignite 2017 大會上,微軟宣布 SQL Ser

【BZOJ5109】[CodePlus 2017]大吉大利,晚上吃雞 最短路+拓撲排序+DP

image truct getc https 絕地求生 我們 mes iterator == 【BZOJ5109】[CodePlus 2017]大吉大利,晚上吃雞! Description 最近《絕地求生:大逃殺》風靡全球,皮皮和毛毛也迷上了這款遊戲,他們經常組隊玩

哈理工-14級-大一到大四 (課程設計 + 實驗報告 + 自學視頻教程書籍 + 課件 + 作業 + 考試 復習資料) 應有盡有,雖然有過時的東西,但相信我,絕對有幹貨

課程設計 nbsp 分享圖片 一課 class clas pos 報告 設計 歡迎學弟學妹們騷擾我哦,有需要的請留言私我哦!!! 聽說你不信, 來個栗子??,先:::上圖 大一課程: 大二課程: 大三課程: 哈理工-14級-大一到大四 (課程設計 +

Bzoj5109: [CodePlus 2017]大吉大利,晚上吃雞

check class strong vector pre != truct count() href 題面 傳送門 Sol 先正反兩遍\(Dijsktra\)算出經過某個點的\(S\)到\(T\)的最短路條數\(F\) 滿足條件一就是要滿足\(F(A)+F(B)=F(T)

唐宇迪-機器學習/深度學習 系列課程福利大發送不單優惠 還送機器學習必備實戰書籍

機器學習 深度學習 人工智能 決勝AI就在今天 Hi同學們,給大家推薦一本機器學習的入門佳品:機器學習實戰。這本書可以說是我看過最通俗易懂的機器學習書籍了,並沒有上來直接闡述一些看著就頭疼的各種數學公式,而是以實際案例為出發點一步步帶領大家完成各個算法的建模與練習,人工智能必備No.1! 福利

Java程序員漲薪必備技能(1-5年必看

jvm調優 一起 虛擬化 工作 nag 中國互聯網 18C 後端 如何 工作1-5年,當我們向老板提出加薪的時候,或者跳槽去“撿”offer的時候,我們底氣夠嗎?敢不敢不給漲薪就“揮一揮衣袖,不帶走一個bug”?是不是提出要求後你的主管、經理立刻同意,為了把你留住。然而,現

史上最全Python從入門到資深書籍資料分享

暢銷書 jpeg 集成 mar sha 鞏固 技能 ima 能力 今天我來為大家分享十本不可錯過的Python好書,分別適合入門、進階到精深三個不同階段的人來閱讀。 Python高性能編程 Amazon 五星暢銷書。 Python 入門進階必讀。 Python代碼僅僅能夠

前端課程大集結51cto 1024程序員節大放送,通過以下鏈接購買,可享受附加前端問題答疑服務

交互 系統 後臺 教程 基礎 ESS 前端 js入門基礎 視頻課程 http://edu.51cto.com/sd/459c1 HTML5開發APP-框架MUI(仿支付寶案例)http://edu.51cto.com/sd/26227 NodeJS基礎、Express實戰視

程式設計師面試掌握這些,進入BAT不是夢

首先,五年左右,應該算高階開發工程師,大部分面試不用去做題,背string和stringbuilder區別的,幾乎都是底層和遠離,分散式等。雖然一個程式設計師,在工作中大部分還是寫流水程式碼,增刪查改。 1 JVM 這個大公司基本都會問,記憶體模型,GC,jvm都有哪些區域?棧楨存了什

js裡的sort()對json資料(某一欄位)進行排序,超實用

首先來看一下接口裡的資料,對哪一資料進行操作 { "hourList": [{ "DATA_DATE": "00", "USE_SUM": 9.58 }, { "DATA_DATE": "03", "USE_SUM": 23.18 }, { "DATA_DATE": "