React Native

初识ABP vNext(2):ABP启动模板

耗尽温柔 提交于 2020-08-19 16:37:04
目录 前言 开始 AbpHelper 模块安装 最后 前言 上一篇介绍了ABP的一些基础知识,本篇继续介绍ABP的启动模板。使用ABP CLI命令就可以得到这个启动模板,其中包含了一些基础功能模块,你可以基于这个模板来快速开发。 开始 首先ABP CLI的安装以及基本指令这些就不说了,官网上写的很清楚。目前ABP的前端部分只支持ASP.NET Core MVC / Razor Pages和Angular,移动端支持React Native。 初学者建议跟着官网https://docs.abp.io/zh-Hans/abp/latest/Tutorials/Part-1?UI=MVC这个指引做一遍,体验一下ABP开发的基本流程,虽然ABP开发流程几乎都标准化了,照着官网的流程编写代码就能完成一个功能的开发,但是这个过程有些繁琐,容易出错。这里推荐一个开源项目: https://github.com/EasyAbp/AbpHelper.GUI,这是一个ABP帮助工具,你只需要创建一个实体,剩下的代码它都可以帮你生成。这个项目是https://github.com/EasyAbp下的一个子项目,EasyAbp是国内ABP爱好者创建的,里面还有很多开箱即用的模块,可以关注一下。。。 AbpHelper 使用AbpHelper来完成官网的例子非常容易,首先创建项目解决方案:

React Native 一站式开发解决方案

99封情书 提交于 2020-08-18 06:37:20
分享一个RN快速开发库: react-native-easy-app 。一款为React Native App开发提供基础服务的纯JS库( 支持 IOS & Android ),可以为开发者开发项目提供强有力的支持,可以大幅度提高编码的效率,特别是在项目搭建初期,至少可以为开发者减少30%的工作量。 由于前面的文章已经做过介绍,在这里就不详细介绍了,通过本开源库,你可以有以下高级的“操作”: 可以像访问内存对象一样访问AsyncStorage 相关文章: 一分钟实现,一个RN持久数据管理器 ; react-native-easy-app 详解与使用之(一) AsyncStorage 只需要几十行代码就能实现,一个完整的app与服务器的Http请求交互 相关文章: 二十分钟封装,一个App前后台Http交互的实现 ; react-native-easy-app 详解与使用之(二) fetch 一行配置 + 基础组件的使用就即可以实现,UI自动屏幕适配 相关文章: 详解与使用之(三) View,Text,Image,Flatlist ; react-native-easy-app 详解与使用之(四)屏幕适配 另附有多个不同版本的Demo供大家参考用法: Sample Sample_Mobx Sample_Redux 以下为Sample_Redux示例程序的UI部分截图:

在React / React Native中使用构造函数与getInitialState有什么区别?

老子叫甜甜 提交于 2020-08-18 05:37:58
问题: I've seen both used interchangeably. 我看过两者都可以互换使用。 What are the main use cases for both? 两者的主要用例是什么? Are there advantages / disadvantages? 有优点/缺点吗? Is one a better practice? 这是一个更好的做法吗? 解决方案: 参考一: https://stackoom.com/question/24gEQ/在React-React-Native中使用构造函数与getInitialState有什么区别 参考二: https://oldbug.net/q/24gEQ/What-is-the-difference-between-using-constructor-vs-getInitialState-in-React-React-Native 来源: oschina 链接: https://my.oschina.net/u/4438370/blog/4418902

二十分钟封装,一个App前后台Http交互的实现

一笑奈何 提交于 2020-08-17 23:44:36
在React Native开发过程中,几乎所有的app都需要使用到Http请求,所以fetch的封装必不可少,由于不同app的请求参数,解析规则,token机制等完全不一样,所以在大多数App开发中,前后台Http请求的实现都是开发者自己封装的。 封装一个前后台Http请求实现需要多久? 可能有人回答是1小时,也有3、5小时甚至更长时间的,或者也有说先这样封装个大概,等到需求不满足的时候再改。 花费1小时的时间不一定短,花费3、5的时间也不一定算长,具体要看前后台交互的复杂程度与开发者对交互实现的封装程度。 那这里我们就引出了一个问题了,我们通常说的app的Http请求【封装】,到底封装的是什么,我们需要做哪些工作,能使用得app的接口请求更简单,易用且有较高的灵活性?在我看来这个“封装”主要分两个部分: 数据交换 层面的封装,即: 实现前后台的互通,支持服务器要求的数据交换类型、格式等 调用者可以自由设置请求的header、params等参数,程序根据不同的设置也能保证请求能正确的发送给服务端并返回相应的结果 支持超时、日志打印等一些基本功能 业务逻辑 层面的封装,即: 入参:公共部分header、params的参数处理,避免在具体接口请求是传入不必要与接口无关的参数 出参:对后台返回的数据按约定好的规则做一层基础解析处理,避免在具体接口数据解析的时候做一些无意义的操作

自绘引擎时代,为什么Flutter能突出重围?

岁酱吖の 提交于 2020-08-17 11:51:48
导语 | Flutter 框架是当下非常热门的跨端解决方案,能够帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面等多端开发。但仍然有很多产品、设计、甚至开发同学并不了解 Flutter,所以本文将深入浅出和大家聊聊 Flutter 的设计背景、技术特点,以及与其他同类技术之间的对比,希望与大家一同交流。 一、跨平台背景 1. 移动互联网的重要性 如上图所示,与2019年1月相比,全球使用互联网的人数已增加到45.4亿,增长了7%(2.98亿新用户)。 到2020年1月,全 球有38亿社交媒体用户,与去年同期 相比,这个数字增长了9%以上(3.21亿新用户)。 在全球范围内,现在有超过51.9亿人使用手机,在过去的一年中,用户数量增加了1.24亿(2.4%)。 现在,普通的互联网用户每天在线花费6个小时43分钟,相当于每个互联网用户每年连接时间超过100天。如果我们每天需要大约8小时的睡眠,那就意味着醒来的时间中,有40%以上是通过互联网度过的。 在移动互联网的浪潮下,开发效率和使用体验可以说是同等重要。但是,使用原生的方式来开发 App,就要求我们必须针对 iOS 和 Android 这两个平台分别开发。 这样就导致了我们不仅需要在不同的项目间尝试用不同的语言去实现同样的功能,还要承担由此带来的维护任务。如果还要继续向其他平台(比如 Web、Mac 或

React简介和使用

旧城冷巷雨未停 提交于 2020-08-15 10:28:32
React简介和使用 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 用于构建用户界面的 JavaScript 库 特点 声明式 React 使创建交互式 UI 变得轻而易举。为你应用的每一个状态设计简洁的视图,当数据改变时 React 能有效地更新并正确地渲染组件。 以声明式编写 UI,可以让你的代码更加可靠,且方便调试。 组件化 创建拥有各自状态的组件,再由这些组件构成更加复杂的 UI。 组件逻辑使用 JavaScript 编写而非模版,因此你可以轻松地在应用中传递数据,并使得状态与 DOM 分离。 一次学习,随处编写 无论你现在正在使用什么技术栈,你都可以随时引入 React 来开发新特性,而不需要重写现有代码。 React 还可以使用 Node 进行服务器渲染,或使用 React Native开发原生移动应用。 安装 npx create-react-app my-app 运行 cd my-app npm start 感谢 万能的网络 以及勤劳的自己 关注公众号: 归子莫,获取更多的资料,还有更长的学习计划 来源: oschina 链接: https://my.oschina.net/u/4365362/blog/4302553

从启动过程讲述普元Mobile 8.0基座

微笑、不失礼 提交于 2020-08-15 05:59:06
​转载本文需注明出处:微信公众号EAWorld,违者必究。 前言: 通常来讲iOS 应用启动过程有两种:一是冷启动(后台没有运行的普通启动过程)、二是热启动(后台运行没有被系统kill掉,重新打开能立即恢复到之前打开的状态) 。本文着重讲普元Mobile8.0 冷启动过程。 目录: 1.集成跨平台框架React Native 2.React Native交互原理 3.组件的集成 4.模块化 1.集成跨平台框架React Native 应用冷启动后,先执行main函数,main内部会调用UIApplicationMain函数,此函数主要是创建了UIApplication对象和创建UIApplication的delegate对象AppDelegate。而应用启动必要执行的代码主要在此AppDelegate类的didFinishLaunchingWithOptions中调用,普通应用在此系统接口中只用初始化窗口、视图控制器添加view,makeWindowVisible就可以了,甚至利用StoryBoard开发页面的这部分代码也省去了。 不过普元Mobile8.0平台是支持多平台的,一套前端代码运行在iOS和安卓两种系统的应用上,这就意味着我们接入了跨平台的明星框架React Native,如他们官方自己介绍的一样他们最大的优点‘ learn once , write anywhere

【React Native】安卓系统保存图片到系统相册(实例+错误解决)

大城市里の小女人 提交于 2020-08-14 13:47:14
  1、安装第三方库并引入 import CameraRoll from ' @react-native-community/cameraroll ' ; import RNFS from ' react-native-fs ' ;    Github参考链接: CameraRoll RNFS   2、添加权限 <uses-permission android:name= " android.permission.READ_EXTERNAL_STORAGE " /> <uses-permission android:name= " android.permission.WRITE_EXTERNAL_STORAGE " />   3、在引用组件中引入以下代码   否则会报" Error:Permission denied "错误,用来获取内存空间的读写权限。此处需要在顶部引入 PermissionsAndroid requestExternalStoragePermission = async () => { try { const granted = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE, { title: ' My App Storage

使用虚拟dom的原因

风流意气都作罢 提交于 2020-08-14 11:40:34
一、为什么要使用虚拟dom。 我们来回顾一下前端开发刀耕火种的时代。 ①之前的前端开发需要手动操作dom,还要考虑浏览器兼容性等问题,非常的麻烦,后来有了JQuery等库,简化了dom操作,我们也不需要考虑浏览器兼容性等问题,但是随着前端项目的复杂,dom操作也变得复杂,我们既要考虑操作数据,也要考虑操作dom,为了简化dom操作,则出现了各种mvvm框架, ②mvvm框架帮我们解决可视图和状态的同步问题。也就是当数据发生变化自动更新视图,当视图发生变化,自动更新数据。 ③在过去,为了简化视图的操作,我们可以使用模板引擎,但是模板引擎没有解决跟踪状态变化的问题,就是当数据发生变化后,无法获取上一次的状态,只好把界面上的元素删除,然后在重新创建,jquery写的一个列表,当新增删除排序时,添加一个过渡效果,操作时列表会先被删除,然后重建,耗费性能。模板引擎没有解决跟踪状态变化的问题,所以有了虚拟dom,虚拟dom的好处是当状态发生改变时,不需要立即更新dom,只需要创建一个虚拟dom树,来描述dom,虚拟dom内部将弄清楚如何有效的(diff)更新dom,内部会使用diff算法来找到状态的差异,只更新变化的部分。虚拟dom只会更新数据发生变化的dom元素, ④总结:虚拟dom可以维护程序的状态,可以跟踪上一次的状态,我们可以通过对比前后两次状态的差异,来更新真实的dom。

一分钟实现,一个RN持久数据管理器

天涯浪子 提交于 2020-08-14 04:08:24
在React Native开发过程中,总避免不了需要存储一些数据在本地。对于大多数应用只需要存储一些结构简单的数据,如标记位,用户信息等。这时候我们首选择的存储方式就是AsyncStorage,那我们先来看下AsyncStorage给我提供了哪些基本方法: 可以看出AsyncStorage已经包含set、get、remove、clear等一系列静态方法,基本上已经满足了我们对数据增、删、改、查(CURD 下文中我都统一使用简称)的需求。对于AsyncStorage的使用,官网建议我们再封装一层,而不是直接使用AsyncStorage。 那我们先在网上搜索一下看看大家是怎么封装AsyncStorage的。通过在网上大量的搜索与对比,我把大家的封装方式分为三类: 重复造轮式 这种封装方式,基本上是新建一个可导出的类,加入几个静态的CURD方法,然后在相应的静态方法里面直接调用AsyncStorage的CURD方法,其它的不做任何处理。【 这种‘‘简陋’’的封装,还不如不封装 】 类型转换式 这种封装方式,相较于 重复造轮式 ,增加了 类型转换和异常捕获 ,使得AsyncStorage的数据存的类型不再局限于string,可以保存对象、数组等结构数据类型,对于取数据的时候也做相应的转换【 基本满足开发需求,但使用不够简单 】 过度封装式 这种封装方式