1.RN是否支持C/C++代碼
在Node.js的層次上定铜,是支持使用一個(gè)叫node-gyp的技術(shù),可以將C/C++代碼編譯成 .node 文件怕敬,然后供node服務(wù)器使用揣炕。我試了一下在RN上實(shí)踐使用了這個(gè)技術(shù)的swisseph版本(https://github.com/mivion/swisseph),悲催地發(fā)現(xiàn)RN并不支持.node文件东跪。最后畸陡,只能乖乖地分別在iOS和安卓平臺(tái)上使用C,制作成原生的模塊虽填,供RN使用丁恭。
搜索時(shí)發(fā)現(xiàn)已經(jīng)有人在研究這個(gè)。路線是 C 代碼轉(zhuǎn)成 JAVA 代碼斋日,JAVA代碼再轉(zhuǎn)為RN能用的代碼牲览,套路很深,一時(shí)進(jìn)行不下去恶守。
2.RN不支持 __dirname 全局參數(shù)
目前第献,可能會(huì)有一些npm_modules 使用 __dirname 作為全局參數(shù)調(diào)用。在RN中引用的時(shí)候兔港,會(huì)報(bào) __dirname 參數(shù)錯(cuò)誤庸毫。這個(gè)時(shí)候,需要在模塊相應(yīng)的js文件中衫樊,將 __dirname 取消飒赃,路徑變成相對(duì)路徑的引用即可。
3.運(yùn)行項(xiàng)目時(shí)的緩存問(wèn)題
通過(guò)npm install 到項(xiàng)目底下的模塊橡伞,似乎在更改其內(nèi)容后盒揉,沒(méi)有辦法通知cli Server模塊內(nèi)容已改變,重新 react-native run-ios 也沒(méi)有辦法解決這個(gè)問(wèn)題兑徘。這個(gè)時(shí)候刚盈,需要:
1)關(guān)閉原來(lái)正在運(yùn)行的cli服務(wù),點(diǎn)終端窗口左上的X就好挂脑。
2)打開(kāi)終端執(zhí)行代碼:
cd 項(xiàng)目路徑
npm start --reset-cache
3)重新在手機(jī)模擬器界面reload即可藕漱。
以上這個(gè)代碼,可以做 .sh 文件崭闲,然后通過(guò)右擊該文件肋联,選擇打開(kāi)方式跟終端app綁定。之后雙擊該文件即可執(zhí)行以上代碼內(nèi)容(可以進(jìn)一步將 .sh 文件拖放到Launch Dock上)刁俭。.sh文件的內(nèi)容如下
#! /bin/bash
cd 項(xiàng)目路徑
npm start --reset-cache
4.圖標(biāo)字體的使用
現(xiàn)在比較流行用這個(gè)橄仍,圖標(biāo)字體文件輕量,使用起來(lái)更簡(jiǎn)單。我在做的占星軟件侮繁,其實(shí)所使用的占星符號(hào)也是來(lái)自于字體虑粥。從Object-C轉(zhuǎn)過(guò)來(lái)之后,使用圖標(biāo)字體變得水到渠成宪哩。以下是一些有用的資源:
1)開(kāi)源項(xiàng)目react-native-vector-icons里面有多種圖標(biāo)字體娩贷,同時(shí)該模塊也支持自定義。
2)自定義字體時(shí)锁孟,需要處理一套3個(gè)文件:字體本身.ttf彬祖,字體.js,字體.json(定義對(duì)應(yīng)編碼的文件)品抽。這三個(gè)文件參照項(xiàng)目已有文件Copy再修改就好储笑。需要注意,在"字體.js"中桑包,要給出的參數(shù)是 FontFamily南蓬,這個(gè)并不跟字體名稱(chēng)一樣纺非,而是需要對(duì)照字體屬性放上去哑了。
3)編輯字體,Mac下可以考慮軟件 Glyphs 2烧颖。iOS支持ttf和otf格式弱左。
4)如果想繞開(kāi) react-native-vector-icons,自已造輪子的話炕淮,以下代碼很關(guān)鍵:
glyph=String.fromCharCode(glyph); //glyph 是字符在字體中的編碼拆火,例如 F0A0 這種的10進(jìn)制數(shù)字
// 以下代碼在render(){}中:
<Text>{glyph}</Text>