成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

寫給想做前端的你

JerryWangSAP / 2017人閱讀

摘要:不過細想想,我郵只有前端的選修課啥的,課程也不是那么就業(yè)導向。至少目前,很少有大公司完全把作為前后端通用的技術(shù)棧。不能把簡單看做是在服務(wù)端的延展。編譯這個思想在前端領(lǐng)域很重要不改變現(xiàn)有的語言環(huán)境同時進行最佳的工程實踐。

P.S. 噴神請繞道,大神勿噴,不引戰(zhàn),不攻擊,不鉆牛角尖。

大二時第一次接觸前端。許多同學估計都想過要做一個網(wǎng)站,大部分又是從PHP開始的(誰讓它是世界上最好的語言呢)。后端語言參與渲染HTML一直很主流,跟著教程做,你會寫一堆樣式表,到后來也許是需要在提交表單時進行客戶端驗證,你開始寫一些JS。
想做個網(wǎng)站啥的(以前app沒有那么多),必須要學會HTML、CSS、JS,HTML構(gòu)造結(jié)構(gòu),CSS表現(xiàn)樣式,JS決定行為。JS似乎充滿奇技淫巧,可以做各種效果啊,飛雪花片啊,搞咱們選課、評老師的網(wǎng)站啊。

后來接觸了jQuery,用起來無比順手,特別是看完《DOM編程藝術(shù)》以后。那段時間擔心JS掌握得不好,心想總是用jQuery以后不會寫Native怎么辦?也會關(guān)注“可以直接學習jQuery嗎”這樣一些問題。學習了Ajax后又做過瀑布流圖片墻,覺得無比興奮。不過認識也僅僅停留在異步加載局部更新DOM可以創(chuàng)造更好地用戶體驗。

實習期間,看到公司前端做雪碧圖、切片、搞div、css布局,然后花很多時間在瀏覽器兼容的問題的調(diào)試上。尤其是活動頁面,寫HTML、CSS基本占到工程的80%,JS寫起來很快。后來Bootstrap逐漸流行起來,后端同學可以直接寫后臺,甚至都不需要前端和射雞師了。加點柵格,加幾個類,輪播組件啥的樣樣有,再引入jQuery,前端便成為了順帶做的事了。

我接觸前端的過程沒有系統(tǒng)性,充滿了探(瞎)索(搞),也缺少引導。不過細想想,我郵只有前端的選修課啥的,課程也不是那么就業(yè)導向。就像論壇里的同學,自己搞,自己提升。

我們把上面這些點提取出來:HTML、CSS、JS、jQuery、Bootstrap,再刷刷題,看看基礎(chǔ)知識,基本就可以參加校招了。

那些求入門、求實習、趕春招、趕秋招的同學一定來得及:不過潑一盆冷水,進入大公司只是開始,你的認識、習慣、思維方式最終會決定你事業(yè)或者專業(yè)的高度。

面對新技術(shù)我覺得了解它為什么產(chǎn)生,解決什么問題,會怎么發(fā)展,如何在現(xiàn)有的工程中進行實踐,比討論它們的優(yōu)劣更有意義:

首先 html5 不是一個新技術(shù),而是在現(xiàn)代瀏覽器中使用CSS 3等特性進行前端開發(fā)的過程。以前我們更關(guān)注瀏覽器的差異性,而現(xiàn)代的瀏覽器對標準的支持越來越統(tǒng)一。

回到j(luò)Query,在web app中使用越來越少了,一方面這個庫太“大”了(吃流量),從頁面加載、打開速度理論看,英明的老大會把它砍掉。針對庫大小的問題,Zepto.js是一個解決方案。這個庫與jQuery API相對統(tǒng)一,拋卻了很多瀏覽器的兼容性的代碼。

但是現(xiàn)在瀏覽器的querySelector方法,已經(jīng)很好地解決了jQuery中的“Query”,使用原生的fetch方法請求數(shù)據(jù),返回Promise也能比jQuery.ajax()的實現(xiàn)更好、更清晰的解決問題。

看待jQuery,我覺得應(yīng)該更多看到它的歷史意義。jQuery,一定程度上成為了工業(yè)標準,影響了JS語言的發(fā)展和其他JS庫的構(gòu)建。如同coffeescript對ES2015的影響。至于實踐,越來越多的web已經(jīng)不依賴jQuery進行開發(fā)了。

前端這幾年進步太快了,我嘗試按照不同方向討論一下這些技術(shù)棧。

脫離瀏覽器的JavaScript Node.js

我們討論的JavaScript更多是以瀏覽器為宿主的ECMAScript,同源的ActionScript以Adobe的Flash作為宿主的。

瀏覽器中的JavaScript提供了大量與瀏覽器相關(guān)的API。脫離這些特定API看JavaScript,異步是它特別重要的一個特性。Google的V8引擎,讓JavaScript的運行時性能大大提升,是Node.js的產(chǎn)生另一個必要的條件。

Jser突然可以全棧了,面對新的技術(shù),不乏布道師。國內(nèi)第一本Node.js書籍是BYVoid寫的,當時盛傳這個同學拿到了我司的60w的offer,一片沸沸揚揚;大家可以向他學習,在一個技術(shù)還未在祖國大地流行起來時,迅速寫一本書。

至少目前,很少有大公司完全把JavaScript作為前后端通用的技術(shù)棧。傳統(tǒng)的后端語言和技術(shù)并未沒有被代替的危險。不能把Node.js簡單看做是JavaScript在服務(wù)端的延展。

我覺得,Node.js很大程度拓展了JavaScript的使用范圍,改變了傳統(tǒng)前端的工作流程(后面提)。特別是NPM的產(chǎn)生,意義非常之大,它讓JavaScript成為了一個生態(tài)系統(tǒng),CommonJs也在JavaScript模塊化未成熟之前,提供了優(yōu)秀的模塊化解決方案。

通過package.json,我們可以依賴已有的NPM項目構(gòu)建自己的庫。前段時間,某個同學應(yīng)為法律的問題,撤消了發(fā)布在NPM上的leftpad包,短短11行代碼的包撤消后,造成了React-Native、Babel等項目構(gòu)建失敗的災(zāi)難。

module.exports = leftpad;
function leftpad (str, len, ch) {
  str = String(str);
  var i = -1;
  if (!ch && ch !== 0) ch = " ";
  len = len - str.length;
  while (++i < len) {
    str = ch + str;
  }
  return str;
}

許多人反思,為啥那么簡單的代碼要依賴,不自己寫?是不是Jser忘記了怎么寫代碼了?我覺得,盲目解除對其他庫的依賴會失去NPM社區(qū)的初衷,除非你想做超級輪子哥。NPM生態(tài)圈制定一下撤包的規(guī)則,這種災(zāi)難或許以后就不會發(fā)生。自給自足的同學們,如果lodash撤包了,或者是tj holowaychuk大神激情起來刪了所有包,你們怎么辦?

Node.js也讓服務(wù)端渲染成為可能(universal),代碼段技能在服務(wù)端運行也可以在客戶端運行(universal)。從這點看,代碼更容易維護和編寫了,部分解耦了前端和服務(wù)端。對于SEO這個令人頭大的商業(yè)問題,服務(wù)端渲染可以較好地解決。感興趣的同學,可以去了解一下搜索引擎的爬蟲是如何干活的。

總結(jié)一下,Node.js的產(chǎn)生完善了JavaScript生態(tài)圈,讓大家看到了JavaScript的潛力,讓構(gòu)建更為龐大的JavaScript項目成為可能,同時前端可以使用更為工程化的流程和工具進行開發(fā)。

推薦大家一定去了解和使用Node.js,使用NPM構(gòu)建自己的項目。

JSON

JSON變成了事實上Web數(shù)據(jù)的傳輸標準,這個是JavaScript另一大貢獻。

對終端的開發(fā),使用JSON數(shù)據(jù)后使得服務(wù)端的開發(fā)更加專注和統(tǒng)一。

 data.each do |key, value|
   puts "Key #{key.inspect} has value #{value.inspect}"
 end

這種代碼展示了服務(wù)端渲染的能力。但是對于對于iOS、Android等原生應(yīng)用,除了在WebView中,無法消費這些渲染好的HTML。

JSON和App的流行,讓后端語言在渲染方面逐漸讓道,向純粹的Service發(fā)展。比如beta版本的 Rails 5 大大增強了 Rails 作為 API Service的能力。

從Ruby 或者 PHP轉(zhuǎn)換到JSON需要相應(yīng)的映射函數(shù),Node.js來得更為直接,因為JSON就是一個普通的JavaScript對象。

大家可以去學習成熟的JSON風格指南。同時通過實踐逐步加強對JSON的認識,設(shè)計更為規(guī)范的JSON(這個會森森影響到Mongo的存儲,查詢效率,React的性能)。

二進制處理后的JSON,是MongoDB存儲的內(nèi)容,這個基于文檔的數(shù)據(jù)庫被越來越多的公司使用,使得編寫嵌套數(shù)據(jù),存儲流數(shù)據(jù)更為容易。傳統(tǒng)的關(guān)系數(shù)據(jù)庫,將查詢結(jié)果表示為JSON,需要經(jīng)過查詢、封裝、Transform等多個步驟,而MongoDB的查詢結(jié)果就是JSON,直接查詢直接使用。當然我們看到,在處理事務(wù)型問題上,關(guān)系型數(shù)據(jù)庫還是首選,比如電商。我們?nèi)グH關(guān)系型數(shù)據(jù)庫是否落后沒有意義——使用場景不同。

如果大家有興趣,可以去嘗試MongoDB,感受一下沖擊。

前端工程化

接下來提一下前端工程化。腳本語言并不一定需要編譯再執(zhí)行。傳統(tǒng)的工程中,通過

這里第一次提到Immultable這個概念:總是不改變原來的對象而生成新的對象。Immultable,讓時光大法得以實現(xiàn)。我們?nèi)绻袲OM看做是State在UI層的映射,難么從State"到State后,自然能把UI層還原到原來的狀態(tài):Redux黑魔法。

Angular 2

Angular 2 已經(jīng)到了Realease Candidate階段,從alpha階段開始,每一次release都有一大堆BREAKING CHANGES(MD API說變就變)。

不過好在基本每個版本我都在跟進,還是做了些實踐。

如果大家抱著學習的心態(tài),一定不要去看國外或者知乎大神們對各種框架的褒貶,也不要去搜“我究竟是學習(使用)React、Angular 2、Ember還是Vue這種問題”,了解它們的思想和解決問題的方式。

Angular 一直使用依賴注入的單例模式解決數(shù)據(jù)管理的問題。Angular 2使用zone.js實現(xiàn)了一個新的臟值檢查機制,并在瀏覽器端使用System.js管理code的依賴。

使用 TypeScript 進行開發(fā),意味著從生產(chǎn)到上線過程必須經(jīng)過編譯和轉(zhuǎn)換,特別裝飾符的使用,讓代碼表意性更強,同時裝飾符作為元數(shù)據(jù),指導TypeScript的編譯過程。

舉個例子,我們看看Angular 2如何解決表單的驗證問題:
Angular 2將每一個表單項(比如 input、textArea、radio)抽象為一個Control,將整個表單抽象為一個ControlGroup。每一個Control都有自己的驗證規(guī)則,ControlGroup的合法性又由其包含的所有Control共同決定。這個實踐使得驗證邏輯與表單DOM實現(xiàn)了分離,更為清晰,同時原本操蛋的表單測試變得簡單易行,因為測試ControlGroup時并不需要依賴于DOM。

分享一篇我翻譯的文章:Angular 2核心概念,閱讀后可以對Angular 2 有一個大致的了解。

Angular 2是對WebComponent的漸進,通過WebComponent,我們可以導入和使用各種成熟的組件,而不用關(guān)心它的具體實現(xiàn),就像黑盒一樣進行使用:例如我們想嵌入一個百度地圖的WebComponent,可以這么寫:

于是就I生成一個指定大小和位置的地圖組件(百度地圖沒有這東西,我YY的,股溝有)。

Vue

這個框架我不是很了解,開發(fā)者是尤雨溪大神,在github上stars超過10,000。
手機淘寶的勾股大神一直在布道、推廣、實踐。個人覺得Vue的核心貢獻者太少了,拉上阿里巴巴是一個明智的選擇,畢竟很多前端大神可以共同完善它。

脫離瀏覽器的 JavaScript Libraries

再看Virtual DOM這個概念,就像是薛定諤的貓,在渲染前什么都是、什么都不是。Virtual DOM是一個抽象的概念,也組成了另一個抽象概念—— Component。(這個堪稱是FB的野心,以后估計很多人被這個東西搞失業(yè))。

一個視覺元素,一個用戶事件,可以做如下抽象:

/*****
          
/(html) View (iOS) UIView click /(html) Click (iOS) TouchUpInside *****/

我們發(fā)現(xiàn),如果在編譯時View、Click才與運行環(huán)境相關(guān),那么app、web app的開發(fā)其實是可以共享大部分代碼的,這個時候JavaScript變?yōu)榱酥虚g語言。

這個想法早在cocos2d中就已經(jīng)實現(xiàn),進行游戲開發(fā)的同學使用c++進行游戲開發(fā),編譯后產(chǎn)生安卓和 iOS 的版本平臺相關(guān)的游戲。

React-Native就是這個思路的實踐者,通過js綁定了OC或者安卓的運行環(huán)境,開發(fā)出性能接近于原生的原生應(yīng)用。React-Native大法延展了JS的廣度,也填補了iOS和安卓開發(fā)間的技術(shù)溝壑。

另一個黑魔法是熱更新,以往大幅度更新App只能在App Store、安卓各大渠道發(fā)布更新,然后從應(yīng)用商店提示用戶升級,每一次提交都需要被審核,更何況并不是每一個用戶都知道或者想去安裝每一個更新版本(比如我媽)。通過React-Native可以直接下載新的bundle,實現(xiàn)熱更新。

論壇里,有人討論React-Native熱度驟減,你們?nèi)ス倬W(wǎng)看看,人家才v0.25。很多公司用不好駕馭不了React-Native原因出在缺少既了解客戶端開發(fā)有了解前端開發(fā)的程序猿(媛):不能否認,Reactive-Natvie的產(chǎn)生是大勢所趨。

說道阿里在搞的Weex,也是在向這個方向探索,如果特別成功并且使用廣泛的話一定會把Vue搞得更大:尤雨溪大神在這個問題上相當?shù)拿髦堑摹?/p>

再回到Angular 2,DomRenderer.getNativeElementSync(elementRef)也不是在做同樣的事情嗎?相關(guān)項目詳見:NativeScript 。

除了JavaScript,CSS 也在嘗試成為與平臺無關(guān)的樣式語言。React-Native就實現(xiàn)了CSS 的部分子集與iOS、Android的綁定。

大前端

未來的前端是一個包含但不僅限于app和web,從事多端構(gòu)建任務(wù)的程序員工種。團隊中單一技能的人員會越來越少,客戶端與web端的界限也會越來越模糊。

同時新的技術(shù)大多會在不同領(lǐng)域交叉點產(chǎn)生。網(wǎng)絡(luò)提速,設(shè)別處理能力提高后,應(yīng)用大小、性能可能退居第二,用戶體驗和開發(fā)效率提升到第一。

比如很多公司,由于擔心js、css打包后過大,放棄使用框架。這點我持保留意見,快速迭代的產(chǎn)品必須有敏捷的技術(shù)棧和穩(wěn)定的框架。

目前新版本的Chrome、Node.js對ES6標準的支持已經(jīng)超過90%,Babel這一類工具的生命周期不會很長,TypeScript可能會越走越遠。

給大家的建議

道阻且長,冰凍三尺非一日之寒;

廣泛地學習,有條件和能力的同學盡早地接觸客戶端開發(fā),更多地了解服務(wù)端開發(fā);

前端大有可為,新技術(shù)的發(fā)明者大多不是老東西,老東西經(jīng)驗足但是歷史包袱重;

只在瀏覽器中思考必死無疑;

像一位同學提到的,打好基礎(chǔ),offer就有。學校里倒騰幾年真的很難搞出什么大新聞,面試官也不會刻意為難你;

測試測試測試,前端測試值得學習掌握,比如e2e,這是一個機會:我能告訴你很多公司的前端測試都瞎JB點嗎?

學習一些函數(shù)式編程的思想,例如:lodash、Redux、RxJS;

拿到offer只是開始不要嘚瑟。

番外篇——理性看待前端緊缺的現(xiàn)象

剛?cè)肼毺詫殨r,團隊里有許多前端外包同學,后來很大一部分轉(zhuǎn)正了,有經(jīng)驗的前端工程師一直稀缺。

2012年,PC購物還是主流,我們見證了無線成交額(GMV)逐漸趕超PC的時刻:端的重心越來越向mobile(App)移動。

Hybrid App很流行,部分是因為Native開發(fā)更為復雜,同時審核、更新機制緩慢。每一次手淘release都要考慮與老版本的兼容性,幾百號人同時開發(fā)二個(安卓、iOS)App想想多復雜。

H5在webview中運行,隨時可以更新、快速迭代,新產(chǎn)品或者是活動頁面大多數(shù)會采用H5的形式進行發(fā)布;甚至很多小公司由于財力和技術(shù)儲備有限,直接用App做殼,里面全是用H5來開發(fā):因此市場上產(chǎn)生了很大的H5程序員的需求。

且慢,沒有任何人說過H5比Native更好,也沒有什么H5的春天,一切的一切都是因為Native 開發(fā)、更新不夠成熟。但也僅限在一個時間段內(nèi)。

如果一切問題都不是問題了,干嘛不全做Native?目前看來類似于React-Native、JsPatch這樣的技術(shù)逐漸會讓很多前端失業(yè)或是是被動轉(zhuǎn)崗到純PC業(yè)務(wù)。

番外篇——推薦學習資源

You don"t know JS,clone下來以后用markdone閱讀器閱讀;

ES6 教程,阮一峰大神的ES6教程,紙質(zhì)書可以在京東啥的買到;

LeanPub,自出版書籍網(wǎng)站,每次更新都會發(fā)布新版本。支持Visa支付;

Manning,特別是MEAP系列的圖書,按章節(jié)更新,最新一手資料,支持Visa、PayPal支付;

CodeSchool,在線學習網(wǎng)站,覆蓋前端、iOS、Ruby等,可以先試試免費課程,支持Visa、PayPal支付;

EggHead,在線學習網(wǎng)站,先試試免費課程,授課人大神極多,基本涵蓋了最新的前端技術(shù),支持Visa支付,200刀一年略貴;

要是覺得貴,想想火麒麟。

番外篇——F&Q

Q:樓主現(xiàn)在在干嘛?
A:五道口,創(chuàng)業(yè)狗。負責公司的技術(shù)和產(chǎn)品。

Q:還有什么想說的?
A:帖子還會更新維護。

Q:聯(lián)系方式?
A:微信請加mumuzhenzhen,告訴我你是誰。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/87757.html

相關(guān)文章

  • 寫給前端的區(qū)塊鏈開發(fā)入門指南:零基礎(chǔ)開發(fā)基于以太坊智能合約的 ICO DApp

    摘要:圍繞以太坊的開發(fā)生態(tài)是目前相對最成熟的,比如有開發(fā)框架,有智能合約在線集成開發(fā)環(huán)境,還有專設(shè)的開發(fā)者問答頻道。 showImg(https://segmentfault.com/img/bVbaJOL?w=1200&h=514); 張泉靈說,時代拋棄我們的時候連聲再見都不會說,馬云說對于新興事物,絕大多數(shù)人是看不見、看不起、看不懂、來不及。自從學完 Coursera 上的 Crypto...

    sean 評論0 收藏0
  • 寫給前端的區(qū)塊鏈開發(fā)入門指南:零基礎(chǔ)開發(fā)基于以太坊智能合約的 ICO DApp

    摘要:圍繞以太坊的開發(fā)生態(tài)是目前相對最成熟的,比如有開發(fā)框架,有智能合約在線集成開發(fā)環(huán)境,還有專設(shè)的開發(fā)者問答頻道。 showImg(https://segmentfault.com/img/bVbaJOL?w=1200&h=514); 張泉靈說,時代拋棄我們的時候連聲再見都不會說,馬云說對于新興事物,絕大多數(shù)人是看不見、看不起、看不懂、來不及。自從學完 Coursera 上的 Crypto...

    yzzz 評論0 收藏0
  • 26自學轉(zhuǎn)行前端寫給和1年前一樣迷茫的我的你

    摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...

    番茄西紅柿 評論0 收藏2637
  • 26自學轉(zhuǎn)行前端寫給和1年前一樣迷茫的我的你

    摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...

    番茄西紅柿 評論0 收藏2577
  • 26自學轉(zhuǎn)行前端寫給和1年前一樣迷茫的我的你

    摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...

    番茄西紅柿 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<