React Native搭配TypeScript进行跨平台开发
搭建开发环境
使用npx react-native init reactNativeTs --template react-native-template-typescript
创建模版
创建模版过程中可能遇见的问题: pod install失败. 具体报错:
fatal: unable to access 'https://github.com/google/glo... LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
个人经过尝试一般网络环境下可能下载失败, 开启代理也可能失败, 建议将网络改为Wifi后重新pod install
.
多环境配置
使用react-native-config
进行多环境配置比起之前process.env.NODE_ENV
进行判断简单的多. 我们只需在项目根目录下新建.env
即可进行配置.
API_URL = 'api.com'
或者.env.development
还可以是.env.production
.
由于该依赖包需要对原生android文件进行修改所以我们需要在android/app/build.gradle
下添加apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
绝对路径配置
通常情况下我们的应用会由许多页面构建成, 这就意味着我们可能在不同的文件中导入需要的组件或者工具方法, 如果页面少我们可以使用../
或者../../
这种方式. 一旦应用复杂目录嵌套深前面这种方式将难以维护, 所以我们通过插件来配置查找路径. 首先我们安装babel-plugin-module-resolver
接着在babel.config.js
中添加依赖并配置相关路径:
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
+ plugins: [
+ [
+ 'module-resolver',
+ {
+ root: ['./src'],
+ alias: {
+ '@/utils': './src/utils',
+ '@/pages': './src/pages',
+ '@/models': './src/models',
+ '@/navigator': './src/navigator',
+ '@/config': './src/config',
+ '@/assets': './src/assets',
+ '@/compontns': './src/components'
+ }
+ }
+ ]
+ ]
}
可以看到我需要的所有页面或方法都放在src
下的不同目录中.
接下来修改tsconfig.json
, 我们放开该文件中的baseUrl
和paths
, 修改如下:
"baseUrl": "./src",
"paths": {
"@/assets/*": ["assets/*"],
"@/components/*": ["components/*"],
"@/config/*": ["config/*"],
"@/models/*": ["models/*"],
"@/navigator/*": ["navigator/*"],
"@/pages/*": ["pages/*"],
"@/utils/*": ["utils/*"]
}
至此React-Native-Ts开发模版搭建完成. 后面开发其他React Native项目时直接使用即可.
React-Native-Ts-Template