摘要:不過細想想,我郵只有前端的選修課啥的,課程也不是那么就業(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)建自己的項目。
JSONJSON變成了事實上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)的工程中,通過標簽引入依賴的JavaScript庫、樣式表后直接開發(fā),寫樣式表。
當工程規(guī)模增大后,傳統(tǒng)實踐維護成本直線上升——于是模塊化開發(fā)成為工程上的最佳實踐。我們可以使用特定的技術(shù)對JavaScript、CSS進行壓縮,同時合并JS與CSS解決腳本間的依賴問題,以此減少線上環(huán)境中HTTP請求的數(shù)量。
Sass Less StylusCSS在前端領(lǐng)域,進步最慢。聲明式的樣式表缺乏邏輯性,層層嵌套,維護成本高且不易團隊合作,樣式覆蓋這個問題也相當惱人。
Sass等技術(shù),輸出編譯后的CSS樣式表,把開發(fā)過程和實際樣式表分開。.scss文件結(jié)構(gòu)清晰,通過變量定義、mixin等的使用讓樣式表的開發(fā)更加正規(guī)化。
Less與Sass類似,Stylus是TJ大神的作品,實在非常簡約抽象,個人感覺不易維護。最新的Bootstrap 4使用Sass,放棄了Bootstrap 3中使用的Less。
個人覺得,這些技術(shù)深入掌握一門就可以了。實際開發(fā)還要看公司的技術(shù)棧。
CoffeeScript 與 TypeScript與Sass等技術(shù)思想類似,Coffee 與 TypeScript 也是一個編譯技術(shù)——把.coffee、.ts文件編譯成javascript。編譯這個思想在前端領(lǐng)域很重要:不改變現(xiàn)有的語言環(huán)境(JS、CSS)同時進行最佳的工程實踐。
使用過一段TypeScript,真心覺得是神器,在無類型語言中寫類型不是倒退嗎?請摒棄這些激進思想(世界上最好的語言第7代不是也支持類型了嗎),嘗試在項目中使用TypeScript,你就會感知到它的神器之處。首先,多人協(xié)作更為容易了,結(jié)合IntelliSense,IDE更為智能,開發(fā)快感直線提升。
TypeScript是微軟的開源項目,Angular 2 放棄 Dart完全擁抱了TypeScript,TypeScript與Angular 2 強強合作,加入了許多構(gòu)建 Angular 2的新特性。
我們整理一下這些工程化的實踐:預編譯、合并、壓縮、打包,引入下一個概念Package工具:
Webpack Gulp Grunt BrowerifyPackage工具,是任務(wù)驅(qū)動型的工程化工具。通過打包構(gòu)建,線上代碼更為精簡,循環(huán)引用等問題迎刃而解。
上述這些工具變化極快,Webpack 2快接近穩(wěn)定了,JSPM這個新的工具也得到了使用:但是沒有最好的,只有最合適的工具。都說Grunt已經(jīng)過時,jQuery等庫還一度使用Grunt進行構(gòu)建。對于新的工具,我們可以了解它們的思想,不要被它們壓得喘不過氣:比如Gulp更像是一個PipeLine,對代碼流一步步通過Loader進行加工。
在淘寶無線時,有些H5前端用Grunt構(gòu)建工程,使用Less寫樣式表(還有些人什么都不用,直接在JsBin里面寫樣式、寫JS)。
任務(wù)工具結(jié)合CommonJS后,可以只引用需要的模塊、樣式表。這樣打包后,文件更?。寒斎蝗绻Y(jié)合sourcemap,調(diào)試和定位問題會更為容易。
JavaScript Libraries工程化、模塊化解決了code如何生產(chǎn),模塊、結(jié)構(gòu)如何組織等問題。大家也在不斷思考在前端與數(shù)據(jù)的關(guān)系。傳統(tǒng)前端開發(fā)并不是數(shù)據(jù)導向的,多數(shù)頁面由服務(wù)端渲染,前端的重心不在數(shù)據(jù)而是聚焦在用戶行為的響應(yīng)上,這時前端僅僅是產(chǎn)品的視覺末梢。
單頁應(yīng)用開發(fā)技術(shù)越來越多地被實踐后,前端逐步變得更為數(shù)據(jù)導向(JSON API),由末梢變?yōu)榇竽X——業(yè)務(wù)邏輯前移;對瀏覽器歷史的管理也是也是單頁應(yīng)用的另外一個中心,前端也逐步變得更為歷史導向。
為了更為數(shù)據(jù),JavaScript 庫借鑒了很多服務(wù)端的思想比如MVC。MVC將數(shù)據(jù)抽象為模型,在模型中定義操作數(shù)據(jù)的基本方法;在控制器中定義商業(yè)邏輯,并控制模型的渲染。
這個階段的代表是Backbone.js。Backbone有一個可以自定義的依賴于jQuery的前端模版引擎,是MVC模式在前端開發(fā)中的實踐。同時Backbone.js 依賴于同一個作者創(chuàng)建的 Underscore 庫,以函數(shù)式編程思想操作數(shù)據(jù)或者集合(這個Jser創(chuàng)造了CoffeScript、Backbone、UnderScore,Lodash是從Underscore項目派生出來的,大家可以膜拜大神Jeremy Ashkenas)。Backbone影響深遠。比如facebook的 parse(中國克隆版叫LeanCloud)這種無后端服務(wù)就從Backbone借鑒了很多。
Angular.js的產(chǎn)生是跨時代的,這個大而全的框架讓單頁應(yīng)用的開發(fā)更為容易。
最開始Jser們并不是很適應(yīng)Angular,反倒Java程序員可以很快的上手,因為Angular 借助了很多 Spring的思想比如依賴注入。
Angular 仍然深受 jQuery 的影響,內(nèi)部實現(xiàn)了極簡版本的選擇器。Angular進行雙向綁定,這個牛逼的特性也有時因為性能問題被詬病。
JavaScript 庫也借鑒了很多客戶端開發(fā)的思想,比如React、Vue。
個人覺得,拿Angular、React、Vue這些庫比較,論其優(yōu)劣意義不大。他們產(chǎn)生的時代不同,解決的問題不同。React、Vue離開Router和生態(tài)圈的其他組件也無法構(gòu)建單頁應(yīng)用。
React.jsReact并不是一個大而全的框架,主要專注在UI層,React以Component的方式組織應(yīng)用:一個Component包含這個組件的模版(樣式)和行為邏輯。多個Component可以組合,產(chǎn)生兄弟、父子的Component結(jié)構(gòu)關(guān)系。
以往開發(fā)強調(diào)結(jié)構(gòu)、樣式、行為的分離。但從組件角度看來,所有這些都是構(gòu)成組件不可分割的整體。JSX使得HTML與JS的混編更為容易,同時React組件也可以使用內(nèi)聯(lián)方式來組織樣式。
React默認單向綁定,在State發(fā)生變換后重新渲染DOM。從Component的生命周期中,我們可以看到客戶端開發(fā)的影子(特別有iOS開發(fā)的經(jīng)驗的話)。譬如componentWillMount、componentDidMount、componentWillReceiveProps、componentWillUnmount這些生命周期的鉤子就是像客戶端開發(fā)學習的例子。一方面,生命周期的增加細化了開發(fā)的粒度,另一方,也為前端的再一次拓展做了充分地準備。
父組件通過props向子組件傳值,子組件調(diào)用porps所傳遞的父組件的方法來執(zhí)行業(yè)務(wù)邏輯。這點,非常類似iOS開發(fā)中的委托代理模式,同樣是向客戶端開發(fā)技術(shù)學習的例子。
React調(diào)用render方法對Component進行渲染,其中涉及了Virtual DOM機制和只能的diff算法——只更新發(fā)生變化的DOM,以此提高渲染的效率。
React并沒有提供完成的數(shù)據(jù)管理方案,F(xiàn)lux也僅僅是一個實踐的建議。去年,各種Flux解決方案百花齊放,Redux獲得了最大的關(guān)注度。使用Redux是一個從入門到懵逼的過程,而且往往不知所以然,然后“這廝”有引入了Store、Action、這些概念。建議大家不要為了Flux而Flux,多做一些實踐,了解函數(shù)式編程,了解Map、Reduce的概念,再深入Redux:
在這里分享些自己的認識:每一個組件都有自己的State,有層次關(guān)系的State共同組成一顆狀態(tài)樹來記錄整個應(yīng)用的狀態(tài)。當Aciton被觸發(fā)后,State隨之更新,React以此部分地更新應(yīng)用的狀態(tài)和視圖(State ---Action---> State")。貼一個自己總結(jié)的白板圖:
這里第一次提到Immultable這個概念:總是不改變原來的對象而生成新的對象。Immultable,讓時光大法得以實現(xiàn)。我們?nèi)绻袲OM看做是State在UI層的映射,難么從State"到State后,自然能把UI層還原到原來的狀態(tài):Redux黑魔法。
Angular 2Angular 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的核心貢獻者太少了,拉上阿里巴巴是一個明智的選擇,畢竟很多前端大神可以共同完善它。
再看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&QQ:樓主現(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
摘要:圍繞以太坊的開發(fā)生態(tài)是目前相對最成熟的,比如有開發(fā)框架,有智能合約在線集成開發(fā)環(huán)境,還有專設(shè)的開發(fā)者問答頻道。 showImg(https://segmentfault.com/img/bVbaJOL?w=1200&h=514); 張泉靈說,時代拋棄我們的時候連聲再見都不會說,馬云說對于新興事物,絕大多數(shù)人是看不見、看不起、看不懂、來不及。自從學完 Coursera 上的 Crypto...
摘要:圍繞以太坊的開發(fā)生態(tài)是目前相對最成熟的,比如有開發(fā)框架,有智能合約在線集成開發(fā)環(huán)境,還有專設(shè)的開發(fā)者問答頻道。 showImg(https://segmentfault.com/img/bVbaJOL?w=1200&h=514); 張泉靈說,時代拋棄我們的時候連聲再見都不會說,馬云說對于新興事物,絕大多數(shù)人是看不見、看不起、看不懂、來不及。自從學完 Coursera 上的 Crypto...
摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...
摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...
摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...
閱讀 3723·2021-08-10 09:42
閱讀 614·2019-08-30 15:55
閱讀 915·2019-08-30 15:54
閱讀 3132·2019-08-30 13:45
閱讀 586·2019-08-29 16:23
閱讀 2016·2019-08-29 16:23
閱讀 1009·2019-08-29 15:18
閱讀 2289·2019-08-29 12:57