React Native学习速记

基于Tauri+React构建跨平台桌面便签应用:从设计到实现 桌面应用开发是现代软件开发中的重要领域,它涉及将软件功能直接部署到用户的操作系统环境中,提供更高效、更集成的使用体验。其技术原理通常基于跨平台框架或原生SDK,通过封装系统API来实现窗口管理、文件操作和硬件交互等功能。在技术价值上,优秀的桌面应用能够填补轻量级工具与重型软件之间的空白,满足用户对即时性、轻量化和可管理性的综合需求。应用场景广泛,涵盖个人知识管理、快速笔记记录、临时信息收纳等日常办公与学习场景。本文聚焦于桌面便签工具的开发实践,深入探讨了如何利用Tauri框架结合React技术栈,实现一个类 阅读详情

学习路线建议:ES5/6 -> React -> React Native  -> Redux + React-Navigation等

1、RN环境配置与运行

  • 按照官网进行环境配置;
  • 配置完成,初始化项目:react-native init 项目名称(注意 - 可以cd到自己目录,比如D:/RN目录下,然后执行该命令,即可在该目录下初始化自己的RN项目了,不要在系统或其他需要权限的目录,因为这会导致一些奇怪的问题发生)
  • 运行项目:react-native run-android
  • 学习的时候,如果高版本的RN常见运行有问题,可尝试低版本。项目开发建议使用最新版本RN
  • 安装第三方库,使用npm有时候莫名报错,可使用yarn尝试安装

2、调试

开发RN推荐开发工具VsCode。

有两种方式可以进行RN的调试,任选其一即可。(调试要确保在同一个网段内进行,切记)

  • 使用VSCode进行调试

a)需要安装,安装React Native Tools插件。

b)安装完成之后,通过react-native run-android命令,将项目运行到真机跑起来。

c)配置调试选项,如下图:

d)唤出开发者菜单,配置当前的ip和端口;

e)点击调试按钮即可进行调试;

  • 使用Chrome浏览器调试

项目跑起来之后,唤出开发者菜单,打开Debug Js Remotely即可。注:如果在Chrome中调试,出现跨域等问题,试着将ip改成localhost即可。

3、React相关

组件是根据props进行渲染的。state是组件的内部状态,目前,React Native 可以使用redux进行状态的管理。

JSX --> 通过Babel转义为纯JS代码 --> 虚拟DOM(DOM DIFF) --> 真实DOM(执行完了render方法)

React Native 是React 在原生移动应用平台的衍生产物,那两者主要的区别是什么呢?其实,主要的区别在于虚拟DOM映射的对象是什么?React中虚拟DOM最终会映射为浏览器DOM树,而RN中虚拟DOM会通过 JavaScriptCore 映射为原生控件树。

JavaScriptCore 是一个JavaScript解释器,它在React Native中主要有两个作用:

  1. 为JavaScript提供运行环境。
  2. 是JavaScript与原生应用之间通信的桥梁,作用和JsBridge一样,事实上,在iOS中,很多JsBridge的实现都是基于 JavaScriptCore 。

而RN中将虚拟DOM映射为原生控件的过程中分两步:

  1. 布局消息传递; 将虚拟DOM布局信息传递给原生;
  2. 原生根据布局信息通过对应的原生控件渲染控件树;

至此,React Native 便实现了跨平台。 相对于混合应用,由于React Native是原生控件渲染,所以性能会比混合应用中H5好很多,同时React Native是Web开发技术栈,也只需维护一份代码,同样是跨平台框架。

3.1、组件属性验证

组件的属性可以接受任何值,字符串、对象、函数等等都可以。有时,我们需要一种机制,验证别人使用组件时,提供的参数是否符合要求。组件类的PropTypes属性,就是用来验证组件实例的属性是否符合要求。

React.PropTypes从Reactv15.5开始被移入了prop-types组件库。

import PropTypes from 'prop-types';

class Greeting extends React.Component {

static propTypes = {
name: PropTypes.string.isRequired//必传且是String类型
}

  render() {
    return (
      <h1>Hello, {this.props.name}</h1>
    );
  }
}


或者

Greeting.propTypes = {
  name: PropTypes.string.isRequired//必传且是String类型
};

3.2、默认属性

可以通过defaultProps用来设置组件属性的默认值。      

class MyTitle extends React.Component{
static defaultProps = {
    shortName:'MyTitle'
   };

render(){
    return (<h1>{this.props.shortName}</h1>);
  }

}

ReactDOM.render(<MyTitle/>,document.getElementById('root'));

3.3、ref属性

组件并不是真实的DOM节点,而是存在于内存之中的一种数据结构,叫做虚拟DOM。只有当它插入文档以后,才会变成真实的DOM。根据React的设计,所有的DOM变动,都先在虚拟DOM上发生,然后再将实际发生变动的部分,反应在真实DOM上,这种算法叫做DOM diff,它可以极大提高网页的性能表现。

有时,需要从组件获取真实DOM的节点,这是就要用到ref属性。

class Alert extends React.Component {

  showAlert() {
    alert('alert');
  }

  render() {
    return null;
  }

}

class MyTitle extends React.Component {

  onClick = () => {
    this.refs.alert.showAlert();
  };

  render() {
    <div>
      <h1 onClick={this.onClick}>click me</h1>
      <Alert ref='alert' />
    </div>
  }
}

需要注意的是,由于this.refs.[refName]属性获取的是真实的DOM,所以必须等到虚拟DOM插入文档以后,才能使用这个属性,否则会报错。上面的代码,通过组件指定click事件的回调函数,确保了只有等到真实DOM发生Click事件之后,才会读取this.refs.[refName]属性。

3.4、组件的生命周期

注意:下述方法即将过时,在新代码中应该避免使用它们:


图一:比较常用的生命周期图

 

图二:完整的生命周期图

注:强烈建议你不要创建自己的组件基类。在React组件中,代码重用的主要方式是组合而不是继承。具体生命周期的详细说明:参阅官档。

3.5、render方法

render方法是必须的。当被调用时,其会检查this.props和this.state并返回以下类型中的一个:

  • react元素:通常是由JSX创建。该元素可能是一个原生DOM组件的表示,如<div/>或者是一个你定义的复合组件。
  • 字符串和数字:这些将被渲染为DOM中的text node。
  • Portals:由ReactDOM.createPotral创建。
  • null:什么也不渲染;
  • 布尔值:什么也不渲染。(通常存在于return test && 写法,其中test是布尔值)

返回null或者false时,ReactDOM.findDOMNode(this)将返回null。

render()函数应该是纯粹的,也就是说该函数不修改组件的state,每次调用都返回相同的结果,不读写DOM信息,也不和浏览器交互(例如通过使用setTimeOut)。如果需要和浏览器交互,在componentDidMount中或者其他生命周期方法中做这件事情。保持render()纯粹,可以使服务器渲染更加切实可行,也使组件更容易被理解。

注:若shouldComponentUpdate返回false,render函数将不会被调用。

4、React Native组件的生命周期

4.1、布局基础

1)父视图属性

  • flexDirection: enum('row', 'column ', 'row-reverse', 'column-reverse') - 默认column
  • flexWrap:enum('wrap','nowrap') - 是否换行
  • justContent:enum(‘flex-start’, 'flex-end', 'center', 'space-between', 'space-around') - 主轴(x轴)上子元素排列方式
  • alignItems:enum('flex-start', 'flex-end', 'center', 'stretch') - 次轴(y轴)上,子元素的排列。stretch,弹性元素被在侧轴方向被拉伸到与容器相同的高度或者宽度。

2)子视图属性

  • alignSelf:定义了flex容器内被选中项目的对齐方式。注意:alignSelf属性可重写灵活容器的alignItems属性。
  • flex

3)其他属性

  • borderWidth、borderColor、borderRadius等
  • 定位:

    a)absolute:

生成绝对定位的元素,元素的位置通过'left'、'top'、'right'、'bottom'属性进行规定。

    b)relative(默认):

生成相对定位的元素,相对于其正常位置进行定位。因此,left:20会向元素的left增加20像素。

5、react-navigation

最权威的学习文档 - 官方文档 - https://reactnavigation.org/docs/zh-Hans/getting-started.html

提供“页面跳转(stackNavigator)”、“顶部Tab(可滚动)”、“底部Tab”、“侧滑抽屉效果”等功能。

以createStackNavigator为例(其余的):

  • RouteConfigs(必选):路由配置对象是从路由名称到路由配置的映射,告诉导航器该路由呈现什么。
RouteConfigs支持三个参数screen、path以及navigationOptions;

screen(必选):指定一个 React 组件作为屏幕的主要显示内容,当这个组件被createStackNavigator加载时,它会被分配一个navigation prop。

path(可选):用来设置支持schema跳转时使用;

navigationOptions(可选):用以配置全局的屏幕导航选项如:title、headerRight、headerLeft等;
  • StackNavigatorConfig(可选):配置导航器的路由(如:默认首屏,navigationOptions,paths等)样式(如,转场模式mode、头部模式等)。
从react-navigation源码中可以看出StackNavigatorConfig支持配置的参数有10个。

function createStackNavigator(routeConfigMap, stackConfig = {}) {
  const {
    initialRouteKey,
    initialRouteName,
    initialRouteParams,
    paths,
    navigationOptions,
    disableKeyboardHandling,
    getCustomActionCreators
  } = stackConfig;
  ...

routeConfig的screen既可以是一个Page,也可以是一个Navigator。比如:

export const AppStackNavigator = createStackNavigator({
    HomePage: {
        screen: HomePage
    },
    Page1: {// 动态配置
        screen: Page1,
        navigationOptions: ({ navigation }) => ({
            title: navigation.state.params.name + '页面名'
        })
    },
    Page2: {
        screen: Page2,
        navigationOptions: {//静态配置
            title: 'this is page2'
        }
    },
    Page3: {
        screen: Page3,
        navigationOptions: (props) => {
            const { navigation } = props
            const { state, setParams } = navigation
            const { params } = state
            return ({
                title: params.title ? params.title : 'this is page3',
                headerRight: (<Button
                    title={params.mode === 'edit' ? '编辑' : '保存'}
                    onPress={() => setParams({ mode: params.mode === 'edit' ? '' : 'edit' })
                    }
                />)
            });
        }
    },
    Bottom: {
        screen: AppBottomNavigator,
        navigationOptions: {
            title: '底部'
        }
    },
    Top: {
        screen: AppTopTabNavigator,
        navigationOptions: {
            title: '顶部'
        }
    }
});
-----------------------------------------------------------------
import { createAppContainer } from 'react-navigation'
import { AppStackNavigator } from './navigators/AppNavigator'

AppRegistry.registerComponent(appName, () => createAppContainer(AppStackNavigator));

一个不错的react-native 矢量图标库:https://oblador.github.io/react-native-vector-icons/

一个不错的入门博文:http://www.devio.org/2018/05/15/navigator-to-react-navigation/

关于react-navigation必须知道的一点:

a)当导航器中的配置的页面被打开时,它的props会收到一个navigation属性,navigation属性是整个导航环节的关键一员。

navigation包含一下功能:

  • navigate:跳转到其他界面;
  • state:屏幕的当前state;
  • setParams:改变路由的params;
  • goBack:关闭当前屏幕;
  • dispatch:向路由发送一个action;

可以通过this.props.state.params来获取通过setParams(),或navigation.navigate()传递的参数。

<Button
    title={params.mode === 'edit' ? '保存' : '编辑'}
    onPress={() =>
        setParams({mode: params.mode === 'edit' ? '' : 'edit'})}
/>
<Button
    title="Go To Page1"
    onPress={() => {
        navigation.navigate('Page1',{ name: 'Devio' });
    }}
/>
const {navigation} = this.props;
const {state, setParams} = navigation;
const {params} = state;
const showText = params.mode === 'edit' ? '正在编辑' : '编辑完成';

注意:navigation.setParams改变的是当前页面的Params,如果要改变其他页面的Params可以通过NavigationActions.setParams完成。

注意:一个navigation有可能没有navigate、setParams以及goBack,只有state与dispatch,所以在使用navigate时要进行判断,如果没有navigate可以使用navigation去dispatch一个新的action。

  • SafeAreaView可以适配全面屏 - 仅支持iOS;

6、列表相关

FlatList与SectionList的底层实现都是VirtualizedList,因此类似于Android中的RecyclerView,存在Item的复用机制,是一个高性能的列表渲染组件。老版本的ListView由于没有这种复用机制,性能相对较差,基本废弃使用。

VirtualizedList - 支持滚动加载(onEndReached)、下拉刷新(onRefresh/refreshing)、可见性配置(onViewableItemsChanged/viewabilityConfig实现)、滑动方向、更智能的Item及section separators支持、Multi-column(借助numColumn)、对Flow更加友好、添加scrollToEnd、scrollToIndex和scrollToItem方法的支持;

FlatList - 高性能的列表组件;SectionList - 支持头部分组的列表组件;SwipeableList - 支持侧滑操作的列表组件;

未完待续.......

移动独行侠:从场景洞察到MVP实战,打造极致移动产品 在移动互联网领域,MVP(最小可行产品)和敏捷开发是应对激烈竞争、实现产品从0到1突破的核心方法论。MVP强调以最小成本快速验证核心价值,而敏捷开发则通过快速迭代响应市场反馈。其技术价值在于,能帮助开发者或小团队在资源有限的情况下,高效试错、降低风险,并聚焦于解决用户真实场景下的痛点。在应用场景上,无论是工具类App、内容产品还是垂直服务,通过深入的用户场景洞察,结合移动设备的原生特性(如传感器、LBS),都能创造出Web或PC端难以复制的体验。本文以“移动独行侠”(Mobile Mavericks)策略为 阅读详情

相关推荐

Windows Phone 7 Panorama中枢设计:信息架构与MVVM轻量化实践

Panorama是Windows Phone 7提出的一种空间化信息组织范式,本质并非滑动容器,而是通过水平延展、视觉引导与内容隔离构建用户认知路径;其设计原理直指移动端核心命题——在有限屏幕与低性能设备上实现高信息密度与高操作效率的平衡。该模式依托MVVM实现松耦合,但摒弃教条框架,采用按需通知、Insert(0)置顶、TwoWay绑定等轻量化落地策略,显著提升响应性与可维护性。技术价值在于以空间换时间、用平台原生能力替代算力堆砌,适用于Xamarin、Flutter及现代跨平台教育类应用的信息中枢重构。

diaojin6880的博客 569

使用 React Native 实现组件可见性传感器

本文是关于如何在 React Native 应用程序中为组件实现可见性传感器。借助垂直或水平 FlatList及其 onViewableItemsChangedprop ,只要列表项在视口中出现或消失,就可以观察事件。使用这个概念,您可以对这些事件做出反应,例如,自动开始播放视频或跟踪“组件看到的事件”以用于营销目的。

分享身边生活经验blog 1156

FlatList组件onViewableItemsChanged实现左右列表联动

onViewableItemsChanged简介 FlatList是React Native提供的一个高性能的列表组件,本身具备了列表Item缓存复用的逻辑,并且还支持下拉刷新等功能。在列表开发中,特别是FlatList列表滚动时,需要监听当前那些数据item在可见范围内,这时候就需要用到FlatList的onViewableItemsChanged属性。使用onViewableItemsChanged要与viewabilityConfig绑定使用。 onViewableItemsChanged:在可见行

xiangzhihong8的专栏 1856

React Native 组件学习-FlatList

高性能的简单列表组件,支持下面这些常用的功能: 完全跨平台。 支持水平布局模式。 行组件显示或隐藏时可配置回调事件。 支持单独的头部组件。 支持单独的尾部组件。 支持自定义行间分隔线。 支持下拉刷新。 支持上拉加载。 支持跳转到指定行(ScrollToIndex)。 如果需要分组/类/区(section),请使用&lt;SectionList&gt;. 一个最简单的例子: &lt;FlatLi...

weixin_33947521的博客 756

react native 侧滑菜单

react native 侧滑菜单:支持3种侧滑动画,支持iOS&android;

基于bootstrap+Java的图书管理系统(任务书)

10] 倪甜弟,周晓波,王相喜.基于JSP图书馆自习室预约系统的设计与实现[J].现代计算机, 2024, 30(9):117-120.DOI:10.3969/j.issn.1007-1423.2024.09.023.[2] 陈明雪,赵勇,周小丽,等.基于Node.js和Bootstrap的图书管理系统设计与研究[J].现代信息科技, 2021, 5(24):4.[9] 杨婷婷.基于VOSviewer的图书馆管理系统研究的可视化分析[J].现代信息科技, 2023, 7(3):123-126.

毕业作品网站 646

ReactNative之FlatList之onViewableItemsChanged深度挖掘与研究

FlatList是ReactNative高性能的简单列表组件。本文只探讨onViewableItemsChanged属性使用,这里不过多介绍,官方文档https://reactnative.cn/docs/flatlist/。 1.需求背景:FlatList列表滚动时,监听当前那些数据item在可见范围内。这时就需要FlatList的onViewableItemsChanged。使用onView...

轻量开发 6339

Cadence16.6安装教程

如需安装所需的软件,请到文章末尾处查看 安装步骤: 安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。 试装系统:win10 64bit 1.解压安装包(共5个压缩包,每个都要解压) 2.以管理员身份运行安装程序。 3.选择License Manager。 4.点击NEXT。 5.选择I accept,然后点击NEXT。 6.选择License Manage...

谢谢关注“小鱼教你模数电”,各平台同号 8万+

React Native学习笔记-4:CSS优先级速记

学习过程中涉及到CSS优先级,书本上介绍的权限形如: id选择器默认优先级最高,权值100 class选择器、属性选择器、伪类选择器权值010 标签选择器的优先级权值为001 需要做的就是统计选择符中的id、class、标签名个数,然后把对应的权值相加即可。根据结果便可得出优先级高低。 但是在计算的过程中,很容易弄混各个的权值,发现只要记住ice这个单词即可,权值就出来了。这样就不会弄混了。

SiamPig的专栏 1509

单片机通识之UART通信协议(如何用汇编实现)

使用汇编实现UART通信

smart_num_1的博客 996

基于三轴加速度计的塑料水管泄漏振动检测技术全解析

在流体力学与结构动力学领域,管道振动分析是评估系统健康状态的关键技术。其基本原理在于,当管道内流体状态发生异常(如泄漏)时,会引发管壁产生特定的机械振动信号。这项技术的核心价值在于实现了对管道系统的非侵入式、在线监测,能够提前预警潜在故障,避免资源浪费与次生灾害。在智慧城市与智能水务等应用场景中,它对于保障供水管网安全、提升运维效率具有重要意义。本文聚焦于如何利用高精度的三轴加速度计,精准捕捉塑料水管因泄漏产生的微弱振动,并通过信号处理与机器学习算法,构建一套从数据采集到泄漏识别与定位的完整工程解决方案。

weixin_32239523的博客 407

React Native移动端AI办公应用开发:架构设计与性能优化实战

在移动开发领域,跨端框架与人工智能技术的融合正催生新一代生产力工具。React Native凭借其高效的开发模式与动态更新能力,成为构建复杂移动应用的主流选择之一。通过将云端大语言模型(LLM)的智能与端侧轻量模型的实时性相结合,开发者能够实现文档理解、数据分析和语音交互等高级功能,其技术价值在于大幅提升了移动场景下的办公效率与交互自然度。这种架构尤其适用于需要在手机端快速处理信息、生成内容或进行数据洞察的各类办公场景。本文以具体的移动端AI办公应用为例,深入探讨了在React Native框架下集成AI能

germmy-神一样的开发 327

单细胞数据pseudobulks差异分析实战:从聚合到DESeq2

本文详细介绍了单细胞转录组数据分析中pseudobulks(伪散装)方法的实战流程。通过将同一样本的同类型细胞表达值聚合,模拟Bulk RNA-seq数据,再利用DESeq2进行稳健的差异基因分析。该方法有效降低了单细胞数据的技术噪音,特别适用于样本量有限但追求结果稳定性的研究场景,并提供了完整的R代码实现与结果解读指南。

sea99的博客 760

大道至简——React Native在直播应用中的实践

声明:本文来自「七牛云主办的架构师实践日——亿级移动应用架构最佳实践」的演讲内容整理。PPT、速记和现场演讲视频等参见“七牛架构师实践日”官网。 嘉宾:卜赫,七牛云布道师。 责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@youkuaiyun.com,另有「优快云 高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008申请入...

博客 6687

Dify工作流构建案例:迭代驱动的多维深度搜索

为了克服这些挑战,我们可以设计一个能够智能协同内部知识库与外部互联网搜索,并最终由大型语言模型(LLM)进行深度整合与精准回答的高级工作流。

同名公众号:dify实验室 2291

TIBCO Jaspersoft Studio报表开发 使用教程-进阶版

本文学习内容容器定制二级目录三级目录 容器定制 二级目录 三级目录

吉哲的博客 7521

JSX不是HTML:React声明式UI的本质与实战

JSX是JavaScript的语法扩展,用于声明式描述UI结构,而非编写HTML模板。其核心原理是将XML风格语法编译为React.createElement调用,生成轻量级虚拟DOM节点,支撑高效Diff算法与数据驱动渲染。技术价值在于统一逻辑与视图、消除模板割裂、提升可维护性与类型安全。典型应用场景包括动态属性注入、条件渲染、列表map+key优化、受控表单及事件委托。理解JSX本质,是掌握React状态管理、组件通信与前端工程化实践的前提,也是应对react面试题、前端react面试考察代码等高频考点

weixin_34253126的博客 405

《多模态融合改进》支持目标检测、目标分割、OBB、姿态估计,配置教程

本文以为例,讲解如何配置,支持替换专栏里所有的改进方式。

Limiiiing的博客 795

跨平台开发地图:客户端技术选型指南 | 2025年12月

老刘每个月为大家画出最新的跨平台技术选型地图,帮你快速做决策。 本月很多跨平台框架都有细节方面的更新。

developer_laoliu的博客 1424

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

跨平台开发地图:客户端技术选型指南 | 2025年11月 |(Valdi 加入战场)

本月很多跨平台框架都有更新,另外新框架**Valdi**加入战场,为跨平台开发带来了新的可能性。

developer_laoliu的博客 1539

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

基于正念的焦虑缓解App设计:参考《西藏生死书》的4个核心交互模块

本文探讨了基于正念的焦虑缓解App设计,融合《西藏生死书》的智慧,提出4个核心交互模块:无常日志、呼吸锚定、慈悲冥想和生命意图设置。这些模块通过多感官交互和游戏化设计,帮助用户缓解焦虑,提升心理韧性。文章还介绍了藏式美学在用户体验中的应用,确保设计既现代又具有文化深度。

shirlly 232

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

智能任务管理系统:动态优先级与情境感知实践

任务管理系统是现代效率工具的核心组件,其本质是通过算法优化工作流程。动态优先级算法结合艾森豪威尔矩阵与机器学习,实现任务自动排序;情境感知技术则利用传感器数据构建用户画像,实现智能任务推荐。这种技术组合能显著提升任务完成率并降低决策疲劳,特别适合金融、IT等需要多任务处理的行业。以React Native和Node.js构建的跨平台方案,配合NoSQL数据库,确保了系统的高性能与扩展性。通过自然语言处理和自动化规则配置,系统能有效处理会议记录、邮件转换等复杂场景,实现真正的智能任务管理。

ctpaknc9526的博客 367

wikioi 糊涂的记者 (最大权匹配+恶心的高精度)

在如今的信息社会中,时间-就是生命,对于记者们来说,如何以最快的速度传递消息就显得十分重要了,而为了尽快记录消息内容,速记也是必不可少的。速记就是用一些简单且特殊的符号表示一定的含义,具体如何对应依个人习惯而定,没有一种固定的表示方法。      Tom是一名报社的新闻记者,常常马不停蹄的跟着新闻跑,有时只能随手记下采访的内容,让人送回报社,而自己又奔赴下一个现场。不过Tom是一个糊涂的记者,有

LSS 1146

AI便利贴与墨水屏:智能硬件如何重塑碎片化信息管理

在物联网与嵌入式系统领域,低功耗微控制器(MCU)和电子墨水屏(E-ink)技术正推动智能硬件向更垂直、人性化的场景演进。其核心原理在于通过MCU(如ESP32)实现设备控制与无线通信,结合墨水屏的反射式显示特性,在静态显示时实现近乎零功耗,为常亮显示设备提供了技术基础。这类技术的工程价值在于将数字化能力无缝融入物理环境,解决传统电子设备在特定场景下的交互繁琐与功耗问题。典型的应用场景包括开发者的工位信息看板、学生的灵感记录板以及家庭的智能留言板,它们共同指向一个更通用的需求:对碎片化信息进行高效、低侵扰的

weixin_30457465的博客 452

如何快速安装VPKEdit:Windows、macOS与Linux三平台部署一步到位

**VPKEdit** 是一款 MIT 开源的打包文件管理工具,可以**创建、读取、写入** VPK、WAD、PAK、PK4、ZIP、BSP 等数十种游戏资源包格式,并提供图形界面(GUI)与独立的 `vpkeditcli` 命令行工具两种形态。无论你想解包游戏资源还是重新打包,本文都能在几分钟内帮你在 Windows、macOS 或 Linux 上完成 **VPKEdit 安装**并验证可用。

gitblog_00736的博客 1023

Awesome Cheatsheet 全指南:开发者速查手册导航库的分类体系、维护规范与链接质量保障机制

> 本指南以开源仓库 `awesome-cheatsheet`([README.md](https://link.gitcode.com/i/27aa0c3d30f2694d8619f3b0eafbcdb4))为对象,系统梳理这个汇集了 200+ 条高质量 cheatsheet 资源的导航库:你将掌握其 14 大分类的组织脉络、每条资源的挑选与收录标准、通过 `make test` 与 [test

gitblog_00480的博客 378
上一篇: Android IPC原理分析小结
下一篇: Window和WindowManager学习笔记
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值