javascript
React之JSX入门
React是由ReactJS與React Native組成,其中ReactJS是Facebook開(kāi)源的一個(gè)前端框架,React Native
是ReactJS思想在native上的體現(xiàn)!
JSX并不是一門(mén)新的語(yǔ)言,僅僅是個(gè)語(yǔ)法糖,允許開(kāi)發(fā)者在JavaScript中書(shū)寫(xiě)HTML語(yǔ)法。,最后每個(gè)
HTML標(biāo)簽都轉(zhuǎn)化為JavaScript代碼來(lái)運(yùn)行
1.環(huán)境
2.載入方式
3.標(biāo)簽 HTML標(biāo)簽 與 ReactJS創(chuàng)建的組件類標(biāo)簽(首字母一定要大寫(xiě))
4.轉(zhuǎn)換 解析器
輸入
轉(zhuǎn)換成: React.createElement(“h3”,null,”輸入”) 返回一個(gè)ReactElement對(duì)象 5.執(zhí)行JavaScript表達(dá)式 var msg=”我是東方耀”;{msg}
React.createElement(“h1”,null,msg) 6.注釋 單行:// 多行:/注釋文本/ 7.屬性 var msg=我是東方耀
React.createElement(“h1”,{width:”10px”},”我是東方耀”) 8.延展屬性 使用ES6的語(yǔ)法 var props={}; props.foo=”1”; props.bar=”1”;ReactJS
ReactJS核心思想:組件化 維護(hù)自己的狀態(tài)和UI 自動(dòng)重新渲染
多個(gè)組件組成了一個(gè)ReactJS應(yīng)用
- React是全局對(duì)象 頂層API與組件API
- React.createClass創(chuàng)建組件類的方法
- React.render渲染,將指定組件渲染到指定DOM節(jié)點(diǎn)
- render:組件級(jí)API,返回組件的內(nèi)部結(jié)構(gòu)
- React.render被ReactDOM.render替代
ReactJS組件生命周期
1.創(chuàng)建階段
getDefaultProps:處理props的默認(rèn)值 在React.createClass調(diào)用
2.實(shí)例化階段
React.render(
組件之間通信實(shí)例
<!DOCTYPE html> <html> <head lang="en"><meta charset="UTF-8"><title>React組件通信</title><script type="text/javascript" src="react.js"></script><script type="text/javascript" src="react-dom.js"></script><script type="text/javascript" src="browser.min.js"></script> </head> <body> <div id="example"></div> <script type="text/babel">var Parent=React.createClass({click:function(){this.refs.child.getDOMNode().style.color="red";},render:function(){return (<div onClick={this.click} >Parent is :<Child name={this.props.name} ref="child"></Child></div>);}});var Child=React.createClass({render:function(){return <span> {this.props.name} </span>;}});ReactDOM.render(<Parent name="React語(yǔ)法基礎(chǔ)" /> ,document.getElementById('example'));</script> </body> </html>React Native實(shí)戰(zhàn)之調(diào)試與打包發(fā)布
http://localhost:8081/index.android.bundle?platform=android;當(dāng)應(yīng)用啟動(dòng)運(yùn)行的時(shí)候,會(huì)自動(dòng)拉取這
個(gè)bundle文件,該文件里存放的是應(yīng)用的全部邏輯代碼,在目錄中并不存在這個(gè)文件,事實(shí)上,這個(gè)
地址只是一個(gè)請(qǐng)求地址,而非真正的靜態(tài)資源文件,是通過(guò)包服務(wù)器packager通過(guò)動(dòng)態(tài)分析
index.android.js中的依賴,并對(duì)其進(jìn)行合并得到的,而且該服務(wù)允許代碼實(shí)時(shí)渲染。
1.生成一個(gè)簽名密鑰
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
最后它會(huì)生成一個(gè)叫做my-release-key.keystore的密鑰庫(kù)文件
2.找到路徑/android/app/src/main,并在該目錄下新建assets文件夾
3.在工程目錄下將index.android.bundle下載并保存到assets資源文件夾中
curl -k “http://localhost:8081/index.android.bundle” > android/app/src/main/assets/index.android.bundle
這句命令是重點(diǎn),如果assets目錄中不存在該文件,則打包的apk在執(zhí)行時(shí)顯示空白。
Protocol ‘http not supported or disabled in libcurl
Windows下安裝使用curl命令:http://jingyan.baidu.com/article/a681b0dec4c67a3b1943467c.html
4.添加gradle的android keystore配置
打包的apk在未簽名的情況下,在手機(jī)中(非root)是不允許安裝的
在build.gradle文件中
5.啟用Proguard代碼混淆來(lái)縮小APK文件的大小
Proguard是一個(gè)Java字節(jié)碼混淆壓縮工具,它可以移除掉React Native Java(和它的依賴庫(kù)中)中沒(méi)
有被使用到的部分,最終有效的減少APK的大小。
重要:啟用Proguard之后,你必須再次全面地測(cè)試你的應(yīng)用。Proguard有時(shí)候需要為你引入的每個(gè)原
生庫(kù)做一些額外的配置。參見(jiàn)app/proguard-rules.pro文件。
def enableProguardInReleaseBuilds = true
6.在/android/目錄中執(zhí)行g(shù)radle assembleRelease命令,打包后的文件在
android/app/build/outputs/apk目錄中,例如app-release.apk。如果打包碰到問(wèn)題可以先執(zhí)行 gradle
clean 清理一下。
安裝gradle工具(版本與android\gradle\wrapper下的一致),并配置環(huán)境變量,配置GRADLEHOME
到你的gradle根目錄當(dāng)中,然后把%GRADLEHOME%/bin(linux或mac的是$GRADLE_HOME/bin)加
到PATH的環(huán)境變量。
配置完成之后,運(yùn)行g(shù)radle -v,檢查一下是否安裝無(wú)誤
7.將apk發(fā)布到各大應(yīng)用市場(chǎng)(BUILD SUCCESSFUL)
總結(jié)
以上是生活随笔為你收集整理的React之JSX入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 单片机实验-DA实验
- 下一篇: 建议收藏丨sql行转列的一千种写法!!