ReactNative之項(xiàng)目結(jié)構(gòu)介紹(一)

前言

眼看很多公司都開始嘗試使用ReactNative,達(dá)到跨平臺(tái)開發(fā)雏逾,最近也寫了很多文章,希望讓更多想了解的同學(xué)快速上手ReactNative.

如果喜歡我的文章熊尉,可以關(guān)注我微博:袁崢Seemygo

ReactNative之項(xiàng)目結(jié)構(gòu)介紹

  • 一沪猴、初始化ReactNative工程
    • 自動(dòng)創(chuàng)建iOS和安卓工程麸俘,和對(duì)應(yīng)的JS文件,index.ios.js吵瞻,index.android.js
    • 并且通過Npm加載package.json中描述的第三方框架葛菇,放入node_modules文件夾中
react-native init ReactDemo
  • 二、打開iOS工程,找到AppDelegate.m文件橡羞,查看程序啟動(dòng)完成
    • 注意:加載控件方法(initWithBundleURL:moduleName:initialProperties:launchOptions:)
    • moduleName不能亂傳眯停,必須跟js文件中注冊(cè)的模塊名字保持一致
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  NSURL *jsCodeLocation;

  // 1.獲取js文件url
  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];

  // 2.加載控件
  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"ReactDemo"
                                               initialProperties:nil
                                                   launchOptions:launchOptions];
  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

  // 3.創(chuàng)建窗口
  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  
  // 4.設(shè)置窗口根控制器的View
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  
  // 5.顯示窗口
  [self.window makeKeyAndVisible];
  
  return YES;
}

  • 三、打開index.ios.js文件卿泽,使用webStorm打開莺债。webStorm代碼提示

    • iOS程序一啟動(dòng),就會(huì)加載這個(gè)文件签夭,去創(chuàng)建組件齐邦,并且把加載完的組件顯示到界面上
  • index.ios.js實(shí)現(xiàn)步驟

    • 1.加載React模塊,因?yàn)樾枰玫絁SX第租,加載Compoent措拇,需要用到里面的Compoent組件
      • React默認(rèn)組件,Compoent非默認(rèn)組件慎宾,都在react文件夾中丐吓。
    • 2.加載AppRegistry,StyleSheet,Text,View原生組件浅悉,在react-native文件夾中
    • 3.自定義組件,作為程序入口組件
    • 4.創(chuàng)建樣式表
    • 5.注冊(cè)組件,程序入口券犁,程序一啟動(dòng)就會(huì)自動(dòng)加載注冊(cè)組件.
// 1.加載React,Componet組件
import React,{compoent} from 'react'

// 2.加載原生組件
import
{
    AppRegistry,
    StyleSheet,
    View,
    Text
}
from 'react-native'

// 3.自定義組件,作為程序入口組件
export default class ReactDemo extends Component {

    // 當(dāng)加載組件的時(shí)候,就會(huì)調(diào)用render方法,去渲染組件
    render(){
        return (
            <View style={styles.mainStyle}>

            </View>
        )
    }
}

// 4.創(chuàng)建樣式表
// 傳入一個(gè)樣式對(duì)象,根據(jù)樣式對(duì)象中的描述,創(chuàng)建樣式表
var styles = Stylesheet.create({
    mainStyle:{
        flex:1,
        backgroundColor:'red'
    }
})

// 5.注冊(cè)組件,程序入口
// 第一個(gè)參數(shù):注冊(cè)模塊名稱
// 第二個(gè)參數(shù):函數(shù), 此函數(shù)返回組件類名, 程序啟動(dòng)就會(huì)自動(dòng)去加載這個(gè)組件
AppRegistry.registerComponent('ReactDemo',()=>ReactDemo)

ReactNative語法

  • 對(duì)于第一次接觸ReactNative的同學(xué)术健,最痛苦的是什么時(shí)候使用{},什么時(shí)候使用(),當(dāng)然我也經(jīng)歷過那段時(shí)間粘衬,為此簡(jiǎn)單總結(jié)了下苛坚。
  • ReactNative中,使用表達(dá)式的時(shí)候需要用{}包住
style={styles.mainStyle}
  • ReactNative中,在字符串中使用變量的時(shí)候色难,需要用{}包住
var str = 'hello'
<Text>{str}</Text>
  • ReactNative中,對(duì)象等缀,字典需要用{}包住
    • style = {},最外層表達(dá)式枷莉,用{}包住
    • {flex:1},對(duì)象,用{}包住
<View style={{flex:1}}></View>
  • 創(chuàng)建組件<View></View>尺迂,必須要用()包住
    • 因此只要返回組件笤妙,都需要用()
    render(){
        return (
            <View style={styles.mainStyle}>

            </View>
        )
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市噪裕,隨后出現(xiàn)的幾起案子蹲盘,更是在濱河造成了極大的恐慌,老刑警劉巖膳音,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件召衔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡祭陷,警方通過查閱死者的電腦和手機(jī)苍凛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兵志,“玉大人醇蝴,你說我怎么就攤上這事∠牒保” “怎么了悠栓?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)按价。 經(jīng)常有香客問我惭适,道長(zhǎng),這世上最難降的妖魔是什么俘枫? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任腥沽,我火速辦了婚禮,結(jié)果婚禮上鸠蚪,老公的妹妹穿的比我還像新娘今阳。我一直安慰自己师溅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布盾舌。 她就那樣靜靜地躺著墓臭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妖谴。 梳的紋絲不亂的頭發(fā)上窿锉,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音膝舅,去河邊找鬼嗡载。 笑死,一個(gè)胖子當(dāng)著我的面吹牛仍稀,可吹牛的內(nèi)容都是我干的洼滚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼技潘,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼遥巴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起享幽,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤铲掐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后值桩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摆霉,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年颠毙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斯入。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛀蜜,死狀恐怖刻两,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滴某,我是刑警寧澤磅摹,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站霎奢,受9級(jí)特大地震影響户誓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幕侠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一帝美、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晤硕,春花似錦悼潭、人聲如沸庇忌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽皆疹。三九已至,卻和暖如春占拍,著一層夾襖步出監(jiān)牢的瞬間略就,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工晃酒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留表牢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓贝次,卻偏偏與公主長(zhǎng)得像初茶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浊闪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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