热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ReactNative组件开辟指南

ReactNative的组件开辟一向处在一个比较为难的处境。在官方未赋予相干示例与脚手架的情况下,社区中依旧诞生了许很多多的ReactNative组件。由于缺少示例与范例,很多组件

React Native的组件开辟一向处在一个比较为难的处境。在官方未赋予相干示例与脚手架的情况下,社区中依旧诞生了许很多多的React Native组件。由于缺少示例与范例,很多组件库仅含有一个index.js文件。这类基本的目次构造也致使了一些不言而喻的题目,比方“怎样测试”,“怎样预览”,“怎样开辟”……本文将为列位供应一种React Native组件开辟的示例目次构造相干设置指南

示例目次构造

.
├── src
│ └── index.js
├── test
│ └── index.test.js
├── demo
│ ├── .gitignore
│ ├── .watchmanconfig
│ ├── App.js
│ ├── app.json
│ ├── babel.config.js
│ ├── metro.config.js
│ └── package.json
├── .eslintrc.js
├── babel.config.js
├── README.md
├── .gitignore
└── package.json

目次构造重要区分为4块内容根目次src目次test目次demo目次

根目次包括了eslint设置babel设置README, gitignore, package.json。个中babel设置package.json中依靠定义是为了运转测试用例而存在的。

src目次包括了当前React Native组件的源码,是组件开辟最重要的目次。

test目次包括了当前React Native组件的测试相干代码。

demo目次包括了一个自力的Expo项目,个中App.js文件是开辟组件示例最重要文件,个中会援用src目次中供应的组件来举行开辟与展现。该目次的设置概况会在下文中继续睁开。

为什么用Expo来举行开辟与展现?

Expo是一个基于React Native包裹的React Native运用开辟框架。很多React Native的开辟者关于Expo依旧持怀疑态度。不可否认的是用Expo来开辟React Native运用确切存在一些题目,比方:

  • 引入Expo SDK后,运用体积过大的题目
  • 缺少运用在背景运转的才能
  • …

然则绝大多数Expo的弊病是我们在组件开辟中不会碰到或许能够避开的,那末随之而来的就是Expo的长处:

  • 疾速装置与上手
  • 疾速在网页、模拟器、实机上预览或测试
  • 与React Native的无缝兼容性

置信开辟过React Native的同砚一定会埋怨它极重的依靠装置,与烦琐的调试历程,而Expo恰好轻量化了这两个历程,不仅加快了我们的组件开辟预览,也在我们的组件目次中去除了Native端相干的代码,轻量化了我们的目次构造

相干设置指南

引入Expo

为组件项目引入Expo能够没有听上去这么轻易,由于我们在上文的目次构造中将src目次定义成与demo目次平行的目次构造,这就致使了metro(React Native打包东西)的默许设置将没法一般打包demo目次中的React Native代码。为了处理这个题目,我们就须要手动去调解metro的设置文件,而metro设置文档又以“精简”著称,因而设置metro便成了一个极大的困难点。

准备工作

起首我们须要装置Expo CLI东西

$ npm install -g expo-cli

在组件库的根目次中运转

$ expo init demo

然后挑选

  • blank template
  • managed workflow

你便在demo目次中天生了一个可运转的Expo项目, 能够经由过程运转以下敕令来预览当前的Expo项目

$ cd demo
$ yarn start

设置metro

旧版本metro一般运用
rn-cli.config.js作为设置文件名,而新版本则运用
metro.config.js作为设置文件名。旧版本
metro的设置文件花样也与新版本有较大的差异。本文将重点关注新版本
metro的设置。

demo目次中建立名为metro.config.jsmetro设置文件,并在Expo的运用设置文件app.json中增加以下字段用于重置项目根目次设置与注入自定义的metro设置文件

"packagerOpts": {
"projectRoots": "",
"config": "metro.config.js"
}

metro.config.js中增加以下内容

const path = require('path');
const blacklist = require('metro-config/src/defaults/blacklist');
const escapeRegexString = require('escape-regex-string');
module.exports = {
resolver: {
blacklistRE: blacklist([
new RegExp(
`^${escapeRegexString(path.resolve(__dirname, '..', 'node_modules'))}\\/.*$`,
),
]),
providesModuleNodeModules: [
'react-native',
'react',
'prop-types',
],
extraNodeModules: {
'@babel/runtime': path.resolve(__dirname, 'node_modules/@babel/runtime'),
},
},
projectRoot: path.resolve(__dirname),
watchFolders: [
path.resolve(__dirname, '..'),
],
};

来细致剖析一下上面的设置项

  • providesModuleNodeModules: 该设置项为当前项目供应分外的providesModule途径剖析名。providesModule简朴来讲就是一个供应文件途径别号的手腕。比方在一个文件头部增加以下的解释,你就可以够在项目别处经由过程import test from 'test'直接引入该文件。

    /**

*/
```

在这里我们将注入在src目次中被援用的三个库react-native, react, prop-types,使得src目次中的援用能准确被metro剖析。

  • extraNodeModules: 该设置旨在为当前项目供应分外引入的模块,设置花样为[{ 模块名 : 途径 }]。我们在这里设置src目次中须要的分外模块,比方运转测试时所须要的@babel/runtime模块。
  • blackListRE: 设置一个正则,打包时疏忽掉正则匹配到的途径。在这里我们将根目次中的node_modules途径下的一切内容疏忽,目标是由于在根目次下的node_modules中会存在与demo目次node_modules中雷同的库,比方react-native, react, prop-types。这就会使得providesModule在剖析时发生重名,从而致使jest-haste-map报错。
  • projectRoot: 设置项目标根目次。
  • watchFolders: 为项目引入除projectRoot外分外的目次,在这里我们将上层的根目次到场metro的关注列表。

设置完metro,即可在App.js中引入src目次中的组件

import React from 'react';
import { StyleSheet, View } from 'react-native';
import Component from '../src';
const App = () => (
alignItems: 'center',
justifyContent: 'center',
},
});
export default App;

如今运转yarn start,就可以顺遂看到你的组件在Expo中展现了。

小结

本文重要供应了一种React Native组件的目次构造,与“怎样在一个React Native组件工程中引入一个含Expo工程的子目次”的相干设置指南。这里还须要须要申明的一点是,React Native组件的目次构造能够有千万种,本文只是供应一种可行的思绪供人人参考,若有更好的计划也迎接交换与进修。本文将重点放在了引入Expo的设置指南上,如需检察该目次构造的一切文件设置,请转至Github。

相干

  • react-native-component-cli – 疾速天生该目次构造的脚手架东西
  • react-native-hsv-color-picker – 基于该目次构造的组件案例

推荐阅读
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • Vue CLI 基础入门指南
    本文详细介绍了 Vue CLI 的基础使用方法,包括环境搭建、项目创建、常见配置及路由管理等内容,适合初学者快速掌握 Vue 开发环境。 ... [详细]
  • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文介绍了.hbs文件作为Ember.js项目中的视图层,类似于HTML文件的功能,并详细讲解了如何在Ember.js应用中集成Bootstrap框架及其相关组件的方法。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • 在Notepad++中配置Markdown语法高亮及实时预览功能
    本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ... [详细]
  • 本文探讨了Node.js后端开发的基础知识,包括模块源码的使用方法、前后端源码的区别以及如何在命令行环境中编译Node.js源代码。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
author-avatar
命运2502901041_350
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有