React?Native服務(wù)啟動流程

React Native 項(xiàng)目我們可以通過react-native start啟動運(yùn)行,那它的執(zhí)行過程是怎樣的呢?

先介紹下node_modules全局包運(yùn)行過程

一:node_modules全局包運(yùn)行過程(以Windows為例):

1:通過npm config get cache可以獲取到全局包的安裝路徑,一般為:“c:\user\xxx\Application Data\npm\node_modules\“

2:進(jìn)入任意一個(gè)全局包里面,以react-native-cli全局包為例,目錄結(jié)構(gòu)如下:

react-native-cli目錄

3:打開該目錄下的package.json,在script里面可以看到該全局包的運(yùn)行命令:

package.json bin

該配置主要作用:
a:在執(zhí)行npm install react-native-cli -g執(zhí)行全局包安裝時(shí),會根據(jù)第3點(diǎn)中bin中的配置生成快捷運(yùn)行命令腳本文件,無后綴的為非windows系統(tǒng)執(zhí)行的,有后綴的為windwos系統(tǒng)執(zhí)行的,生成位置在:“c:\user\xxx\Application Data\npm“,腳本執(zhí)行命令為react-native
b:指定執(zhí)行命令時(shí)運(yùn)行的文件為index.js
執(zhí)行文件

4:在命令行中執(zhí)行react-native命令時(shí),從腳本文件里代碼可以看到是由nodejs加載執(zhí)行到該腳本的,最終執(zhí)行到的是“c:\user\xxx\Application Data\npm\node_modules\react-native-cli\index.js“ 文件

@ECHO off
SETLOCAL
CALL :find_dp0

IF EXIST "%dp0%\node.exe" (
  SET "_prog=%dp0%\node.exe"
) ELSE (
  SET "_prog=node"
  SET PATHEXT=%PATHEXT:;.JS;=;%
)

"%_prog%"  "%dp0%\node_modules\react-native-cli\index.js" %*
ENDLOCAL
EXIT /b %errorlevel%
:find_dp0
SET dp0=%~dp0
EXIT /b
運(yùn)行命令

二:react-native服務(wù)啟動過程:

入口文件cli.js:

我們創(chuàng)建一個(gè)RN項(xiàng)目,通過react-native start啟動項(xiàng)目時(shí),會自啟動一個(gè)服務(wù),通過日志打印可以發(fā)現(xiàn),服務(wù)啟動入口文件為 "項(xiàng)目目錄\node_modules\react-native\cli.js",可能會存在兩種執(zhí)行過程:
1:若在系統(tǒng)窗口命令行或者有些編輯器命令行里執(zhí)行啟動命令,會通過c:\user\xxx\Application Data\npm\node_modules\react-native-cli\index.js里的run方法執(zhí)行到 "項(xiàng)目目錄\node_modules\react-native\cli.js"
2:在有些編輯器命令行里執(zhí)行啟動命令,會直接執(zhí)行到 "項(xiàng)目目錄\node_modules\react-native\cli.js"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容