React Native 如何使用第三方库及实例

iOS 开发的时候,如果想使用第三方库的话,一般我们会选择 CocoaPods 来管理第三方库,好用方便。最近在敲 React Native,刚开始的时候想着 RN 的第三方库怎么使用?经过摸索之后算是知道怎么用了,在此记录一下,刚入门的同学可以看一下,React Native 大神请绕道哈,水平有限,有错误的话请指出。

什么是NPM ?

NPM 是 NodeJS 的包管理和分发工具。它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过 NPM 管理你分享的代码也很方便快捷和简单。

NPM 使用介绍

NPM 是随同 NodeJS 一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,安装完 NodeJS 就已经有了 NPM, 不过由于 NodeJS 更新速度要慢于 NPM ,因此在一般情况下要升级你的 NPM 到最新版本。如果你还没有安装,这里有详细的安装流程。
NPM 常见的使用场景有以下几种:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

接下来我们就是下载别人编写的第三方包到项目中使用。

一、初始化一个项目

image.png

初始化完成之后,打开项目我们可以看到项目已经生成了一个 package.json 文件:

image.png

包的定义和 NPM 都围绕着 package.json 文件做文章,package.json 文件其实就相当于 iOS 中的 podfile 文件,用于存放模块的名称、版本、作者、机构、模块入口、依赖项等信息:

image.png
package.json 的一些内容的功能:
  • name:表示模块名称。
  • version:表示模块的版本号。版本号以主版本号(Major).副版本号(Minor).补丁版本号(Patch)构成(如1.2.0)。
  • scripts:自定义在cli中输入npm "script"时实际执行的程序,npm默认提供大量的script供我们调用。
  • dependencies、devDependencies:用于配置模块的生产环境依赖包和开发环境依赖包。当执行npm install时,npm会根据这两个配置项的值去下载安装相关的依赖包。两者的区别是devDependencies是模块开发过程的依赖包,并且当其他模块需要依赖当前模块时,当通过npm install “package-name”时会自动下载安装dependencies的包而不会下载devDependencies的包。

二、查找、安装/卸载、更新依赖包

包的种类:

  • 全局包:用作在cli上直接调用,用户可以在命令行中直接运行该组件包支持的命令,而无法在项目中通过 require 导入依赖包。
  • 本地包:用作在项目中通过 require 导入依赖包,供项目使用。

全局和本地的依赖包存放位置:

  • 通过npm root -gnpm root可分别查看全局和本地的依赖包下载安装的绝对目录了。全局包安装在Node安装目录下的node_modules文件夹中,本地的依赖包会存放在当前项目根目录下的 node_modules 目录下。

包的搜索:

搜索依赖包:
npm search "package-name"
查看依赖包的package.json信息:
npm view "package-name"
单独查看package.json某个配置:
  查看包的依赖关系
  npm view "package-name" dependencies
  查看包的源文件地址
  npm view "package-name" repository.url
  查看包所依赖的node版本号
  npm view "package-name" engines

安装、卸载、更新包:

  • 安装包
本地
npm install "package-name"
全局
npm install -g "package-name"
这样会安装最新版的包,若需要安装特定版本,则
npm install "package-name"@"version"

注意:本地安装时将模块写入package.json中:
npm install "package-name"安装但不写入package.json;
npm install "package-name" --save安装并写入package.json的”dependencies”中;
npm install "package-name" --save-dev安装并写入package.json的”devDependencies”中。

  • 卸载包
卸载本地
npm uninstall "package-name"
卸载全局
npm uninstall -g "package-name"
  • 更新包
更新本地
npm update "package-name"
更新全局
npm update -g "package-name"

三、项目中使用三方库

使用一个常见的轮播图组件react-native-swiper作为例子

1>先安装包到项目中:

image.png

查看此时的 package.json 会发现多了绿色框内的内容:


image.png

2>把包引入到需要使用的文件内:
import Swiper from 'react-native-swiper'

3>使用:

export default class extends Component {
    constructor(props) {
        super(props)
    }
    render(){
        return (
            <View style={styles.mainStyle}>

                <Swiper style={styles.wrapper}
                        autoplay={true}
                        autoplayTimeout={1}
                >
                    <View style={styles.slide}></View>
                    <View style={styles.slide1}></View>
                    <View style={styles.slide2}></View>
                    <View style={styles.slide3}></View>
                </Swiper>
            </View>
        );
    }
}
var styles = StyleSheet.create({
    mainStyle: {
        width: screenW,
        height: screenH,
        backgroundColor: "#1ab9af",
        justifyContent: 'flex-start',
        alignItems: 'center',
    },
    wrapper:{
        marginTop:50,
        height:250,
        backgroundColor:'white',
    },
    slide: {
        height:250,
        justifyContent: 'center',
        backgroundColor: 'blue'
    },
    slide1: {
        height:250,
        justifyContent: 'center',
        backgroundColor: 'yellow'
    },
    slide2: {
        height:250,
        justifyContent: 'center',
        backgroundColor: 'red'
    },
    slide3: {
        height:100,
        justifyContent: 'center',
        backgroundColor: 'cyan'
    },
});

效果图:

image.gif

一个轮播图就完成了,demo在这。如果你想了解它的更多功能,点这里react-native-swiper

如果想要使用其他的第三方组件,可以参考上面的例子,流程大同小异,区别就在于每个组件的属性存在区别,但是只要仔细阅读作者写的使用文档,就可以做成你想要的样子了。

更多的优秀第三方组件:
React Native组件库
react native第三方组件(持续更新...)
React Native 项目常用第三方组件汇总
React Native的中文参考资料,包括开源库,文字/视频资料,相关工具等

NPM更多更详细的讲解:
NPM (node package manager) 入门 - 基础使用
npm入门文档
【原】nodejs全局安装和本地安装的区别

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,799评论 25 707
  • 尽管在移动开发中,原生APP的开发成本很高,但现阶段基于原生开发仍然是必须的,因为Web的用户体验仍无法超越Nat...
    奔跑的大橙子阅读 5,388评论 0 11
  • 上午接送 a.排好队,不能前后拉手,说话,打闹,不能掉队 b.上下楼靠右行 c.回到教室不准随意下位,坐姿端正,不...
    七月小七阅读 654评论 0 0
  • 董卓派与不驻守在泗水关下变得虎牢关。吕布已经杀死18路诸侯的好几员大将了。
    贾怡宁阅读 401评论 0 0
  • 今夜 夜微凉 凉意袭思 思绪千百万 万象更新无梦 梦沧海桑田岁月 月圆月缺又是何年 年二十有三华发竟生 生做人杰死...
    北冥湫阅读 151评论 0 2