Bu yaklaşım size biraz garip gelebilir ancak daha şimdiden dünya genelinde bu yaklaşımın popülaritesi artmaya başladı ve aralarında twitter'ın da bulunduğu saygın firmalar bu şekilde geliştirmelerine başladı bile.. Her neyse konuyu dağıtmadan aşağıda adım adım paylaşıyorum:
DemoProject adında bir dizin oluştun ve bu dizinin içine girin
$ mkdir DemoProject && cd DemoProject
|
npm ile proje oluşturun. Burada web tarafı için çalışıyoruz şuan.
$ npm init DemoProject
|
Burada en kritik kısım dependencies kısmıdır. Buraya dikkat edin.
{
"name": "DemoProject","version": "1.0.0", "description": "Sample web and native applocation ", "main": "index.js", "scripts": { "test": "-" }, "author": "", "license": "ISC", "dependencies": { "babel-core": "^6.25.0", "babel-loader": "^7.1.1", "babel-preset-es2015": "^6.24.1", "babel-preset-react": "^6.24.1", "babel-preset-stage-0": "^6.24.1", "react": "^15.6.1", "react-dom": "^15.6.1", "react-native-web": "0.0.112", "webpack": "^3.2.0", "webpack-dev-server": "^2.5.1", "babel-cli": "^6.24.1" } } |
$ rm -rf ./node_modules && yarn
|
$ rm -rf ./node_modules && npm install
|
$ touch webpack.config.js
|
module.exports = {
entry: "./entry.js",output: { path: __dirname, filename: "bundle.js" }, module: { loaders: [ { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader', query: { presets: ['es2015', 'stage-0', 'react'] } } ] }, resolve: { alias: { "react-native": "react-native-web" } } }; |
Native ve Web kodlarımız arasında köprü görevi görecek olan entry.js dosyasını oluşturun
$ touch entry.js
|
document.write(require('./DemoNativeApp/index.android.js'));
|
$ touch index.html
|
<html>
<head><meta charset="utf-8"> </head> <body id="react-root"> <script type="text/javascript" src="bundle.js" charset="utf-8"></script> </body> </html> |
$ react-native init DemoNativeApp
|
Burada index.html dosyasındaki react-root ID'sine native den web'e dönüşecek içeriği yazacağız.
if (window.document) { AppRegistry.runApplication('DemoNativeApp', { initialProps: {}, rootTag: document.getElementById('react-root') });
}
|
$ cd DemoNativeApp
|
$ react-native run-android
|
$ webpack-dev-server
|
Bu aşamadan sonra projenizin kaynak kodlarına yapacağınız müdahaleden iOS,Android gibi web tarafı da etkilenecektir. Yani bir yerde yazdığınız kod 3 platformda da çalışmış olacaktır.
Hiç yorum yok:
Yorum Gönder