JavaScript(React Native凰荚、Node.js等)移動(dòng)燃观、服務(wù)端通吃的全棧語言

作者:51CTO講師李寧
文章源自:http://androidguy.blog.51cto.com/974126/1836109

不管是互聯(lián)網(wǎng)公司,或是傳統(tǒng)的軟件公司便瑟,以及非IT企業(yè)缆毁,大多都需要開發(fā)各種類型的程序,包括移動(dòng)App(主要是Android和iOS)到涂、Web程序脊框、服務(wù)端程序等。這些程序使用的開發(fā)技術(shù)都不盡相同践啄,如Android使用Java開發(fā)浇雹,iOS使用Objective-C或Swift開發(fā)、Web程序頁面使用JavaScript屿讽、HTML5昭灵、CSS等技術(shù),而服務(wù)端的選擇就更多了伐谈,如Java EE烂完、PHP、Python诵棵、Ruby抠蚣、Node.js等。理論上非春,每一類的程序需要不同的開發(fā)小組完成柱徙,如Android開發(fā)小組、iOS開發(fā)小組奇昙,服務(wù)端開發(fā)小組等。這對(duì)于大公司沒什么問題敌完,反正錢多储耐。不過對(duì)于大多數(shù)創(chuàng)業(yè)公司來說,可能是一筆不小的負(fù)擔(dān)滨溉。

為了解決這個(gè)問題什湘,現(xiàn)在出現(xiàn)了很多跨平臺(tái)技術(shù)长赞,包括基于HTML5的混合開發(fā)、C++跨平臺(tái)解決方案等闽撤。不過這些也僅僅是跨平臺(tái)得哆。頂多解決了Android和iOS之間代碼最大限度共享的問題(仍然有一部分無法共享的代碼需要單獨(dú)編寫),而服務(wù)端仍然要我們使用其他技術(shù)開發(fā)哟旗,如Java EE贩据。不過自從有了Node.js以后,JavaScript就成為了服務(wù)端的開發(fā)語言闸餐,而且有了React.js饱亮,系統(tǒng)會(huì)將JSX代碼(在后面介紹)自動(dòng)轉(zhuǎn)換Web頁面的DOM元素。這樣舍沙,JavaScript+JSX近上,連同Web+服務(wù)端一起搞定了,不過好像還少了點(diǎn)什么拂铡,對(duì)壹无,移動(dòng)端(Android和iOS),這就是本文要講的主題:React Native感帅,下面會(huì)詳細(xì)介紹一下React Native格遭,以及用于設(shè)計(jì)UI的JSX。

React Native是Facebook 在 React.js Conf 2015 大會(huì)上推出的一個(gè)用于開發(fā)Android和iOS App的一個(gè)框架留瞳。主要編程語言是JavaScript拒迅,UI使用JSX(一種語法類似于XML的UI描述語言)。

ReactNative和React.js有什么區(qū)別呢她倘?

任何一種跨平臺(tái)框架都有兩部分:UI和邏輯璧微。對(duì)于這兩種技術(shù)來說,UI都使用的是JSX硬梁,而邏輯都是用了JavaScript前硫。

React Native和React.js的主要區(qū)別還是JSX。不管是React Native荧止,還是React.js屹电,在UI上都有一種技術(shù):虛擬DOM(Virtual DOM)

什么是VirtualDOM呢?

其實(shí)JSX只是一種語法糖跃巡。Web通過DOM管理Element危号。而DOM的效率是很低的,為了提高DOM的效率素邪,React.js提供了VirtualDOM外莲,這項(xiàng)技術(shù)的工作是完全在內(nèi)存中完成的,而且是增量修改DOM樹,所以效率非常高偷线。

對(duì)于Web來說磨确,實(shí)際渲染時(shí),仍然需要DOM声邦,所以在最終渲染是乏奥,VirtualDOM仍然要轉(zhuǎn)換成實(shí)際的DOM。而對(duì)于Android和iOS亥曹,就沒有DOM的概念的邓了,UI完全是本地控件實(shí)現(xiàn)的,如Android中的TextView歇式、EditText等驶悟。所以React Native就應(yīng)運(yùn)而生。如果說React.js在運(yùn)行時(shí)將Virtual DOM映射成了DOM材失,那么React Native就是在運(yùn)行時(shí)將Virtual DOM映射成Android和iOS的本地控件痕鳍。

從這一點(diǎn)可以看出,React.js用于Web開發(fā)龙巨,而ReactNative用于開發(fā)Android和iOS App笼呆,他們都將UI抽象成了Virtual DOM,只是在實(shí)際運(yùn)行時(shí)旨别,前者將Virtual DOM映射成了DOM诗赌,后者將Virtual DOM映射成了Android和iOS的本地控件。

由于ReactNative的UI仍然使用Android和iOS的本地控件秸弛,所以在UI渲染上已經(jīng)非常接近Native App了铭若。盡管業(yè)務(wù)邏輯代碼使用JavaScript,但由于JavaScript是即時(shí)編譯的递览,也就是第一次運(yùn)行時(shí)會(huì)將JavaScript代碼編譯成二進(jìn)制叼屠,所以JavaScript的運(yùn)行效率比較高。因此绞铃,React Native的運(yùn)行效率要比基于HTML5镜雨、CSS等技術(shù)的PhoneGap、AppCan高很多儿捧,因?yàn)檫@些技術(shù)直接用HTML5進(jìn)行渲染荚坞,而HTML5會(huì)大量使用DOM技術(shù),DOM在PC端的Web中也不算快菲盾,在移動(dòng)端就更慢了颓影。

總結(jié)

基于ReactNative的App在運(yùn)行效率上接近Native App,而且還擁有混合開發(fā)模式的兩個(gè)優(yōu)點(diǎn):熱更新(無需重新編譯上傳App即可更新亿汞,而且還不用通過App Store審核)和跨平臺(tái)(降低了學(xué)習(xí)成本瞭空,使用同樣的技術(shù)開發(fā)Android和iOS App)。

OK疗我,現(xiàn)在已經(jīng)了解了React Native咆畏,是不是打算學(xué)一下呢!移動(dòng)吴裤、Web和服務(wù)端使用同一種技術(shù)即可解決旧找,盡管都需要進(jìn)行開發(fā),但技術(shù)是通用的麦牺,也就是說只要招JavaScript程序員钮蛛,就可以同時(shí)解決移動(dòng)、Web和服務(wù)端的問題剖膳,使用一個(gè)開發(fā)小組即可解決所有問題魏颓,也無需再招聘Java、OC吱晒、Java EE甸饱、PHP程序員了,這樣會(huì)給創(chuàng)業(yè)公司節(jié)省了大量的開支仑濒。


覺得本文不錯(cuò)的朋友叹话,不要忘記來點(diǎn)贊、分享哦墩瞳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驼壶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子喉酌,更是在濱河造成了極大的恐慌热凹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泪电,死亡現(xiàn)場離奇詭異般妙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)歪架,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門股冗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人和蚪,你說我怎么就攤上這事止状。” “怎么了攒霹?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵怯疤,是天一觀的道長。 經(jīng)常有香客問我催束,道長集峦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮塔淤,結(jié)果婚禮上摘昌,老公的妹妹穿的比我還像新娘。我一直安慰自己高蜂,他們只是感情好聪黎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著备恤,像睡著了一般稿饰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上露泊,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天喉镰,我揣著相機(jī)與錄音,去河邊找鬼惭笑。 笑死侣姆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脖咐。 我是一名探鬼主播铺敌,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屁擅!你這毒婦竟也來了偿凭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤派歌,失蹤者是張志新(化名)和其女友劉穎弯囊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胶果,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匾嘱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了早抠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霎烙。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蕊连,靈堂內(nèi)的尸體忽然破棺而出悬垃,到底是詐尸還是另有隱情,我是刑警寧澤甘苍,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布尝蠕,位于F島的核電站,受9級(jí)特大地震影響载庭,放射性物質(zhì)發(fā)生泄漏看彼。R本人自食惡果不足惜廊佩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望靖榕。 院中可真熱鬧标锄,春花似錦、人聲如沸序矩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽簸淀。三九已至,卻和暖如春毒返,著一層夾襖步出監(jiān)牢的瞬間租幕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工拧簸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劲绪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓盆赤,卻偏偏與公主長得像贾富,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牺六,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容