Registered users
Ricciflows
This person is lazy, nothing was left behind...
粉丝数
15
关注数
0
阅读数
42,192
获赞数
18
动态
文章
帖子
提问
回答
收藏夹
Ricciflows发表了文章 2025-03-12 00:31:56

React Native UI库介绍与对比

React Native的生态与React.js相比,没那么丰富,或者说手机端的生态本身就跟Web端相差甚远。React.js作为Web端虽然生态丰富,但由于其JS库大多数都不能直接用在React native中,因此很多在Web端存在诸多解决方案的问题,如代码块高亮、渲染数学公式,在手机端都难找到合适的办法。React Native的UI库,其实可以选择的并不多,不像Web端百花齐放,选个UI库都能选择困难症。在本文,我将会介绍几个我所知道的React native UI库,其中有几个我是用过的。1. React Native Paper这是一个Material Design风格的UI库,在GitHub拥有13.4k个stars,官方文档👉React Native Paper。该库安装步骤简单,组件使用以及自定义也容易,唯一的缺点就是组件不够多,有些场景需要你另外补充其他库来满足需求。React Native Paper应该是React native唯一一个Material Design UI库,该库能够跟React native navigation整合,构建Material风格的底部导航栏(见下图)。如果你喜欢Material Design风格,那么React Native Paper绝对是不二之选。值得一提的是,安卓版的原生风格本身就是Material Design的。下面是React Native Paper的安装命令:npm install react-native-paper react-native-safe-area-context react-native-vector-icons更多安装细节请看Getting Started。2. Tamagui这是个能够同时在React与React Native使用的UI库,在GitHub拥有12.2k个stars,官方文档👉Tamagui。不推荐使用这个UI库,它是我写React native所用的第一个UI库,当时我被官方文档的UI所吸引,结果自己安装后运行才发现,UI风格得自己设置,官方的UI好像得花钱买。这还没完,Tamagui的theme设置非常麻烦与复杂,很多人表示自己看了半天都没搞懂文档在说什么,有些人甚至说不知道哪来这么多星。而Theme的设置是避免不了的,Tamagui相当于headless刚开始几乎没有任何UI风格,需要你自己设置自己的主题。加上Tamagui引入了过多的概念,如style还得考虑什么size token,总之最后我放弃了这个UI库。如果你想要体验这个UI库,由于安装过程比较长,请看Installation。3. React Native Elements这是个组件相当丰富的UI库,其在GitHub已经积累了25.3k个stars,官方文档👉React Native Elements。不过我没用过该库,主要原因是该库似乎已经过时了,没人维护,上一个release还停留在2023年。该库的作者目前把主要精力放在了另一个新的UI库——gluestack上了。4. GluestackGluestack也是一个可以同时在React跟React Native使用的UI库,可以看成是React Native Elements V2,这个库目前在GitHub积累了3.5k个stars,官方文档👉gluestack-ui。这个UI库的组件还算丰富,像BottomSheet和Actionsheet都有,不需要你额外安装其他React native库。5. Ant Design Mobile RN这是唯一一个国产的React Native UI库,喜欢antd风格的可以使用,官方文档👉Ant Design Mobile RN。Antd RN组件还行,至少比React native paper多,最主要的是有form组件,这对于有表单验证需要的人来说很友好。同时还有Carousel、ActionSheet、Modal,这就不需要你安装太多其他的库。6. RNUILibRNUILib也是一个组件相当丰富的UI库,并且它还提供了很多特殊组件,如键盘相关的组件,官方文档👉RNUILib。同时,它还是唯一一个有WheelPicker的UI库。目前RNUILib在GitHub已经积累了6.7k个stars。除了WheelPicker,RNUILib还提供了DateTimePicker、KeyboardAccessoryView等这些在React native难实现的组件,这些组件在其他UI库都是没有,但它们的需求却不少,这也是RNUILib一大特点。本文React native的UI库就介绍完了😄,不知道你喜欢哪个UI库呢?欢迎在评论区发表你的看法吧!😇

Ricciflows发表了文章 2025-02-28 01:17:37

弦圈APP已开发完成,准备发布

经过两个月的漫长艰难开发,大家期待已久的弦圈APP终于开发完成,目前正在准备发布的工作。马上弦圈APP的第一个版本就要跟大家见面了,暂时先推出安卓版,之后测试完苹果手机再推出IOS版。目前弦圈APP的核心功能已经基本开发完毕,包括:写文章、发帖子、回答问题、创建圈子、看文章、看书、看帖子、看词条、圈子、看问题和回答、发布评论与回复、点赞与踩、收藏夹、关注用户、搜索、用户中心、个人主页、设置、消息中心等等。但是仍然有一些未完成的功能,这些功能计划之后慢慢更新吧,它们包括:创建词条、写书、提问、任务中心、商店、赞赏、钱包与充值、交易中心、签到等等。上面提到的都是大的功能模块,下面我就提及一下APP一些细节的问题,这些问题虽然小,但也同样重要。与网页端弦圈不同,手机端弦圈APP使用markdown编辑器,用于文本格式、图片、链接等输入。关于markdown语法可自行百度,事实上markdown语法写起来比富文本要方便。至于为啥使用markdown编辑器,原因如下:首先APP跟网页端(Web端)有很大的不同,这使得想要跟Web端一样用富文本编辑器会变得困难。绝大多数现有的富文本编辑器都是基于WebView的,而且设置繁琐,且自定义困难,加之WebView也被诟病影响性能,所以使用基于TextInput的编辑器是最好的。然而事实上,TextInput的富文本编辑器没几个好的,如果说移动端富文本编辑器生态很差,那么TextInput编辑器可以说是尤甚于此。native的富文本编辑器也是没找到适合的,最后选择了使用native的markdown编辑器。原以为事情就这样结束了,结果react-native-live-markdown的编辑器有bug,修复不了,因此我决定自己开发一个简单的markdown编辑器,在编辑器里写的都是纯文本,想要看发布结果则可以点击预览(见下图)。弦圈APP中的HTML全部使用native渲染,不使用WebView。这不仅提高了性能,同时页面也更丝滑。这个也是APP的一大难点,也是我遇到的第一个难点。在Web端中,想要渲染富文本编辑器产生的HTML字符串,在Vue中直接使用v-html(在React中直接使用dangerouslysetinnerhtml)就能得到渲染好的内容了。 而HTML天生与手机APP不兼容,APP不同于浏览器,除非使用WebView,否则无法直接渲染任何HTML。使用WebView是最简单的在APP渲染HTML的方法,但是弊端也很明显,WebView卡不说,页面布局也不正常、不协调,我刚开始尝试一直没能调好,然后果断放弃。接着我又尝试了expo的'use dom'方法,似乎不能直接使用dangerouslysetinnerhtml,也放弃。而RN唯一的一个HTML渲染库react-native-render-html,这个库能将HTML转换成native组件进行渲染(即native渲染),看着蛮不错的,可惜报错了,然后库的维护也出了问题。于是我就自己动手写了一个HTML转换Native的一个组件,效果还可以,很多情况都可以正常渲染,但某些情况还是有问题。就这样兜兜转转,我最后还是选择了react-native-render-html,我安装了一个版本所幸没有报错,接着再二次包装一遍,一切都如预期的一样。弦圈APP直接高亮代码块,且直接复制代码。非WebView方法实现。这个算是APP的一个小难点吧...在Web端想要高亮代码块,我们有PrismJS和highlightJS可以使用(见Vue或Nuxt中如何渲染数学公式?)。然而在APP端,一切又不同了,我们无法直接使用这个JS库,所幸高亮代码块这方面的生态还算可以,我费了点劲找到了一个合适的库,最后成功实现。值得一提的是,知乎APP居然不支持高亮代码块,它就一个框把代码框起来,然后允许你复制代码。可见相比于Web端,APP的限制有多大,不过或许这也算是个无关紧要的功能吧...然后跟弦圈网页端一样,弦圈APP支持渲染数学公式,在手机你可以跟在网页端一样看到美妙的数学符号。这个可以说是APP最大的难点之一了。这个实现起来也是十分艰难,网络上搜到的方法基本不行,都有着这样或那样的问题。渲染数学公式这个东西,在Web端的生态就一般,在移动端更是惨不忍睹,无论是RN的,还是安卓的都没一个库是还在维护的,也很少有人分享实现的方法,估计没几个人关心吧。事实上,latex的生态就只局限于它本身,搜索latex相关的东西,除了关于latex本身的问题,像什么python中转换latex、Vue或React渲染latex,有用的信息瞬间减少了。说回RN中渲染数学公式,其中有几个库是用WebView来实现的,由于弦圈APP中的HTML是native渲染的,不是基于WebView的,如果用它们,可能就会在页面上同时渲染多个WebView,这会严重影响性能问题。RN能native实现就native实现,真用WebView我觉得还不如直接拿Tauri来写APP,这样所有Web端的东西都能用在APP了。我刚开始也是用Tauri来写弦圈APP,可是最后它的stronghold插件出了问题修复不了,就放弃了。RN用native实现渲染数学公式的库也有,不过都是已经没在维护的了。我侥幸找到一个用mathjax渲染,且能用的库react-native-mathjax-html-to-svg,将latex代码转换成svg来渲染数学公式。要知道在Web端想要渲染数学公式,有mathjax和katex可以选(见Vue或Nuxt中如何渲染数学公式?),其中mathjax是最好的、katex是最快的。因此,发现这个库的那一刻我很激动,居然能在APP使用最好的mathjax。将该库与react-native-render-html整合,就能渲染数学公式了。然而事实上,这个过程比我想象中的要复杂困难得多,在网上仅有的几个方法中,我尝试过很多遍,最后都没能实现我想要的效果。然后我又尝试通过后端python来渲染latex公式,将其转换为svg或者干脆转换成Unicode。这些方法实现是能实现,但是都有不少瑕疵,都比不了Web端的效果不说,有些低级问题也没能解决。能将latex转换成Unicode的pylatexenc库,就不能将$^2$转换成²。原本我打算妥协了,放弃渲染数学公式这个功能,然而今天我突然“开窍”,彻底解决了这个难题,也算是意外之喜。这个方法算是我原创的吧,仍然是将react-native-mathjax-html-to-svg与react-native-render-html整合,但是效果完全符合预期,也没有网上一些人提到的问题。在这个过程中,还遇到个小插曲,该版本的mathjax识别不了小于号$<$,得换成HTML记号。关于弦圈APP的其他一些开发细节,因为时间比较晚了,我就不展开说了。目前我正在准备弦圈APP的发布,这包括编译apk,以及在弦圈网页端添加APP的下载方式,尽情期待😇!之后我还会修复一些网页端的来不及修复的bug。目前弦圈APP的代码规模为21249,还行吧一个人写的。最后不得不吐槽一句,这个apk编译是真的慢......晚安( ̄o ̄) . z Z

Ricciflows发表了文章 2025-01-14 23:44:21

弦圈更换新网址xianquan.net,原地址manitori.xyz保留

今天,经过一番思考与商量,我最后决定将弦圈的原网址 https://www.manitori.xyz/ 更换为 https://www.xianquan.net/ 。原因也很简单,因为目前弦圈主打的还是国内市场,而manitori是弦圈的英文名并不合适,加之一个构词法创造出来的新英文单词对新人而言很难记忆。总之,在种种因素促使下,我决定将弦圈的拼音xianquan作为弦圈国内版的网址。至于为什么不是xianquan.com,那是单纯因为.com域名已经被别人给注册了,而想要买回xianquan.com需要5万多块😅。至于原地址manitori.xyz我会继续保留,未来将会用作弦圈国际版的网址。而当前原地址manitori.xyz将会继续像原来那样正常运作,只不过会自动跳转到xianquan.net。唯一要注意的是,这可能需要你重新登录,因为域名换了cookies会没掉,而目前根据搜索cookies并不能跨越不同域名。然后这里也有一个小坑,就是保持登录状态(弦圈保持登录状态最多保持7天)。现在的大网站基本上是登录一遍就再也不用登录第二遍,我之后尝试能不能实现。弦圈仍然会支持中英文切换,这已经不是为了给老外看啦,主要是为了学术交流方便。就数学而言,绝大多数数学文献都是英文的,这些内容也大多没有对应且统一的中文翻译,总之在有些时候直接写英文会容易许多。

Ricciflows发布了帖子 2025-01-14 19:32:05

Claire Voisin教材霍奇理论和复代数几何:Hodge Theory and Complex Algebraic Geometry

Claire Voisin的复几何教材Hodge Theory and Complex Algebraic Geometry分为两本,印象中这是本稀缺教材,网上不太容易找到。这本书有一定门槛,需要有一定多复变函数、代数几何、微分几何、复分析的基础,具体点你需要提前熟悉多复变全纯函数、部分Hodge理论、复流形、层论、上同调等相关知识,这样才好上手读下去。因此,新人小白谨慎作为入门教材。本书从多复变函数开始讲起,本书作者的叙述风格我虽然很喜欢,但是过于简略,第一章开头多复变函数就需要你有一定基础才能看懂。同时,这本书的内容十分全面,把复几何相当多的基本重要概念都讲了,或许是相关内容实在太多,哪怕作者尽量省略一些基础和细节,最后还是得分成两本书。由于我对复几何并不是特别熟悉,这本书我也只是涉猎过,因此不做过多评价,直接上图。上图公式一下子就把我吸引住了,这也是为啥我当初会看这本书的原因,因为这公式实在太美了,我很想弄清楚它是怎么一回事。PS:由于此pdf版并没有相应的目录,不能方便跳转书的不同章节,因此早在n年前,我就用Adobe调整了页码,你只需要输入相应的页数就能直接跳转到该页。跳转页数的具体操作见下图。

Ricciflows发表了文章 2025-01-11 00:40:04

1月11日弦圈更新日志,明后天上线

这几天一直在忙着更新弦圈的新功能,目前弦圈的内容和功能还是有些单调,并且基本上都是些严肃、枯燥、理性的内容。为了进一步提高弦圈的趣味性,以及提高用户的活跃度和积极性,我计划推出更多有意思的功能。首先第一个就是商店功能,弦圈现在有两种货币:金币(免费)、弦币(付费)。而金币之前获得了也没有任何用处,因此现在把这个坑慢慢填了,增加金币的用处——用于商店购买。第二个功能就是任务中心,分别包括新手任务、每日任务、圈子任务,让用户使用弦圈的过程中多一些正反馈,就跟打怪升级一样。圈子任务我计划是,每个圈子的圈主都能个性化自己圈子的任务,然后任务奖励也是个性化。比如代数几何圈,任务奖励可以是称号——格洛腾迪克学徒。接着便是“我的仓库”,商店购买的东西都会放在仓库里。见下图,是不是有种游戏的感觉😇接下来,我计划在弦圈引入趣味小游戏,以及live2D虚拟人,进一步丰富弦圈的内容。关于游戏,既然是页游,我觉得可以做一下“开心农场”给大家种田,而种的东西呢,数学的可以种GTM系列、编程的种APP或者电脑。也可以做个“小世界”,就是每个用户自己的世界,里面能摆放各种装饰品等,这样商店里用金币买的东西就能具象化了。虽然页游已经“过时”,但经过一番小调查,实际上玩页游的人还是很多的。而且这些游戏随着弦圈推出桌面端版和APP版,会变成端游和手游。最后,想象很美好,但现实很残酷,这些功能实现都不简单,像live2D估计得花钱买模型,游戏的话我还得从零开始学。只能说尽情期待!😁

Ricciflows发布了帖子 2025-01-01 10:42:51

拓扑学入门教材Topology Without Tears😭无泪拓扑学

这是本2019年出版的拓扑学教材,目前已被翻译成全国语言,可见其火爆,名字更是让我哭笑不得😂。可惜当年的我并不知道有这本书的存在,也是今天搜索后才得知原来有这本书,看第一眼就被这本书的内容所吸引了,确实是一本很好的拓扑学入门教材。比起我之前推荐的那些要好多了,Dugundji拓扑学基础教材Topology这本教材虽然也能入门,但内容过于庞杂,其实只适合当词典查,不太适合小白;而代数拓扑那两本教材更不用说,压根重点就不在一般拓扑学。我当初并没有系统性的学习过拓扑学,本身就对一般拓扑学这方面的教材了解不多。而且2019年的时候,我应该在读高二吧,那时候的我都在看Loring W Tu微分几何经典入门教材:An Introduction to Manifolds和Jürgen Jost黎曼几何与几何分析教材:Riemannian Geometry and Geometric Analysis了,因此对于专门找本一般拓扑学教材学习这方面已经没啥需求了,从而完美错过这本书😢。可能是因为拓扑学我并没有感受到多少压力,虽然很喜欢Topology Without Tears这个名字,但并没有多少共鸣。既然topology都有了,那是不是应该有Algebraic Geometry Without Tears😭、Perfectoid Spaces Without Tears😭、Nonarchimedian Analysis Without Tears😭、Berkovich Spaces Without Tears😭、Almost Mathematics Without Tears😭...... 这些可全是让我学到流泪的理论啊🙁PS:我就将中英文都分享出来吧,这本教材及其翻译可以直接在官网https://www.topologywithouttears.net/ 下载,作者可真用心,连网址都是这个书名😄。不过官网下载的pdf版全部都上锁了,不能复制粘贴,这对于爱看电子书学习的人来说无疑是一个“致命打击”,所以我直接将自己解锁后的pdf版发出来。