国产精品亚洲成在人线_又大又粗又猛免费视频_国产免费福利在线视频_美女禁区A级全片免费观看

您當前的位置:首頁 > 新聞資訊 > 產品動態(tài) > 正文

【新東網技術大咖帶您走進React Native】用它就可通吃移動端開發(fā)

發(fā)布時間: 2016-09-09 11:58:01  
分享到:

 

文/閆立幫 華西研發(fā)部

 

 

 

 
 
 
專欄介紹

新東網自2001年成立以來,掌握大數(shù)據(jù)、云計算、通信、物聯(lián)網及區(qū)塊鏈等信息技術,擁有一支逾16年經驗的強大IT團隊。為沉淀企業(yè)技術實力,繼續(xù)發(fā)揮行業(yè)優(yōu)勢,《東網快訊》特邀新東網技術大咖帶您走進這些先進信息技術,揭秘新東網16年來的技術成果,每周五發(fā)布。

 

 

 

一、React Native 是什么

 

React Native 是 Facebook 推出的一個用 Java 語言就能同時編寫 ios,android,以及后臺的一項技術。用大白話說,就是從此一名程序員只用這一門技術,就可以同時寫出 android app,ios app,以及后臺應用程序。而app 也能做到向網頁程序那樣隨時都能更新了。是不是很牛逼?是不是很牛逼?是不是很牛逼?重要的事問三遍!嗯,真的很牛逼。

 

那么我們來看看React Native 受到了如此大的關注,它的優(yōu)越性到底在什么地方呢?React Native整套解決方案完成了江湖統(tǒng)一,F(xiàn)aceBook 也號稱這門技術是 “Learn Once,Write AnyWhere”,即學習成本只有一次,卻完成了所有開發(fā)角色的統(tǒng)一。

 

1.app 將來都是可像網頁一樣隨時更新,隨時發(fā)布。

 

2.對于一名開發(fā)人員,將再也沒有前端、終端、后臺的區(qū)分,他所關注的就是做一整套應用程序,人力資源將得到最大程度的整合與釋放。

 

3.代碼復用將會是主旋律,因為是一種語言,大家重復造輪子的成本會越來越節(jié)省。

 

目前,React Native 也還是有一些缺點的,比如他的 sdk 組件包 size 還比較大,crash 還比較多,在 ios 上支持的內容已經相當不錯了,但在android上 支持則還屬于初級階段。不過,這些都只是一個新技術剛剛誕生時存在的普遍性問題,相信隨著技術不斷地發(fā)展與完善,將都不再是問題。

 

二、React Native 的技術優(yōu)勢

 

React Native作為Facebook推出的一個開源框架,實現(xiàn)以JavaScript開發(fā)移動應用,具有如下優(yōu)勢:

 

1. JavaScript使用門檻低、普及率高 。

 

2. 使用JavaScript開發(fā),開發(fā)成本低:移動端(iOS和Android平臺上),由于內置瀏覽器都采用Webkit內核,因而在使用JavaScript開發(fā)時,完全無需考慮瀏覽器兼容問題,進一步降低了JavaScript的開發(fā)成本。

 

3. React Native采用了JSX語法糖工具。JSX是一種語法轉換工具,能夠將XML標簽轉換為JavaScript代碼。這意味著,你可以在JavaScript里像寫XML一樣去寫JavaScript代碼,不用手動拼接XML格式的字符串,不用顯示地創(chuàng)建標簽和執(zhí)行插入標簽操作,而且這樣寫出來的代碼可讀性非常強,降低維護成本。 

  

4. 原生UI,UI交互效率高。React Native未采用WEB模式,而是使用JavaScript去開發(fā)原生應用。React Native自己實現(xiàn)了一套與原生語言通訊的機制,將JavaScript視為數(shù)據(jù)源,用原生語言去調用數(shù)據(jù)源,然后用原生UI來展示,用原生語言來實現(xiàn)事件機制,這樣便不再有瀏覽器單線程、DOM渲染效率低導致的交互體驗差的問題。由于JavaScript和原生語言的運行效率很高,因而應用交互體驗非常好,堪比原生應用。

 

5. React Ntive與Hybird app、Native APP 的優(yōu)勢對比分析

 

 React Ntive與Hybird app優(yōu)勢對比分析:


1) 不用Webview,徹底擺脫了Webview讓人不爽的交互和性能問題


2)有較強的擴展性,這是因為Native端提供的是基本控件,JS可以自由組合使用


3) 可以直接使用Native原生的「牛逼」動畫(在FB Group這個app里面,面板滑出帶一點果凍彈動,面板基于某個點展開這種動畫隨處可見,這種動畫用Native code來做小菜一碟,但是用Web來做就難上加難)。

 

 優(yōu)勢相對于Native app: 可以通過更新遠端JS,直接更新app。

 

三、React Native 的應用實例

 

這里選用攜程的App首頁作為例子。整個頁面我們可以分為頭部導航欄、 圖片輪播、 9宮格、底部活動幾個部分,大致如下:

 

 

1、頭部導航欄

 

React-Native中實現(xiàn)頭部導航欄很簡單,只要使用NavigatorIOS組件即可。現(xiàn)在開工。

 

1、我們在index.ios.js中添加如下代碼;同時創(chuàng)建文件夾pagaespages下創(chuàng)建Index.js

var React = require(‘react-native‘);

var Index = require(‘./pages/Index‘);

 

var {

    NavigatorIOS,

    AppRegistry,

    StyleSheet,

} = React;

 

var NV = React.createClass({

    render: function(){

        return(

            

                style={styles.container}

                initialRoute={{

                    title: ‘首頁‘,

                    component: Index,

                }}

            />

        );

    }

});

 

var styles = StyleSheet.create({

    container: {

        flex: 1,

    }

});

 

 

AppRegistry.registerComponent(‘HelloWorld‘, () => NV);

 

分析代碼:

 1require:引入外部模塊,就像,引入我們自己創(chuàng)建的/pages/Index.js一樣。

 2)引入定義NavigatorIOSAppRegistry、StyleSheet組件和類。

 3)在render中調用NavigatorIOS組件,initialRoute是初始化路由,title是當前頁面的頭部標題;component是當前路由下顯示的組件;

 4)注意:這里NavigatorIOSstyle需要設置大小,比如這里設置是flex1,否則就不能顯示內容主體;

 5)最后我們需要注冊當前應用:AppRegistry.registerComponent(‘HelloWorld‘, () => NV);

 

 2、創(chuàng)建Index.js文件,文件的內容如下, module.exports就暴露了Index模塊。

 

 

效果如下圖: 

 

 
    

2、圖片輪播

 

這里圖片輪播使用的是第三方組件react-native-swiper,當然React-Native是支持transform可以直接實現(xiàn)一套。我們啟動npm命令行,在項目的根目錄使用如下命令安裝模塊。

 

$ npm react-native-swiper --save

 

安裝完成后,我們需要完成輪播功能。因為可以到github看看swiper暴露的接口和參數(shù)。github地址是:https://github.com/leecade/react-native-swiper

 

1)引入swiper,前面也提到了require.

var Swiper = require(‘react-native-swiper‘);

 

2)使用swiper,將輪播圖封裝成單獨的組件

var sliderImgs = [

    ‘http://images3.c-ctrip.com/SBU/apph5/201505/16/app_home_ad16_640_128.png‘,

    ‘http://images3.c-ctrip.com/rk/apph5/C1/201505/app_home_ad49_640_128.png‘,

    ‘http://images3.c-ctrip.com/rk/apph5/D1/201506/app_home_ad05_640_128.jpg‘

];

var Slider = React.createClass({

    render: function(){

    return (

      

        

        

        

      

    );

  }

});

(3)這樣我們可以直接在render的時候直接用:

 

3、完成第一個9宮格布局

 

4個九宮格都是一樣,實可以封裝成組件,這里采用拷貝的形式,開發(fā)一個,其他3個就ok的,會偷懶是一種智慧。分析下布局:

1)首先是3個列在一行的布局,那么外層組件是需要flexDirection: ‘row‘,各占據(jù)寬度的1/3,即各自flex:1

2)每個列內又分兩行, 需要每個行都是flex:1,各占據(jù)高度的一半;

3)第一列是文字圖片組合,其余都是文字組合;

4)所有行內元素都是水平、垂直居中;

5)這里使用了個TouchableHighlight組件,是為了出發(fā)onPress事件,類似于click或者touch事件。

 

        

        

            

                

                    酒店

                

                

                    

                

            

        

        

            

                海外

            

            

                周邊

            

        

        

            

                團購.特惠

            

            

                客棧.公寓

            

        

    

 

4、樣式類

 

說完了布局的原理,這里需要貼上樣式僅供參考:

var styles = StyleSheet.create({

//container

container:{

    backgroundColor:‘#F2F2F2‘,

    flex:1,

},

//slider

wrapper: {

    height:80,

},

slide: {

    height:80,

    resizeMode: Image.resizeMode.contain,

},

//sbu

sbu_view:{

    height:84,

    marginLeft: 5,

    marginRight:5,

    borderWidth:1,

    borderRadius:5,

    marginBottom:10,

    flexDirection:‘row‘,

},

sbu_red:{

    backgroundColor: ‘#FA6778‘,

    borderColor:‘#FA6778‘,

    marginTop:-70,

},

 

sbu_blue:{

    backgroundColor: ‘#3D98FF‘,

    borderColor:‘#3D98FF‘,

},

 

sbu_green:{

    backgroundColor: ‘#5EBE00‘,

    borderColor:‘#5EBE00‘,

},

 

sbu_yellow:{

    backgroundColor: ‘#FC9720‘,

    borderColor:‘#FC9720‘,

},

sbu_flex:{

    flex:1,

},

sbu_borderRight:{

    borderColor:‘#fff‘,

    borderRightWidth: 0.5,

},

sbu_icon_img:{

    height:40,

    width:40,

    resizeMode:Image.resizeMode.contain,

},

sub_con_flex:{

    flex:1,

    justifyContent: ‘center‘,

    alignItems: ‘center‘,

},

sub_text:{

    justifyContent:‘center‘,

},

font16:{

    fontSize:17,

    color:‘#FFF‘,

    fontWeight:‘900‘,

},

sbu_borderBottom:{

    borderBottomWidth:0.5,

    borderBottomColor:‘#fff‘,

},

img_view:{

    height:62,

    marginLeft:5,

    marginRight:5,

    flexDirection: ‘row‘,

    marginBottom:20,

    backgroundColor:‘#fff‘,

},

img_flex:{

    flex:1,

    borderWidth:1,

    borderColor:‘#ccc‘,

},

img_wh: {

    height:59,

    borderRightWidth:0,

    resizeMode:Image.resizeMode.contain,

}

});

 

著重說下resizeMode:Image.resizeMode.contain。在React-Native中圖片的大小是不會根據(jù)給定一個寬度或者高度而自適應大小的,因此我們需要讓圖片根據(jù)寬度或者高度來自適應,那么可以使用resizeMode:Image.resizeMode.contain。

 

 

 

分享到:
地址:福建省福州市銅盤路軟件大道89號軟件園A區(qū)26號樓 電話:0591-83519233 傳真:0591-87882335 E-mail:doone@doone.com.cn
版權所有 新東網科技有限公司 閩ICP備07052074號-1 閩公網安備 35010202001006號
女性高爱潮有声视频| 久久精品aⅴ无码中文字字幕蜜桃 午夜成人鲁丝片午夜精品 | 亚洲综合区图片小说区| 日本高清成本人视频一区| 精品国产这么小也不放过| 久久精品中文无码资源站| 北条麻妃在线一区二区| 亚洲精品v天堂中文字幕| 粉嫩虎白女毛片人体| 国产剧情麻豆女教师在线观看| 亚洲中久无码永久在线观看同| 亚洲国产精品尤物yw在线观看 | 欧美疯狂性受xxxxx喷水| 国内精品九九久久久精品 | 免费看美女被靠到爽的视频| 蜜臀色欲av在线播放国产日韩| 久久久精品国产sm最大网站| 国产日产成人免费视频在线观看 | 乱中年女人伦av一区二区| 97成人碰碰久久人人超级碰oo| 婷婷无套内射影院| 人妻少妇乱子伦无码视频专区| 亚洲av日韩av高潮潮喷无码| 好日子在线观看视频大全免费动漫| 无码国内精品久久综合88| 色综合久久一区二区三区| 国产成人亚洲综合色婷婷| 超碰97人人射妻| 成年免费视频黄网站zxgk| 在线观看免费a∨网站| 久久九九久精品国产| 国产亚洲情侣一区二区无 | 性欧美暴力猛交69hd| √8天堂资源地址中文在线 | 日本丰满熟妇bbxbbxhd| 黑人巨茎大战欧美白妇| 国产熟女一区二区三区五月婷| 97人人模人人爽人人少妇| 三年中文在线观看免费大全| 亚洲精品无码久久久久久久| 亚洲已满18点击进入在线看片|