導航:首頁 > 源碼編譯 > react可以運行時編譯嗎

react可以運行時編譯嗎

發布時間:2023-07-10 02:01:50

Ⅰ 如何編譯ReactNative示常式序Examples

編譯示常式序需要將整個項目導入到androidStudio中,androidStudio導入項目時選擇react-native/ReactAndroid目錄。

由於項目依賴ndk因此如果要編譯Examples還需要安裝配置ndk目錄,下載ndk後是一個自解壓程序,會釋放ndk的目錄。

然後需要設置環境變數或者在react-native根目錄下新建local.properties文件,文件內容如下:

sdk.dir=c:\你的sdk目錄

ndk.dir=c:\你的ndk目錄

設置要之後就可以編譯了,導入和編譯的過程比較曲折,請繼續看下文。

在編譯AwesomeProject項目時,沒有用到ndk,實際上這里的ndk默認情況下並沒有用到,只是gradle的設置里有ndk因此必須配置ndk才能導入項目。

ndk是在編譯核心庫是才用到,核心庫位於react-native/ReactAndroid,導入整個項目時以lib形式存在。查看Examples目錄下UIExplorer,會發現在build.gradle是以在線的方式導入核心庫的。通過源碼的方式導入被注釋掉了。

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:23.0.1'

// Depend on pre-built React Nativecompile 'com.facebook.react:react-native:0.11.+'

// Depend on React Native source.

// This is useful for testing your changes when working on React Native.

// compile project(':ReactAndroid')

}

由此可知,編譯UIExplorer並不需要ndk,如果你不想設置ndk,有2個辦法

1.拷貝AwesomeProject項目中的build.gradle,settings.gradle到UIExplorer的android目錄,在導入項目時選擇UIExplorer/android就可以了,這樣androidStudio會導入單個項目,否則會導入整個項目。

2.用androidStudio新建一個同名的項目,然後把UIExplorer目錄中的文件拷貝到新建的項目中。

編譯好之後啟動伺服器端,到react-native目錄下執行:

npm install

node packager\packager.js

windows下如果出現錯誤需要根據錯誤提示修改代碼http://www.cnblogs.com/zhaojietec/p/4853273.html

不過需要注意的是,目前為止,UIExplorer在Android下有一個bug,IOS下沒有問題,通過google可以找到了解決辦法。https://github.com/facebook/react-native/issues/2855

原因是,js代碼和android原生代碼不同步,通過build.gradle可以看到android下的引用的reactNative核心庫為11,而js代碼版本已經更新到12了。

解決的辦法有2個,一個是使用git工具(如smartGit),將js代碼恢復到之前的版本,另一個辦法是重新編譯reactNative的核心庫,編譯核心庫需要ndk,在mac下沒有問題,在windows編譯會出錯。編譯reactNative核心庫,對UIExplorer下注釋掉的依賴項進行修改即可,編譯速度較慢 需要在線下載第三方依賴庫。

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:23.0.1'

// Depend on pre-built React Native//compile 'com.facebook.react:react-native:0.11.+'

// Depend on React Native source.

// This is useful for testing your changes when working on React Native.

compile project(':ReactAndroid')

}

由於windows下無法編譯,所以這里提供編譯好的aar文件,修改UIExplorer build.gradle中的依賴項就可以了。至於如何引入aar文件,可以自行搜索。當然mac下同樣也可以用這個aar,可以省去不少麻煩。

Ⅱ webpack怎麼自動編譯reactjs

使用webpack編譯打包react是非常便捷的。這也是人們常用的一種方式。但是在使用過程中,一定要注意一個細節,那就是webpack和babel-loader的安裝位置。

react安裝

當然,使用react必須先安裝react和react-dom,其安裝方式很簡單(前提是我們必須安裝有npm)。

# npm install react react-dom –save

react安裝就這樣簡單,其實react和react-dom就是相當於js類庫。但是我們需要解析器來解析react的語法。

react解析器babel安裝

babel安裝的位置是我們這篇文章的目的。babel有兩種安裝的位置:一種是全局安裝,一種是本地安裝——也就是安裝在項目目錄下的node_moles下。

# npm install babel-core babel-loader babel-preset-react –save-dev

//本地安裝

#npm install babel-core babel-loader babel-preset-react –g

//全局安裝

一般情況下我們選擇本地安裝,這樣便於管理。

打包工具webpack的安裝

同樣,webpack的安裝位置也是這篇文章描述的所要注意的點。當然,它也有兩種安裝的位置:全局安裝和本地安裝。

# npm install webpack –save-dev

//本地安裝

# npm install webpack –g

//全局安裝

如果選擇本地安裝,那麼在使用的時候較麻煩一些,我們需要在命令前加上路徑。所以一般情況下都是全局安裝,這樣就可以在任意位置直接使用。

這里我們選擇全局安裝。這樣才能出現我們將要說的問題。

webpack配置文件編寫

安裝完webpack以後,下面來編寫webpack配置文件webpack.config.js。這里我不寫全部,只寫載入loader部分。

代碼一

mole:{

loaders: [

{

test: /\.js$/,

loader: 'babel',

query:{

presets:['react']

}

}

]

}

編譯過程中出現的錯誤

好了,到了關鍵的地方了。現在我們整個系統的配置是這樣的:babel安裝到本地,webpack安裝到全局位置,webpack配置文件如代碼一所示。

接下來我們就要編譯打包我們的項目。

# webpack

執行該命令以後,你會發現出現如下的錯誤:

ERROR in (webpack)/~/node-libs-browser/~/process/browser.js

Mole build failed: Error: Couldn't find preset "react" relative to
directory
"/node/lib/node_moles/webpack/node_moles/node-libs-browser/node_moles/process"

……

這也就是說找不到babel-preset-react。

好了,說了這么多終於在這里引出了我們將要討論的問題(這里大家不要嫌我啰嗦,為什麼出現這種問題,其原因總要弄清楚。什麼樣的配置會出現這種問題,了解以後才容易上手解決)。

解決問題的方式

出現上述問題以後,我們有這樣三種方式可以解決。

方式一

要解決這個問題很簡單。我們知道,出現這個問題是因為bable和webpack安裝的位置不同,所以找不到babel-preset-react。因為在配置文件中有這樣一段代碼。

query:{

presets:['react']

}

好了,既然知道是安裝位置不同,那我們可以將babel安裝在全局位置,這樣這個問題不就解決了嗎。

#npm remove babel-core babel-loader babel-preset-react –save-dev

//首先移除原先安裝的babel

#npm install babel-core babel-loader babel-preset-react –g

//全局安裝

沒錯,問題解決了。但是我們不推薦使用這種方式。因為這樣不便於管理,所以還是使用其他的方式。

方式二

此種方式和方式一大同小異。方式一是改變babel的安裝位置,而這里是改變webpack的安裝位置。原先webpack是安裝到全局位置的,所以找不到安裝到本地項目目錄下的babel-preset-react。因此我們可以改變webpack的位置。

# npm remove webpack –g

//移除原先的webpack

# npm install webpack –save-dev

//將webpack安裝到本地位置——也就是項目目錄下的node_moles中

# ln –s /項目根目錄/node_moles/webpack/bin/webpack.js /usr/bin/webpack

//為了使用webpack方便,在這里我們在/usr/bin目錄下建立軟連接(也就是快捷方式)

//這樣我們就可以在任意位置直接使用webpack命令了。

此時我們已經改變了webpack的安裝位置。現在二者同在項目目錄下安裝。所以可以正確編譯了。

此種方式較方式一,我個人比較推薦這種方式,這樣比較方便管理。但是,這種方式也不是沒有弊端。如果我們有多個項目,那我們就需要在每個項目下都安裝webpack,那豈不是很麻煩。所以這種方式也不是很好。

方式三

該方式應該說是最值得推薦的,因為不需要改變webpack和babel的安裝位置。webpack還是在全局位置,babel還是在本地項目位置下。我們需要做的就是修改webpack的配置文件,在代碼一的基礎上添加一句代碼。

代碼二

mole:{

loaders: [

{

test: /\.js$/,

loader: 'babel',

exclude:/node_moles/,

query:{

presets:['react']

}

}

]

}

Ⅲ 如何使用react-tools將jsx編譯成JavaScript

1,通過npm安裝react-tools
npm –g react-tools
2,通過cmd進入項目根目錄執行watch命令 jsx --watch src/ build/
src路徑下存放的是jsx文件,編譯後的js存放到build路徑下
3,當目標文件變化以後,自動構建生成新的js文件。

編程時選用的程序設計語言,對軟體的開發與維護的影響

【CSDN 編者按】「如果我們把人類文明想像成汽車的話,那麼軟體開發行業就相當於汽車的引擎,編程語言就像引擎的燃料。」作為一名開發者,需跟隨技術潮流的發展來學習新技術。2020年,你有計劃新學一門編程語言嗎?

本文作者從一名架構師的角度,詳細分析了7種現代編程語言的優點與功能,你對哪門語言最感興趣呢?

作者 | Md Kamaruzzaman,軟體架構師

譯者 | 彎月,責編 | 伍杏玲

封圖| CSDN 下載於視覺中國

出品 | CSDN(ID:CSDNnews)

以下為譯文:

如果我們把人類文明想像成汽車的話,那麼軟體開發行業就相當於汽車的引擎,而編程語言就像引擎的燃料。作為一名開發者,今年你應該學習哪種編程語言呢?

學習一種新的編程語言無疑是時間、精力和智力上的巨大投資, 但是學習一種新的編程語言可以提升你的軟體開發技術力,促進你的職業發展。

在這里,我將獻上一份現代編程語言的列表,這些語言不僅有助於提高你的生產力,而且還可以促進你的職業發展,並讓你成長為更優秀的開發人員。這份列表還涵蓋了非常廣泛的領域:系統編程、應用程序開發、Web開發、科學計算等。

什麼是現代編程語言?

「現代編程語言」這個說法本身就很含糊。許多人認為Python和JavaScript等語言是現代編程語言,還認為Java是一種古老的編程語言。實際上,這幾種語言大約在同一時間出現:1995年。

大多數主流編程語言是上個世紀開發的:七十年代(如C)、八十年代(如C ++)、九十年代(如Java、Python、JavaScript)。這些語言在設計上並沒有考慮現代軟體開發生態系統:多核CPU、GPU、快速的互聯網、移動設備、容器和雲等。盡管許多語言中的許多功能都已進行一些改進,如並發等,而且在不斷調整自己以適應時代,但它們依然保留了向後兼容性,無法拋棄那些過時的舊功能。

在這方面,Python就做得很好(某種意義上也未必是好事),Python 2和Python 3兩者之間有明確的分界線。很多語言常常會為解決同一個問題提供十餘種的方法,同時又沒有顧及到開發人員的感受。根據StackOverflow的開發人員調查,大多數舊時的主流編程語言在「最可怕的語言」排名都名列前茅:

如果非要在新舊編程語言之間劃個界限的話,那麼應該是2007年6月29日,也就是第一台iPhone發行的時候。在這之後,編程語言界發生了很大變化。因此,在本文的列表中,我只考慮2007年以後的編程語言。

為什麼要學習新語言?

首先,現代編程語言充分利用現代計算機硬體(多核CPU、GPU、TPU)、移動設備、大量數據、高速互聯網、容器和雲的優勢。大多數現代編程語言會關注開發人員的體驗,比如:


閱讀全文

與react可以運行時編譯嗎相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:736
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163