小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

你所不知道的React| 趨勢解讀、底層邏輯、學(xué)習(xí)路徑、實戰(zhàn)應(yīng)用

 Earlycl6i7o9ek 2019-07-19

本文配圖來自《復(fù)仇者聯(lián)盟4》相關(guān)劇照。

開篇前,我們不妨先回顧下2018前端的重大事件,從而探究事件背后的技術(shù)趨勢和熱點話題,

  • WebAssembly 發(fā)布標(biāo)準核心的 1.0 版本;

  • React v16.0普及;

  • Vue 3.0 發(fā)布之后,其Class API 和 React 的寫法幾乎是一模一樣的,支持原生 Class 的寫法;

  • 版本帝 AngularJS 又發(fā)布了 v6 和 v7 兩個版本;

隨著框架和工程化的探索趨于穩(wěn)定,如何更好的用,更簡單的用?目前,各家大廠都在前端技術(shù)棧思考如何選型和降低成本,統(tǒng)一技術(shù)棧。同時,應(yīng)用輕量化也成熱點趨勢,小程序成為最火技術(shù),PWA進入穩(wěn)定,從而引發(fā)“移動端跨平臺性”的問題思考和熱議。

(附:2019年大前端技術(shù)趨勢深度解讀:https://mp.weixin.qq.com/s/WWqsd-SnILUWbiKEnSArDQ)

數(shù)據(jù)表明:無React,不前端

根據(jù)《2018 年度JavaScript趨勢報告》顯示,目前React 在前端領(lǐng)域流行度最高, Vue 排名位居第二,但從“使用過并且將再次使用”的比例來看,Vue和React相比仍有不小差距。

(注:共有來自 153 個不同的國家共 20000 多名 JavaScript 開發(fā)者參與調(diào)查,中國共75個開發(fā)者占總數(shù)的 0.37%,中國也許這個數(shù)據(jù)會有一些不同)

往往大中型企業(yè)偏向于React,除Facebook,Instagram,Netflix,微軟等眾多國際知名互聯(lián)網(wǎng)公司都是React.js的擁躉者外,國內(nèi)很多主流互聯(lián)網(wǎng)公司如騰訊、螞蟻金服、京東、360、美團、攜程等也在用 React ,即使有大廠由于業(yè)務(wù)等原因不直接使用,但仍沒有脫離React社區(qū)。

React 是怎樣煉成的?

作者:mingzhong 

轉(zhuǎn)自:

https://segmentfault.com/a/1190000013365426

本文引述部分內(nèi)容,查看完整內(nèi)容,請移步原文鏈接。

內(nèi)容整理自 2014 年的 OSCON- React Architecture by vjeux,雖然從今天(2019)來看可能會有點歷史感,但仍然值得學(xué)習(xí)了解。以史為鑒,從中也可以管窺Facebook 優(yōu)秀的工程管理文化。

字符拼接時代 - 2004

時間回到 2004 年,Mark Zuckerberg 當(dāng)時還在宿舍搗鼓最初版的 Facebook 。這一年,大家都在用 PHP 的字符串拼接(String Concatenation)功能來開發(fā)網(wǎng)站。

$str = '<ul>';foreach ($talks as $talk) { $str = '<li>' . $talk->name . '</li>';}$str  = '</ul>';

這種網(wǎng)站開發(fā)方式門檻低,安全性能差,容易造成 XSS 注入等問題。最簡單的應(yīng)對方法是對用戶的任何輸入都進行轉(zhuǎn)義(Escape),但如果又不小心把HTML 標(biāo)簽(Markup)給轉(zhuǎn)義了,那么 HTML 標(biāo)簽會直接顯示給用戶,從而導(dǎo)致很差的用戶體驗。

XHP時代- 2010

到了 2010 年,為了更加高效的編碼,同時也避免轉(zhuǎn)義 HTML 標(biāo)簽的錯誤,F(xiàn)acebook 開發(fā)了 XHP 。XHP 是對 PHP 的語法拓展,它允許開發(fā)者直接在 PHP 中使用HTML 標(biāo)簽,而不再使用字符串。

$content = <ul />;foreach ($talks as $talk) {  $content->appendChild(<li>{$talk->name}</li>);}

不久的后來,F(xiàn)acebook 的工程師又發(fā)現(xiàn)他們還可以創(chuàng)建自定義標(biāo)簽,而且通過組合自定義標(biāo)簽有助于構(gòu)建大型應(yīng)用。而這恰恰是 Semantic Web 和 Web Components 概念的一種實現(xiàn)方式。

$content = <talk:list />;foreach ($talks as $talk) { $content->appendChild(<talk talk={$talk} />);}

之后,F(xiàn)acebook 在 JS 中嘗試了更多的新技術(shù)方式以減小客戶端和服務(wù)端之間的延時。比如跨瀏覽器 DOM 庫和數(shù)據(jù)綁定,但是都不是很理想。

JSX- 2013

等到 2013 年,突然有一天,前端工程師 Jordan Walke 向他的經(jīng)理提出了一個大膽的想法:把 XHP 的拓展功能遷移到 JS 中。

要想把 XHP 的拓展功能遷移到 JS ,首要任務(wù)是需要一個拓展來讓 JS 支持 XML 語法,該拓展稱為 JSX 。

const content = (  <TalkList>    { talks.map(talk => <Talk talk={talk} />)}  </TalkList>);

React

自此,開始了 React 的萬里長征,其中,最棘手的是如何再現(xiàn) PHP 中的更新機制?

在 PHP 中,每當(dāng)有數(shù)據(jù)改變時,只需要跳到一個由 PHP 全新渲染的新頁面即可。


從開發(fā)者的角度來看的話,這種方式開發(fā)應(yīng)用是非常簡單的,因為它不需要擔(dān)心變更,且界面上用戶數(shù)據(jù)改變時所有內(nèi)容都是同步的。只要有數(shù)據(jù)變更,就重新渲染整個頁面。

雖然簡單粗暴,但是這種方式的缺點也尤為突出,那就是它非常慢。

“You need to be right before being good”,意思是說,為了驗證遷移方案的可行性,開發(fā)者必須快速實現(xiàn)一個可用版本,暫時不考慮性能問題。

取自于 PHP 的靈感,引入js,于是,問題最終轉(zhuǎn)化為,如何實現(xiàn)了對 DOM 節(jié)點的版本控制?如何對React 進行持續(xù)性優(yōu)化?

這個時候 Facebook 做了個重大的決定,那就是把 React 開源!

React的學(xué)習(xí)路徑——從菜鳥到大牛

譯者:青禾qingh 

轉(zhuǎn)自:

https://blog.csdn.net/yangxiaobo118/article/details/79823561 

原文:

https://github.com/petehunt/react-howto#learning-flux

如果你想開始學(xué)習(xí)React又不知道該從何學(xué)起的話,你不妨看看本文。當(dāng)然,要學(xué)習(xí)React,你必須具備基本的HTML、CSS和JavaScript的知識,如果你之前從未接觸過前端開發(fā),那么我建議你先學(xué)習(xí)基礎(chǔ)知識。

“憑什么聽你的?”

React教程那么多,為什么要聽聽我的建議呢?我曾是Facebook團隊的一員并參與創(chuàng)建和開源React,對React有著較深的理解?,F(xiàn)在我已經(jīng)出來創(chuàng)業(yè),因此我同時還有著不同于Facebook的一些觀點。

如果看待React的生態(tài)?

每個軟件都是基于一個技術(shù)棧來實現(xiàn)的,因此如果想要創(chuàng)建你自己的應(yīng)用,你就必須充分理解自己的技術(shù)棧。React的生態(tài)看上去很復(fù)雜的原因便是人們通常沒有按照正確的順序來去學(xué)習(xí)。

你需要按照下面的順序一步一步地學(xué)習(xí),不要跳著學(xué)或者同時學(xué)習(xí)多個內(nèi)容,否則你會感到非?;靵y。

基本內(nèi)容:

  • 1、React

  • 2、npm

  • 3、JavaScript 打包工具

  • 4、ES6

  • 5、路由

  • 6、Flux

當(dāng)然,并不是要把這些內(nèi)容全部學(xué)完你才能開始使用React,你完全可以先學(xué)一步并著手做一點東西,當(dāng)你發(fā)現(xiàn)這一步的知識不足以解決你現(xiàn)在遇到的問題時你再開始下一步的學(xué)習(xí)。

下面我會一一介紹每一個技術(shù)的學(xué)習(xí)要領(lǐng),大家根據(jù)自己的需要來看就好。

基礎(chǔ)部分

1.學(xué)習(xí)React

開始學(xué)習(xí)React并不需要大量的準備工作。在官網(wǎng)的文檔里你可以發(fā)現(xiàn)一個可以直接復(fù)制的HTML模板,將它粘貼到你的本地html文件中就可以開始學(xué)習(xí)啦。在這一步你不要去管什么工具,你只需要理解React的基礎(chǔ)知識就好,當(dāng)你熟悉了基礎(chǔ)知識之后再去學(xué)習(xí)各種工具的用法。

2.學(xué)習(xí)npm

npm是Node.js的包管理工具,也是目前前端開發(fā)者和設(shè)計師們共享代碼的最熱門的工具。它集成了一個模塊系統(tǒng)CommonJS,可以讓開發(fā)者安裝一些命令行工具。建議大家看看  文章來了解一下為什么CommonJS對于瀏覽器來說是必要的(原文:https:///2013/01/22/commonjs-why-and-how/),如果想進一步了解CommonJS的API的話可以看看 這篇(原文:http://wiki./wiki/Introduction)。 

3.學(xué)習(xí)JavaScript打包工具

出于一些技術(shù)的原因,瀏覽器并不原生支持CommonJS模塊。你需要一個JavaScript打包工具來將這些模塊打包成一個.js文件,在網(wǎng)頁中引入這個打包后的文件就可以在瀏覽器中運行了。

典型的打包工具有Webpack和browerify。二者都是個不錯的選擇,但是我更推薦Webpack,因為它具備很多簡化大型項目開發(fā)的特性。由于Webpack的文檔比較晦澀難懂,我針對React設(shè)計了一個 Webpack模板 (地址:https://github.com/petehunt/react-webpack-template),如果你想進一步了解Webpack的進階用法的話,你可以看看 這篇 文章(原文:https://github.com/petehunt/webpack-howto)。

有一個誤區(qū)需要避免:CommonJS利用require()方法來加載模塊,因此很多人會下意識地認為他們需要一個require.js來完成這項工作。事實上由于一些技術(shù)上的問題我并不推薦你使用require.js,更何況不引入這個庫你也可以使用require()方法。

4.學(xué)習(xí)ES6

除了JSX(你在React基礎(chǔ)部分會學(xué)到)以外,你會在React的示例中看到一些陌生的符號。它們便是ES6(ECMAScript第6版,JavaScript最新的語法標(biāo)準)的新語法,在你學(xué)習(xí)基礎(chǔ)JavaScript的時候不曾遇到過。由于它太新了(2015年頒布),因此還沒有得到很好地瀏覽器支持,但是你的打包工具可以在打包的同時將ES6轉(zhuǎn)成ES5的語法以獲得更好的瀏覽器支持。

當(dāng)然,使用React不代表一定要使用ES6,你大可以跳過ES6,將重點放在React本身。但是ES6的一些概念解決了很多以往JavaScript的語法問題,建議不打算學(xué)習(xí)ES6的朋友有精力的時候也了解一下。

強調(diào)一點:有些人會推薦你用ES6中新的類來定義React組件,而我建議你不要這么做。事實上多數(shù)人(包括Facebook的開發(fā)者)在創(chuàng)建React組件時使用的是React.createClass()方法。

5.學(xué)習(xí)路由

單頁應(yīng)用是當(dāng)今的主流。單頁的應(yīng)用只加載一次網(wǎng)頁,當(dāng)用戶點擊鏈接或按鈕的時候,JavaScript代碼會更新頁面的內(nèi)容和地址欄內(nèi)容,但是網(wǎng)頁并沒有刷新。地址欄的管理器就被稱為路由。React的生態(tài)中最受歡迎的且最好用的路由是react-router,創(chuàng)建單頁應(yīng)用的朋友一定要嘗試一下。

6.學(xué)習(xí)Flux

你可能聽說過Flux,而且很多關(guān)于Flux的誤解你可能也聽說過。

很多人在創(chuàng)建應(yīng)用的使用需要定義一個數(shù)據(jù)模型,然后他們認為他們需要Flux來實現(xiàn)它。 這不是Flux的正確使用方法 。Flux應(yīng)該在很多組件加載之后加載。

React組件通常會構(gòu)成一個層級結(jié)構(gòu)。多數(shù)情況下,你項目的數(shù)據(jù)模型也需要構(gòu)成一個層級結(jié)構(gòu)。這時Flux并不適合你的項目。然而有時候你的數(shù)據(jù)模型并沒有構(gòu)成層級關(guān)系。當(dāng)你的React組件開始接收無關(guān)聯(lián)的props值,或者你的一些組件開始變得非常復(fù)雜的時候,你可能才需要使用Flux。

你會清楚你什么時候需要Flux的。如果你不確定你是否需要使用它,那就不要用。

如果你確定需要使用Flux的話,那么我建議你使用目前最受歡迎且文檔齊全的Flux庫——Redux。當(dāng)然Flux的框架不止這一個,但是我建議大家去用最熱門的那一個。

以上便是React技術(shù)棧中的基礎(chǔ)部分,大部分開發(fā)者了解到這一步就可以了。如果你已經(jīng)熟悉了React的用法并有了一定的項目經(jīng)驗,你可以接著學(xué)習(xí)下面這些進階技術(shù)。

進階部分

1.學(xué)習(xí)內(nèi)聯(lián)樣式

在React誕生之前,很多開發(fā)者通過SASS這樣的預(yù)編譯器來重用非常復(fù)雜的樣式表。因為React簡化了重用組件的方法,因此你的樣式表也可以被簡化了。社區(qū)里的很多人(包括我)甚至都開始嘗試不寫樣式表。這是一個非常瘋狂的想法,它使得媒體查詢變得復(fù)雜,而且還會對性能產(chǎn)生潛在的影響。因此,建議各位剛接觸React的時候, 用你最常用的方法來編寫樣式 。

如果你已經(jīng)習(xí)慣了React的用法,你可以嘗試使用其他技術(shù)來寫樣式。最熱門的技術(shù)便是 BEM(地址:https://en./)。逐步放棄使用那些CSS預(yù)編譯器吧,React給你提供了一個更加強大的方法來重用樣式,你的JavaScript打包工具會生成更加高效的樣式表。

你也可以嘗試一下CSS模塊,如 react-css-modules(地址:https://github.com/gajus/react-css-modules) 。你仍可以編寫純CSS或SASS/LESS/Stylus,但是你可以像React的內(nèi)聯(lián)樣式那樣管理、組織你的CSS文件。你不需要像BEM那樣再為管理類的名稱而費心,因為模塊系統(tǒng)都幫你完成了。

2.學(xué)習(xí)服務(wù)端渲染

服務(wù)器渲染通常又稱為“全局”或“同構(gòu)”JS,是指將React組件在服務(wù)端渲染成靜態(tài)HTML文件。這會加快首次加載的速度,因為用戶不需要等待瀏覽器下載JS即可看到初始的UI,而且React可以重用服務(wù)端渲染的HTML,因此不需要在客戶端創(chuàng)建。

如果你發(fā)現(xiàn)你的首次渲染速度太慢或者你想提升你的搜索引擎排名的話,你可以嘗試一下服務(wù)端渲染。盡管谷歌以客戶端渲染的內(nèi)容為索引,但是在2016年1月份開發(fā)者通過實際測試發(fā)現(xiàn):由于客戶端渲染有潛在的性能問題,它對排名是有負面影響的。

要想正確使用服務(wù)端渲染還需要很多工具。即便你在編寫時沒有考慮到服務(wù)端渲染的問題,它也可以很好地支持React組件。因此你應(yīng)該先創(chuàng)建好你的應(yīng)用,之后再考慮服務(wù)端渲染的問題。你不需要為了支持服務(wù)端渲染而去把你的所有組件重寫一遍。

3.學(xué)習(xí)Immutable.js

Immutable.js(查看:https://immutable-js./immutable-js/) 提供了很多可以解決React性能問題的數(shù)據(jù)結(jié)構(gòu)。如果你想改進你的應(yīng)用的性能,你不妨嘗試一下它。

4.學(xué)習(xí)Relay和Falcor

這些技術(shù)可以幫助你減少AJAX請求的次數(shù)。它們是非常前沿的技術(shù),如果你的AJAX請求并不是很多,那么你就不需要使用它們。

結(jié)語

說了這么多,你可能還是會覺得要學(xué)的東西好多。為什么說你的技術(shù)儲備是一個技術(shù)棧?因為你會根據(jù)需要不斷地去push進去新的東西。這個push的過程不是無腦的。優(yōu)先將基礎(chǔ)的東西push進去并不斷消化。當(dāng)你的技術(shù)棧的基礎(chǔ)穩(wěn)固了,出現(xiàn)了更多的需要時,再去push新的東西。如果一股腦的沒有順序的push進太多東西,你的技術(shù)棧會瞬間崩塌,你也會變得不知所措。

因此,記住一點:根據(jù)你的需要來學(xué)習(xí),從基礎(chǔ)開始。

幾個必看的React開源項目

作者:androidstarjack  

原文:

https://blog.csdn.net/androidstarjack/article/details/80449935

1.Facebook’s F8 Conference App

項目地址

https://github.com/fbsamples/f8app

2.Reading

來自餓了么RN大神開源的reading項目,已經(jīng)完成Android和iOS雙適配。絕對是一個產(chǎn)品級的開源項目,并且作者還在持續(xù)的更新。值得一薦!

項目地址:

https://github.com/attentiveness/reading

3.Weather

該為國外一個天氣預(yù)報客戶端,界面效果簡約優(yōu)美,作者借鑒F8項目同時客戶端數(shù)據(jù)來自真實國外的天氣預(yù)報API。這天氣預(yù)報客戶端體驗估計已經(jīng)給原生開發(fā)者造成10000點傷害了。 

項目地址:

https://github.com/stage88/react-weather

4.GithubFeed

該項目來自阿里開發(fā)人員,你的又一Github客戶端哦~項目github也超過了1000個star。

項目地址:

https://github.com/xiekw2010/react-native-gitfeed

5.React-Native-NBA-App

這個項目主要進行查看NBA相關(guān)數(shù)據(jù),界面做的非常Nice,項目整體架構(gòu)也非常不錯,關(guān)鍵還有圖表界面,同時適配Android和iOS雙平臺。也是大家不可多得學(xué)習(xí)的項目。推薦!

項目地址:

https://github.com/wwayne/react-native-nba-app

6.HackerNews

采用純React Native開發(fā)的HackerNews客戶端,同時兼容Android、iOS雙平臺。用到很多常用的開源組件,而且非常適合初學(xué)者入門的項目。有借鑒意義。

項目地址:

https://github.com/iSimar/HackerNews-React-Native

7.iShiWuPai

iShiWuPai是基于React Native和Redux實現(xiàn)的展示型美食類APP。不過當(dāng)前暫時只適配iOS版本,但是效果絕對贊了~ 

項目地址:

https://github.com/ljunb/react-native-iShiWuPai

8.HiApp

采用React Native開發(fā)的一款基于類似微博以及聊天App,同時兼容Android、iOS雙平臺,甚至還有Web端。整體功能有很多可以學(xué)習(xí)的地方。例如效果布局,多語言切換等等。

項目地址:

https://github.com/BelinChung/react-native-hiapp

寫到最后

本文,我們從React的產(chǎn)生聊到學(xué)習(xí)路徑/項目實踐,從底層講到應(yīng)用。那么,如何結(jié)合實際工程環(huán)境,利用現(xiàn)有的React 和js知識,開發(fā)和部署出功能完備的原生APP?

這里推薦一本邦尼·艾森曼(Twitter工程師)的《React Native開發(fā)指南(第2版)》

掃一掃,京東購

●Twitter工程師經(jīng)驗總結(jié) 
● 部署可100%代碼復(fù)用的跨平臺應(yīng)用

本書是一本實踐指南,從基礎(chǔ)知識入手,逐步深入,帶領(lǐng)讀者部署可100%代碼復(fù)用的、成熟的跨平臺移動應(yīng)用。除了框架本身的講解,作者還探討了如何使用第三方庫,以及如何編寫自己的Java或者Objective-C的React Native擴展。第2版新增了部分章節(jié)及附錄,討論了如何在跨平臺組件中實現(xiàn)特定平臺的代碼,通過Redux庫來管理狀態(tài),以及對React Native初學(xué)者更友好的Expo應(yīng)用。

文末討論

結(jié)合應(yīng)用輕量化趨勢,如小程序技術(shù),PWA,談?wù)勀銓?strong>“移動端跨平臺性問題”的思考和理解?

精選留言獲贊前3名,同時,隨機抽取2位同學(xué)各送一本《React Native開發(fā)指南(第2版)》!

活動截止2019.5.17

全棧攻略:
前端學(xué)習(xí)清單 |可能有用
別出聲,這是一份很牛很牛的JS入門攻略!
Django 最佳學(xué)習(xí)路徑 | 涵蓋眾多學(xué)習(xí)資源

圖靈社區(qū)

讀好書,讓代碼更高效!

技術(shù)|交流|圖書|社群

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多