基于react-native & antd-mobile进行三端开发
思路&选择在网上搜索,看到了多种方案。第一种,利用redux,共享业务逻辑,自己维护两套UI组件;第二种,利用react-native-web,先写移动端,再将移动端转换成H5;第三种:利用styled-components来封装UI组件,也要维护两套UI;第四种:利用antd-mobile来适配三端。 代码编写原则所有的界面元素都使用antd-mobile的组件来实现,不够用的,不符合要求的,直接改动antd-mobile。 关键步骤webpack2配置
import antd-mobile { test: /.(js|jsx)$/,exclude: /node_modules/,use: [{ loader:'babel-loader',options:{ presets: ['es2015',"stage-2",'react'],plugins: [ ["transform-runtime"],["import",{libraryName: "antdm",style: true}] ],} }],}, resolve web.* resolve: { mainFiles: ["index.web","index"],// 这里哦 modules: ['app','node_modules',path.join(__dirname,'../node_modules')],extensions: [ '.web.tsx','.web.ts','.web.jsx','.web.js','.ts','.tsx','.js','.jsx','.react.js',],mainFields: [ 'browser','jsnext:main','main', 布局组件
问题基本解决了,但运行时会有如下的警告信息: Warning: Unknown prop `Component` on <div> tag. Remove this prop from the element. For details,see https://fb.me/react-unknown-prop in div (created by View) in View (at Root.js:15) in Provider (at Root.js:14) in Root (at index.js:20) in AppContainer (at index.js:19) 看源代码,是有个小bug,顺手修改了,编译,运行,问题解决。提交pull requests,人家不可能很快的更新,而且可能有的改动只是为了适应我们自己的项目,因此发布到npm中,名字叫antdm。 程序入口
ios:index.ios.js import React,{ Component } from 'react'; import { AppRegistry,StyleSheet,Text,View } from 'react-native'; import Root from './src/containers/Root'; import configureStore from './src/store/configureStore.js'; const store = configureStore(); class T3 extends Component { render() { return ( <Root store={store}/> ); } } AppRegistry.registerComponent('t3',() => T3); web:/src/web/index.js import React from 'react'; import { render } from 'react-dom'; import { AppContainer } from 'react-hot-loader'; import Root from '../containers/Root'; import configureStore from '../store/configureStore'; const store = configureStore(); render( <AppContainer> <Root store={store} /> </AppContainer>,document.getElementById('root') ) android:index.android.js 还未编写,应该与ios差不多。 项目地址https://git.oschina.net/zhoutk/t3.git https://github.com/zhoutk/t3.git 使用方法git clone https://git.oschina.net/zhoutk/t3.git or git clone https://github.com/zhoutk/t3.git cd t3 npm i ios: npm run ios web: npm run web 小结利用react-native和antd-mobie基本达到移动端适配三端的要求,但在做项目的同时,可能需要基于antd-mobile逐步建立起一套适合自己的UI组件。谢谢阿里的兄弟们! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |