前端程序猿的天花板?react-native开发及调试方案(真实项目,建议收藏)

简介: 笔记

1. React Native 概述


将原生开发的最佳部分与 React 相结合。

酌量添加,多少随意。随时都可以把 React Native 无缝集成到你已有的 Android 或 iOS 项目,当然也可以完全从头焕然一新地重写。

这是目前很好的一款做APP的框架。(上手也有一定难度)

个人认为,使用此框架和你的技术深浅关系不大,主要是要自己通过真实开发去踩坑,真正的程序猿勇士,都是踩坑过来的~

接下来把本人踩的坑分享给大家:

image.png


2. 开发与调试工具


  • 开发工具:vscode(这个不用多说了)
  • 调试工具:mumu模拟器(模拟器是必不可少的,APP无法在浏览器运行

2.1 mumu模拟器操作步骤:

  • 科学上网,安装它
  • 导入APP包(当前项目)

image.png

2.2 运行与调试

需要开启两个服务

  • node依赖
node ./node_modules/react-native/local-cli/cli.js start --reset-cache


image.png


  • 运行项目
npm run dev:rn

image.png


  • 项目启动后,刷新mumu浏览器(双击R,手速要快—— 单身程序猿的福音)
  • 接下来就会看到控制台编译此项目,如下:

image.png


编译成功是这样的(会看到APP运行)

image.png



效果

image.png



摇一摇配置本地IP地址

image.png



接下来会看到如下页面:

image.png


本地IP地址 + 端口

image.png


  • 谷歌打开调试控制台(打印,以及日志会在这里出现)
  • 只能以这种方式调试,你没得选

image.png


3.package.json 文件


此文件仅供参考,具体看项目去的,重点看服务配置等

{
  "name": "demo",
  "version": "1.0.0",
  "private": true,
  "description": "项目描述",
  "templateInfo": {
    "name": "default",
    "typescript": false,
    "css": "sass"
  },
  "scripts": {
    "build:weapp": "taro build --type weapp",
    "build:swan": "taro build --type swan",
    "build:alipay": "taro build --type alipay",
    "build:tt": "taro build --type tt",
    "build:h5": "taro build --type h5",
    "build:rn": "taro build --type rn",
    "build:qq": "taro build --type qq",
    "build:quickapp": "taro build --type quickapp",
    "dev:weapp": "npm run build:weapp -- --watch",
    "dev:swan": "npm run build:swan -- --watch",
    "dev:alipay": "npm run build:alipay -- --watch",
    "dev:tt": "npm run build:tt -- --watch",
    "dev:h5": "npm run build:h5 -- --watch",
    "dev:rn": "node scripts/polyfill/index.js && npm run build:rn -- --watch",
    "dev:qq": "npm run build:qq -- --watch",
    "dev:quickapp": "npm run build:quickapp -- --watch",
    "tep": "node scripts/template",
    "iconfont": "npx iconfont-taro"
  },
  "author": "",
  "license": "MIT",
  "dependencies": {
    "@react-native-community/viewpager": "^4.1.0",
    "@tarojs/async-await": "2.0.1",
    "@tarojs/cli": "2.0.1",
    "@tarojs/components": "2.0.1",
    "@tarojs/components-rn": "2.0.1",
    "@tarojs/redux": "2.0.1",
    "@tarojs/redux-h5": "2.0.1",
    "@tarojs/router": "2.0.1",
    "@tarojs/taro": "2.0.1",
    "@tarojs/taro-alipay": "2.0.1",
    "@tarojs/taro-h5": "2.0.1",
    "@tarojs/taro-qq": "2.0.1",
    "@tarojs/taro-quickapp": "2.0.1",
    "@tarojs/taro-redux-rn": "2.0.1",
    "@tarojs/taro-rn": "2.0.1",
    "@tarojs/taro-router-rn": "2.0.1",
    "@tarojs/taro-swan": "2.0.1",
    "@tarojs/taro-tt": "2.0.1",
    "@tarojs/taro-weapp": "2.0.1",
    "babel-runtime": "^6.26.0",
    "crypto-js": "3.1.2",
    "dva-core": "^2.0.1",
    "dva-loading": "^3.0.18",
    "global": "^4.4.0",
    "nerv-devtools": "^1.5.6",
    "nervjs": "^1.5.6",
    "node-sass": "^6.0.0",
    "react": "16.8.0",
    "react-native": "0.59.9",
    "react-native-ali-onepass": "2.0.1",
    "react-native-amap-geolocation": "^1.0.4",
    "react-native-amap3d": "^1.1.1",
    "react-native-camera": "2.9.0",
    "react-native-exit-app": "^1.1.0",
    "react-native-fs": "^2.16.6",
    "react-native-qrcode": "^0.2.7",
    "react-native-root-modal": "^3.0.1",
    "react-native-shadow": "^1.2.2",
    "react-native-side-menu": "^1.1.3",
    "react-native-splash-screen": "^3.2.0",
    "react-native-svg": "^9.13.6",
    "react-native-view-shot": "2.6.0",
    "react-native-webview": "5.8.1",
    "react-native-wechat": "^1.9.12",
    "react-native-wechat-lib": "^1.1.26",
    "redux": "^4.0.0",
    "redux-thunk": "^2.3.0",
    "taro-ui": "^2.2.4",
    "tslib": "^1.8.0",
    "vconsole": "^3.3.4",
    "webpack-bundle-analyzer": "^3.6.0",
    "weixin-js-sdk": "1.2.0",
    "wx-base64-qrcode": "^1.0.4"
  },
  "devDependencies": {
    "@tarojs/mini-runner": "^2.0.1",
    "@tarojs/plugin-babel": "2.0.1",
    "@tarojs/plugin-csso": "2.0.1",
    "@tarojs/plugin-sass": "2.0.1",
    "@tarojs/plugin-uglifyjs": "2.0.1",
    "@tarojs/webpack-runner": "2.0.1",
    "@types/react": "^16.4.6",
    "@types/webpack-env": "^1.13.6",
    "babel-eslint": "^8.2.3",
    "babel-plugin-transform-class-properties": "^6.24.1",
    "babel-plugin-transform-decorators-legacy": "^1.3.4",
    "babel-plugin-transform-jsx-stylesheet": "^0.6.5",
    "babel-plugin-transform-object-rest-spread": "^6.26.0",
    "babel-plugin-transform-remove-console": "^6.9.4",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.6.1",
    "eslint": "^5.16.0",
    "eslint-config-taro": "2.0.1",
    "eslint-plugin-import": "^2.12.0",
    "eslint-plugin-react": "^7.8.2",
    "eslint-plugin-react-hooks": "^1.6.1",
    "eslint-plugin-taro": "2.0.1",
    "redux-logger": "^3.0.6",
    "stylelint": "9.3.0",
    "stylelint-config-taro-rn": "2.0.1",
    "stylelint-taro-rn": "2.0.1",
    "taro-iconfont-cli": "^1.2.0"
  }
}
目录
相关文章
|
11天前
|
缓存 监控 前端开发
【Flutter 前端技术开发专栏】Flutter 应用的启动优化策略
【4月更文挑战第30天】本文探讨了Flutter应用启动优化策略,包括理解启动过程、资源加载优化、减少初始化工作、界面布局简化、异步初始化、预加载关键数据、性能监控分析以及案例和未来优化方向。通过这些方法,可以缩短启动时间,提升用户体验。使用Flutter DevTools等工具可助于识别和解决性能瓶颈,实现持续优化。
【Flutter 前端技术开发专栏】Flutter 应用的启动优化策略
|
1天前
|
JSON 前端开发 JavaScript
【好书推荐1】基于React低代码平台开发:构建高效、灵活的应用新范式
【好书推荐1】基于React低代码平台开发:构建高效、灵活的应用新范式
9 0
|
2天前
|
资源调度 前端开发
编译第三方前端项目时候出现Syntax Error: TypeError: Cannot set properties of undefined (setting ‘parent‘)
编译第三方前端项目时候出现Syntax Error: TypeError: Cannot set properties of undefined (setting ‘parent‘)
16 0
|
2天前
|
前端开发 JavaScript API
flowable流程移植新项目前端问题汇总
flowable流程移植新项目前端问题汇总
|
4天前
|
JSON 前端开发 搜索推荐
BoostCompass( http_server 模块 | 项目前端代码 )
BoostCompass( http_server 模块 | 项目前端代码 )
23 4
|
6天前
|
设计模式 前端开发 API
写出易维护的代码|React开发的设计模式及原则
本文对React社区里出现过的一些设计模式进行了介绍,并讲解了他们遵循的设计原则。
|
11天前
|
前端开发 JavaScript 开发者
【专栏:HTML与CSS前端技术趋势篇】前端框架(React/Vue/Angular)与HTML/CSS的结合使用
【4月更文挑战第30天】前端框架React、Vue和Angular助力UI开发,通过组件化、状态管理和虚拟DOM提升效率。这些框架与HTML/CSS结合,使用模板语法、样式管理及组件化思想。未来趋势包括框架简化、Web组件标准采用和CSS在框架中角色的演变。开发者需紧跟技术发展,掌握新工具,提升开发效能。
|
11天前
|
Dart 前端开发 测试技术
【Flutter前端技术开发专栏】Flutter开发中的代码质量与重构实践
【4月更文挑战第30天】随着Flutter在跨平台开发的普及,保证代码质量成为开发者关注的重点。优质代码能确保应用性能与稳定性,提高开发效率。关键策略包括遵循最佳实践,编写可读性强的代码,实施代码审查和自动化测试。重构实践在项目扩展时尤为重要,适时重构能优化结构,降低维护成本。开发者应重视代码质量和重构,以促进项目成功。
【Flutter前端技术开发专栏】Flutter开发中的代码质量与重构实践
|
11天前
|
存储 缓存 监控
【Flutter前端技术开发专栏】Flutter中的列表滚动性能优化
【4月更文挑战第30天】本文探讨了Flutter中优化列表滚动性能的策略。建议使用`ListView.builder`以节省内存,避免一次性渲染所有列表项。为防止列表项重建,可使用`UniqueKey`或`ObjectKey`。缓存已渲染项、减少不必要的重绘和异步加载大数据集也是关键。此外,选择轻量级组件,如`StatelessWidget`,并利用Flutter DevTools监控性能以识别和解决瓶颈。持续测试和调整以提升用户体验。
【Flutter前端技术开发专栏】Flutter中的列表滚动性能优化
|
11天前
|
Dart 前端开发 安全
【Flutter前端技术开发专栏】Flutter中的线程与并发编程实践
【4月更文挑战第30天】本文探讨了Flutter中线程管理和并发编程的关键性,强调其对应用性能和用户体验的影响。Dart语言提供了`async`、`await`、`Stream`和`Future`等原生异步支持。Flutter采用事件驱动的单线程模型,通过`Isolate`实现线程隔离。实践中,可利用`async/await`、`StreamBuilder`和`Isolate`处理异步任务,同时注意线程安全和性能调优。参考文献包括Dart异步编程、Flutter线程模型和DevTools文档。
【Flutter前端技术开发专栏】Flutter中的线程与并发编程实践