React Native開發(fā)總結(jié)之:開發(fā)技巧和調(diào)試技巧

歡迎大家加群討論

點(diǎn)擊鏈接加入群聊【ReactNative技術(shù)交流群3】:1085660877

還需要完善

一愚臀、調(diào)試技巧:

1.1開啟Developer Menu

** Android模擬器:**
可以通過(guò)Command? + M或者搖一搖手機(jī)
快捷鍵來(lái)快速打開Developer Menu。也可以通過(guò)模擬器上的菜單
鍵來(lái)打開。
高版本的模擬器通常沒(méi)有菜單鍵的唇兑,不過(guò)Nexus S上是有菜
單鍵的咙边,如果想使用菜單鍵狐粱,可以創(chuàng)建一個(gè)Nexus S的模擬器拒啰。
iOS模擬器:
可以通過(guò)Command? + D
快捷鍵來(lái)快速打開Developer Menu
在真機(jī)上:
在真機(jī)上你可以通過(guò)搖動(dòng)手機(jī)來(lái)開啟Developer Menu揭措。

1.2 Reload js

Reload js即將你項(xiàng)目中js代碼部分重新生成bundle,然后傳輸給模擬器或手機(jī)刻蚯。在Developer Menu中有Reload
選項(xiàng)绊含,單擊Reload
React Native重新加載js。對(duì)于iOS模擬器你也可以通過(guò)Command? + R
快捷鍵來(lái)加載js炊汹,對(duì)于Android模擬器可以通過(guò)雙擊r
鍵來(lái)加載js躬充。

提示:如果Command? + R
無(wú)法使你的iOS模擬器加載js,則可以通過(guò)選中Hardware menuKeyboard選項(xiàng)下的 Connect Hardware Keyboard

1.3 Debug JS Remotely

可以進(jìn)行chrome調(diào)試讨便。


image.png

然后選擇檢查代碼:

image.png

可以在console面板進(jìn)行調(diào)試充甚!
停止可以再次點(diǎn)擊:

image.png

1.4 Enable Live Reload

Automatic reloading
該選項(xiàng)提供了React Native動(dòng)態(tài)加載的功能。當(dāng)你的js代碼發(fā)生變化后霸褒,React Native會(huì)自動(dòng)生成bundle然后傳輸?shù)侥M器或手機(jī)上津坑。省去手動(dòng)Reload

1.5更方便的方法Enable Hot Reloading

熱更新傲霸,當(dāng)你的代表發(fā)生變化時(shí),模擬器上會(huì)實(shí)時(shí)進(jìn)行修改眉反。而且無(wú)需跑到重啟界面昙啄,可以在當(dāng)前界面進(jìn)行渲染!

1.6 常用命令

創(chuàng)建項(xiàng)目

react-native init AwesomeProject   //AwesomeProject是項(xiàng)目名
啟動(dòng) Node.js web server

react-native start
啟動(dòng)android

react-native run-android
啟動(dòng)ios

react-native run-ios

運(yùn)行特定模擬器:
react-native run-ios --simulator "iPhone 5"

1.7 解除黃屏警告 :

 在默認(rèn)情況下寸五,開發(fā)模式中啟用了黃屏警告梳凛。可以通過(guò)以下代碼關(guān)閉:

console.disableYellowBox = true;
console.warn('YellowBox is disabled.');
你也可以通過(guò)代碼屏蔽指定的警告梳杏,像下面這樣調(diào)用ignoreWarnings方法韧拒,參數(shù)為一個(gè)數(shù)組:

YellowBox.ignoreWarnings(['Warning: ']);
數(shù)組中的字符串就是要屏蔽的警告的開頭的內(nèi)容。(例如上面的代碼會(huì)屏蔽掉所有以Warning開頭的警告內(nèi)容)

紅屏和黃屏在發(fā)布版(release/production)中都是自動(dòng)禁用的十性。

1.8 訪問(wèn)控制臺(tái)日志

在運(yùn)行RN應(yīng)用時(shí)叛溢,可以在終端中運(yùn)行如下命令來(lái)查看控制臺(tái)的日志:
$ react-native log-ios$ react-native log-android

此外,你也可以在iOS模擬器的菜單中選擇Debug → Open System Log...
來(lái)查看劲适。如果是Android應(yīng)用楷掉,無(wú)論是運(yùn)行在模擬器或是真機(jī)上,都可以通過(guò)在終端命令行里運(yùn)行adb logcat *:S ReactNative:V ReactNativeJS:V
命令來(lái)查看霞势。

1.9React Developer Tools 的安裝

With React Native 0.43 or higher, you can use [the standalone version of React Developer Tools](https://github.com/facebook/react-devtools/tree/master/packages/react-devtools) to debug the React component hierarchy. To use it, install the react-devtools
 package globally:

npm install -g react-devtools

譯注:react-devtools依賴于electron烹植,而electron需要到國(guó)外服務(wù)器下載二進(jìn)制包,所以國(guó)內(nèi)用戶這一步很可能會(huì)卡住愕贡。此時(shí)請(qǐng)?jiān)诃h(huán)境變量
中添加electron專用的國(guó)內(nèi)鏡像源:ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/"
草雕,然后再嘗試安裝react-devtools。

安裝完成后在命令行中執(zhí)行react-devtools
即可啟動(dòng)此工具:
react-devtools

也可以在固定項(xiàng)目中安裝
cd到你的項(xiàng)目目錄:
Yarn, you can runyarn add --dev react-devtools, and then runyarn react-devtools from your project folder to open the DevTools. With npm, you can runnpm install --save-dev react-devtools, add "react-devtools": "react-devtools" to the scripts section in your package.json, and then runnpm run react-devtoolsfrom your project folder to open the DevTools.

二固以、開發(fā)技巧:

2.1 js 用正則表達(dá)式驗(yàn)證URL:

方法一(比較簡(jiǎn)單的方法):

// 用正則表達(dá)式判斷是否為正確的網(wǎng)址
                var strRegex = /^((https|http|ftp|rtsp|mms)?:\/\/)+[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
                var reg=new RegExp(strRegex);
                if(!reg.test(webURL)){
                    alert("無(wú)效網(wǎng)址墩虹!");
                    return;
                }
                else{
                    // alert("輸入成功");
                }
                // 用正則表達(dá)式判斷是否為正確的網(wǎng)址 END

方法二:

 // 用正則表達(dá)式判斷是否為正確的網(wǎng)址
                var strRegex = "^((https|http|ftp|rtsp|mms)?://)"
                    + "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@
                    + "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
                    + "|" // 允許IP和DOMAIN(域名)
                    + "([0-9a-z_!~*'()-]+\.)*" // 域名- www.
                    + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二級(jí)域名
                    + "[a-z]{2,6})" // first level domain- .com or .museum
                    + "(:[0-9]{1,4})?" // 端口- :80
                    + "((/?)|" // a slash isn't required if there is no file name
                    + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
                var reg=new RegExp(strRegex);
                if(!reg.test(webURL)){
                    alert("無(wú)效網(wǎng)址!");
                    return;
                }
                else{
                    // alert("輸入成功");
                }
                // 用正則表達(dá)式判斷是否為正確的網(wǎng)址 END

方法三:用來(lái)驗(yàn)證IP:

function isValidIP(ip){
    var ipRegExp= /([0-9]{1,3}\.{1}){3}[0-9]{1,3}/;
    if(ipRegExp.exec(ip)){
        return true;
    }else{
        return false;
    }
}

這里比較全面以上是我用過(guò)的這里有些我沒(méi)用過(guò)可以看看:

2.2優(yōu)化打包速度(真機(jī)運(yùn)行速度)

原因

就是react-native-xcode.sh. 每次打包安裝都重新把RN文件打包成main.jsbundle, 在機(jī)械硬盤的渣渣電腦上操作那數(shù)以萬(wàn)計(jì)個(gè)的文件,所以會(huì)很慢

解決:

找到:

image.png

這個(gè)腳本react-native-xcode.sh在最頭上加上

if [ "$CONFIGURATION" = "Debug" ]; then
  echo "--- Skip bundle building in 'Debug' mode"
  exit 0
fi

或者:

DEST=$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH

if [ "$CONFIGURATION" = "Debug" ] && [ -f "$DEST/main.jsbundle" ]; then
  echo "--- Skip bundle building in 'Debug' mode"
  exit 0
fi

這樣真機(jī)測(cè)試的手安裝就會(huì)快了.

注意 :如果你是打包需要注意修改代碼后

,需要Command+Shift+K清除工程緩存, 重新Build, 生成新的main.jsbundle.

相關(guān)文章:
1.React Native開發(fā)錯(cuò)誤警告處理總結(jié)(已解決 !持續(xù)更新)
2.ReactNative 實(shí)現(xiàn)的文件上傳功能(實(shí)測(cè)可行败晴!)
3.React Native開發(fā)總結(jié):一浓冒、開發(fā)環(huán)境配置
4.ReactNative之Android打包APK方法(趟坑過(guò)程)
5.Android 調(diào)試錯(cuò)誤總結(jié)(ReactNative開發(fā))(持續(xù)更新)
6.ReactNative開發(fā)之真機(jī)測(cè)試
7.React Native開發(fā)之iOS打包ipa發(fā)布(親測(cè)可行)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市尖坤,隨后出現(xiàn)的幾起案子稳懒,更是在濱河造成了極大的恐慌,老刑警劉巖慢味,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件场梆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡纯路,警方通過(guò)查閱死者的電腦和手機(jī)或油,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)驰唬,“玉大人顶岸,你說(shuō)我怎么就攤上這事〗斜啵” “怎么了辖佣?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)搓逾。 經(jīng)常有香客問(wèn)我卷谈,道長(zhǎng),這世上最難降的妖魔是什么霞篡? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任世蔗,我火速辦了婚禮,結(jié)果婚禮上朗兵,老公的妹妹穿的比我還像新娘污淋。我一直安慰自己,他們只是感情好余掖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布芙沥。 她就那樣靜靜地躺著,像睡著了一般浊吏。 火紅的嫁衣襯著肌膚如雪而昨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼解阅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛务嫡,可吹牛的內(nèi)容都是我干的甲抖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼心铃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼准谚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起去扣,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤柱衔,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后愉棱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唆铐,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年奔滑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了艾岂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡朋其,死狀恐怖王浴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梅猿,我是刑警寧澤叼耙,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站粒没,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏簇爆。R本人自食惡果不足惜癞松,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望入蛆。 院中可真熱鬧响蓉,春花似錦、人聲如沸哨毁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扼褪。三九已至想幻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間话浇,已是汗流浹背脏毯。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幔崖,地道東北人食店。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓渣淤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吉嫩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子价认,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

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

  • 本文出自《React Native學(xué)習(xí)筆記》系列文章。 在做React Native開發(fā)時(shí)自娩,少不了的需要對(duì)Reac...
    CrazyCodeBoy閱讀 14,620評(píng)論 6 42
  • 在做React Native開發(fā)時(shí)用踩,少不了的需要對(duì)React Native程序進(jìn)行調(diào)試。調(diào)試程序是每一位開發(fā)者的基...
    街角仰望閱讀 545評(píng)論 0 0
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評(píng)論 25 707
  • 持續(xù)更新中...... 一套企業(yè)級(jí)的 UI 設(shè)計(jì)語(yǔ)言和 React 實(shí)現(xiàn)椒功。 https://mobile.ant....
    日不落000閱讀 5,682評(píng)論 0 35
  • 當(dāng)你晚上躺下來(lái)的時(shí)候,仔細(xì)的想想旱眯,其實(shí)人活著真的不容易晨川,每一天都會(huì)發(fā)生你想不到的事情,有高興的删豺、有生氣的共虑、有無(wú)奈的...
    林安福閱讀 1,168評(píng)論 0 2