精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在React Native中寫一個自定義模塊

開發 前端
在 React Native 項目中可以看到 node_modules 文件夾,這是存放 node 模塊的地方,Node.js 的包管理器 npm 是全球最大的開源庫生態系統。提到npm,一般指兩層含義:一是 Node.js 開放式模塊登記和管理系統,另一種是 Node.js 默認的模塊管理器,是一個命令行軟件,用來安裝和管理 node 模塊。本文旨在探討如何在 React Native 中寫一個自定義的 npm 模塊(類似于插件),并上傳到 npm 上供他人使用。

前言

在 React Native 項目中可以看到 node_modules 文件夾,這是存放 node 模塊的地方,Node.js 的包管理器 npm 是全球***的開源庫生態系統。提到npm,一般指兩層含義:一是 Node.js 開放式模塊登記和管理系統,另一種是 Node.js 默認的模塊管理器,是一個命令行軟件,用來安裝和管理 node 模塊。本文旨在探討如何在 React Native 中寫一個自定義的 npm 模塊(類似于插件),并上傳到 npm 上供他人使用。

npm 使用介紹

npm 是一個 Node.js 模塊,安裝 Node.js 會默認安裝 npm,可以在終端中使用以下命令來查看 npm 的版本:

  1. npm -v 

升級 npm:

  1. sudo npm install npm -g 

安裝模塊(安裝完畢后會產生一個node_modules目錄,其目錄下就是安裝的各個node模塊):

  1. npm install <ModuleName> 

查看 npm 配置:

  1. npm config list 

設置代理:

  1. //設置 http 代理 
  2. npm config set proxy http://server:port 
  3. //設置 https 代理 
  4. npm config set https-proxy http://server:port 

 

上面介紹了一些 npm 基本命令,接下來就可以在本地創建一個模塊啦。 首先打開終端中新建一個你想在此創建自定義模塊的文件夾,然后在命令行中登錄 npm。輸入以下命令:

  1. npm adduser 

接下來會提示你輸入用戶名和密碼還有郵箱,一一完成后就可以輸入以下命令來查看當前 npm 用戶了:

  1. npm whoami 

如果正確顯示了剛才注冊的用戶名,說明登錄成功了。然后就使用以下命令來創建 npm 模塊:

  1. npm init 

執行上述命令后,會引導你創建一個package.json文件,包括名稱、版本、作者這些信息等。

創建模塊

這里要提一下,為什么要寫一個自定義模塊。因為 React Native 雖然實現了很多 Native 組件,并且提供了豐富的 API,但是有些原生庫還是不支持的,而且有很多開源的組件和庫是面向原生的,因此要想在 React Native 中使用這些組件和庫就需要自己定義一個模塊,這樣也方便別人集成。接下來我們直接進入正題。寫一個 React Native 中可以使用的自定義模塊。在命令行中執行

  1. react-native init AwesomeProject 

初始化一個 React Native 項目。這里以 Android 為例,用 Android Studio 選擇菜單 File->open 打開 AwesomeProject 文件夾下的 android 文件夾,然后選擇 File -> New -> New Module,選擇創建一個 Android Library,如圖:

如圖所示,這里新建了一個 Library module,接下來點擊 finish 就可以看到如下的目錄結構:

 

 

 

然后將所需要依賴的 jar 放到 libs 目錄下,這里以使用 jpush-sdk 為例,將官網上下載的 libs 復制到 libs 下,把相關的資源文件放到 res 文件夾下,再把 AndroidManifest 文件內容復制過來,更改一下包名,***在 build.gradle 中配置一把,如下(這里要注意把 targetSdkVersion 改成 22,在23上運行可能會閃退):

  1. apply plugin: 'com.android.library' 
  2. android {     
  3.   compileSdkVersion 23     
  4.   buildToolsVersion "23.0.2"     
  5.   defaultConfig {         
  6.     minSdkVersion 16         
  7.     targetSdkVersion 22         
  8.     versionCode 1         
  9.     versionName "1.0"         
  10.     manifestPlaceholders = [                 
  11.       JPUSH_APPKEY: "yourAppKey",  //在此修改JPush的AppKey                     
  12.       APP_CHANNEL: "developer-default"      //應用渠道號         
  13.     ]     
  14.   }     
  15.   lintOptions {         
  16.     abortOnError false         
  17.     warning 'InvalidPackage'     
  18.   }     
  19.   sourceSets {         
  20.     main {             
  21.       jniLibs.srcDirs = ['libs']         
  22.     }     
  23. repositories {     
  24.   mavenCentral() 
  25.  
  26. dependencies {     
  27.   compile fileTree(dir: 'libs', include: ['*.jar'])     
  28.   compile "com.facebook.react:react-native:+" 

 

到此為止,我們已經完成了***步操作,接下來需要寫 Native 和 JS 交互的代碼,可以參考我的這篇文章中 JS 調用 Native 以及 Native 調用 JS 部分,這里不再贅述。假設我們已經完成了 Native 部分代碼,我們如何才能在 JS 中讓他人能夠通過 import 的方式調用我們的 JS 代碼,從而調用 Native 呢?首先進入 my-react-library 文件夾,然后在終端執行

  1. npm init 

生成 package.json 文件(注意這里的 name 字段,這里是別人引用你的模塊的名字),然后再創建一個 index.js 文件,這是 node 模塊的 JS 入口,這里推薦使用 Sublime Text 進行 JS 的編寫。這里以 jpush-react-native 為例:

jpush-react-native/index.js 部分代碼

  1. import {NativeModules, Platform, DeviceEventEmitter} from 'react-native'
  2.  
  3. // 通過 NativeModules 找到我們在 Native 定義的 JPushModule 類 
  4. const JPushModule = NativeModules.JPushModule; 
  5.  
  6. export default class JPush { 
  7.  
  8.     /** 
  9.      * Android only 
  10.      * 初始化JPush 必須先初始化才能執行其他操作 
  11.     */ 
  12.     static initPush() { 
  13.         JPushModule.initPush(); 
  14.     } 
  15. } 

 

上面定義了一個 initPush 方法,initPush 實際上調用了 JPushModule 中定義的 initPush 方法,其他方法與此類似,本質上都是通過 NativeModules 調用了 Native 提供的方法。

發布

到此為止,我們已經完成了 React Native 自定義模塊。現在可以發布我們的自定義模塊了。在 package.json 所在的目錄下執行

  1. npm publish 

就可以把我們的自定義模塊上傳到 npm 庫了。每次更新版本時,需要改動 package.json 中的 version 值,然后再執行 npm publish 即可。

使用

在 React Native 目錄下,執行:

  1. npm install my-react-library --save 

安裝完成后就會把這個模塊保存到 node_modules 文件夾下,由于我們的模塊是一個 Android Library 項目,所以在 Native 中還需要配置一下。主要是添加項目依賴:

someone's react-native project/some module/build.gradle

  1. dependencies {     
  2.   compile fileTree(dir: "libs", include: ["*.jar"])     
  3.   compile "com.android.support:appcompat-v7:23.0.1"     
  4.   compile "com.facebook.react:react-native:+"  // From node_modules    
  5.   // 在 dependecies 中加入自定義模塊  
  6.   compile project(':my-react-library'

 

然后在 settings.gradle 中也要配置一下:

someone's react-native project/settings.gradle

  1. include ':app'':my-react-library' 
  2. project(':my-react-library').projectDir = new File(rootProject.projectDir, '../node_modules/my-react-library/android'

 

在 MainActivity 中將自定義的 Package 添加進去:

MainActivity.java

  1. ... 
  2. mReactInstanceManager = ReactInstanceManager.builder()                 
  3. .setApplication(getApplication())                 
  4. .setBundleAssetName("index.android.bundle")                 
  5. .setJSMainModuleName("react-native-android/index.android")                 
  6. .addPackage(new MainReactPackage()) 
  7. //添加自定義的 package 
  8. .addPackage(new MyReactPackage()) 
  9. ... 

 

如果是 RN 0.29.0 以上版本,則應在 MainApplication 中添加:

MainApplication.java

  1. @Overrideprotected List<ReactPackage> getPackages() {     
  2. return Arrays.<ReactPackage>asList(             
  3.     new MainReactPackage(),             
  4.     new MyReactPackage()     
  5.   ); 

 

到此為止我們完成了 Native 部分的配置(完成后 sync 一下),接下來就可以使用了。 別人要使用我們的模塊時,就可以這樣寫:

someone.js

  1. //這里的 'my-react-library'是在 package.json 定義的 name 
  2. // 這樣就可以 
  3. import MyModule from 'my-react-library' 
  4.  
  5. export default class SomeClass  extends React.Component { 
  6.     componentDidMount() { 
  7.       // 調用 index.js 中定義的 doSomething() 
  8.       MyModule.doSomething(); 
  9.     } 
  10. } 

 

責任編輯:龐桂玉 來源: 極光推送的博客
相關推薦

2022-06-06 09:28:36

ReactHook

2021-07-01 11:07:49

Swift 自定義操作符

2019-12-02 21:29:45

Keras神經網絡TensorFlow

2012-11-19 11:07:42

IBMdw

2009-07-03 18:20:45

VSTS 2010網絡

2020-11-19 10:50:43

ImportPython代碼

2012-05-18 10:52:20

TitaniumAndroid模塊自定義View模塊

2016-11-23 16:48:20

react-nativandroidjavascript

2023-01-29 08:00:00

Instagram濾鏡圖片編輯

2021-07-16 11:00:40

Django用戶模型Python

2013-03-28 16:59:56

Android開發自定義TitleBar

2009-04-28 13:25:36

Ajax函數Java

2024-04-11 08:30:05

JavaScript數組函數

2016-12-07 17:45:44

Linux文件

2021-07-26 09:00:08

ReactHooks 項目

2021-03-09 15:23:45

鴻蒙HarmonyOS應用開發

2019-09-10 09:12:54

2024-08-01 17:20:55

2020-09-18 10:12:24

KotlinTCP網絡協議

2022-03-07 07:33:24

Spring自定義機制線程池
點贊
收藏

51CTO技術棧公眾號

蜜臀av粉嫩av懂色av| 一区二区三区国| 国产精品国产三级国产专区52| 玖玖玖免费嫩草在线影院一区| 欧美日韩在线另类| 在线不卡日本| 丝袜+亚洲+另类+欧美+变态| 日本aⅴ亚洲精品中文乱码| 久久精品视频一| 色天使在线视频| 国产精品久久久久久久久久辛辛| 亚洲va欧美va人人爽午夜| 日韩免费电影一区二区| 亚洲精品久久久狠狠狠爱| 日日欢夜夜爽一区| 久久久噜噜噜久久中文字免| 日韩不卡av在线| 看全色黄大色大片免费久久久| 欧美日韩午夜精品| 国产视频九色蝌蚪| 国产精品剧情| 国产欧美一区二区三区在线老狼| 成人午夜在线视频一区| 亚洲 欧美 成人| 国产一区亚洲| 久久精品视频在线| 国产精品天天干| 你懂的在线观看一区二区| 欧美日韩精品系列| 日本在线观看a| 任你弄在线视频免费观看| 中文一区二区完整视频在线观看| 精品视频一区二区| 成人免费视频国产| 国产一区二区三区黄视频 | 精品福利在线| 日韩欧美一区二区三区| 2019日韩中文字幕mv| 看黄网站在线| 中文字幕在线不卡一区 | 国产在线视频网| av中文字幕一区| 99免费在线观看视频| 国产欧美一级片| 极品少妇xxxx精品少妇偷拍| 国产精品亚洲аv天堂网| www.国产毛片| 蜜桃伊人久久| 欧美高清视频手机在在线| 免费亚洲一区| 韩国19禁主播vip福利视频| 91香蕉一区二区三区在线观看| 成人毛片免费看| 中文在线不卡视频| 天天摸日日摸狠狠添| 成人精品影院| 日韩视频精品在线| 亚洲av无码一区二区三区在线| 久久综合电影| 久久影院资源网| 日韩一区二区不卡视频| 一本一道久久综合狠狠老| 九九热精品视频国产| 青娱乐在线视频免费观看| 你懂的亚洲视频| 欧美精品xxx| 国产污污视频在线观看| 亚洲一区图片| 日韩av不卡在线| 日韩av免费播放| 久久99这里只有精品| 亚洲精品欧美日韩| 欧美一区二区公司| 久久色.com| 一区二区免费电影| v片在线观看| 亚洲丰满少妇videoshd| 成年人免费在线播放| 激情久久99| 日韩亚洲国产中文字幕欧美| 中国xxxx性xxxx产国| 欧美美女在线| 久久精品99无色码中文字幕 | 国产精品片aa在线观看| 国产亚洲激情在线| 三级全黄做爰视频| 亚洲美女啪啪| 国产精品色悠悠| 国产日韩欧美视频在线观看| 成人免费福利片| 欧美下载看逼逼| 国产网友自拍视频导航网站在线观看| 一区二区三区四区中文字幕| 动漫av网站免费观看| 亚洲精品伊人| 亚洲韩国青草视频| 三级黄色片在线观看| 亚洲午夜精品久久久久久app| 国产99在线|中文| 国产99久一区二区三区a片| 99国产精品99久久久久久| 亚洲视频精品一区| 国产中文在线播放| 欧美久久久久久久久久| 添女人荫蒂视频| 一本一道久久综合狠狠老| 国产成人精彩在线视频九色| 不卡av中文字幕| 中文字幕欧美三区| 国产在线精品91| 成人黄色理论片| 亚洲免费一级电影| 国产一级视频在线播放| 免费在线观看一区二区三区| 国产欧美日韩综合精品二区| 无遮挡动作视频在线观看免费入口| 午夜精品在线视频一区| 深夜做爰性大片蜜桃| 成人久久电影| 国产成人av网| 天天操天天干天天干| 亚洲精选一二三| 天堂一区在线观看| 九九综合在线| 久久久久久久久久婷婷| 国产免费一区二区三区免费视频| 久久综合久久久久88| 日本福利视频一区| 欧美一级大片在线视频| 日韩中文字幕在线看| 波多野结衣在线观看视频| 337p粉嫩大胆噜噜噜噜噜91av | 日韩欧美一区二区视频| 国产精品理论在线| 日韩在线一二三区| 欧美另类高清视频在线| 天堂av在线网| 日韩av在线免费播放| 日本中文字幕免费观看| 国产成人综合精品三级| 最新av网址在线观看| 成人噜噜噜噜| 欧美成人黑人xx视频免费观看| 97成人免费视频| 亚洲欧美自拍偷拍| 九九热视频免费| 欧美福利视频| 97人人澡人人爽| 久草在线视频资源| 亚洲第一精品福利| 日韩乱码人妻无码中文字幕| bt7086福利一区国产| 久久久久久久中文| 杨幂一区二区三区免费看视频| 欧美伊久线香蕉线新在线| 青青草免费在线| 色久综合一二码| 国产精品情侣呻吟对白视频| 青青草国产成人av片免费| 亚洲欧美日韩另类精品一区二区三区| 亚洲一区二区三区四区| 中文字幕日韩有码| 国产精品毛片一区二区在线看舒淇 | 国产在线高清视频| 日韩一区二区精品| 国产精品成人aaaa在线| 99精品国产热久久91蜜凸| 99精品人妻少妇一区二区| 伊人春色之综合网| 国产成人亚洲综合色影视| 国产福利精品av综合导导航| 国产特黄在线| 69av一区二区三区| 国产乱码久久久久久| 成+人+亚洲+综合天堂| 欧美日韩在线中文| 色88久久久久高潮综合影院| 97超碰人人模人人爽人人看| 狠狠躁少妇一区二区三区| 国产亚洲欧美另类中文| 国产乱人乱偷精品视频| 亚洲3atv精品一区二区三区| 亚洲精品国产精品国自产网站| 精品一区二区在线观看| 免费观看美女裸体网站| 成人免费电影网址| 国产高清一区二区三区| 久久夜夜操妹子| 欧美美女操人视频| 黄色毛片在线看| 91精品在线观看入口| 精品噜噜噜噜久久久久久久久试看| 成人性生交大免费看| 极品少妇一区二区| 丰满爆乳一区二区三区| 成人在线免费观看网站| 福利精品视频| a成人v在线| 成人黄色在线视频| 日本黄xxxxxxxxx100| 天天躁日日躁成人字幕aⅴ| 91久久久久久久| 亚洲私拍视频| 欧美大秀在线观看| freemovies性欧美| 国产精品sss在线观看av| 亚洲新中文字幕| 亚洲黄色在线观看视频| 欧美色大人视频| 欧美一级特黄视频| 亚洲最新在线观看| 人人艹在线视频| 久久欧美一区二区| 人妻 日韩 欧美 综合 制服| 久久电影国产免费久久电影| 久久久久久久久久久久久国产精品| 亚洲免费二区| 亚洲精品国产系列| 欧美日本成人| 国产主播一区二区三区四区| 国内不卡的一区二区三区中文字幕 | 精品视频资源站| 欧美国产成人精品一区二区三区| 一区二区三区在线视频观看58| 国产精品20p| 91在线观看下载| 亚洲天堂2024| 国产99久久久国产精品潘金 | 26uuu精品一区二区| 亚洲一二三四五| 国产精品91xxx| 黄色一级片免费播放| 极品美女销魂一区二区三区免费 | 亚洲精品成a人ⅴ香蕉片| 国产精品88a∨| 中国 免费 av| y111111国产精品久久久| 91热精品视频| 高清久久一区| 亚洲自拍高清视频网站| 一区在线不卡| 成人疯狂猛交xxx| 欧美在线一级| 96sao精品视频在线观看| 日韩一级特黄| 成人看片人aa| 久久一级大片| 1卡2卡3卡精品视频| 欧美日本三级| 国产三区精品| 日韩精品欧美大片| 欧美激情视频一区二区三区| 精品中文一区| 日韩高清在线播放| 成人久久综合| 强伦女教师2:伦理在线观看| 亚洲精品tv久久久久久久久久| 日韩视频在线免费播放| 欧美高清不卡| 久久99中文字幕| 久久精品日产第一区二区| 欧美日韩在线免费播放| 久久精品国产亚洲a| 午夜av中文字幕| 国产91在线看| 国产男男chinese网站| 欧美国产精品中文字幕| 久久久久久视频| 亚洲国产欧美在线| 69国产精品视频免费观看| 欧美最新大片在线看| 国产手机精品视频| 亚洲第一精品夜夜躁人人躁| 你懂的免费在线观看视频网站| 国产亚洲精品91在线| caoporm免费视频在线| 97香蕉久久超级碰碰高清版| 亚洲精品一级二级| 亚洲一区二区免费在线| 巨人精品**| 一本一道久久a久久综合精品| 欧美成人69| 精品免费国产一区二区| 国产精选一区二区三区| 国产精品九九九九九| ㊣最新国产の精品bt伙计久久| 久久黄色免费网站| 在线视频一区二区三区| 性生活视频软件| 国产亚洲欧美另类中文| 成人三级小说| 国产精品永久免费视频| 红杏一区二区三区| 亚洲欧洲精品一区| 国产精品最新自拍| 伦伦影院午夜理论片| 宅男在线观看免费高清网站| 亚洲精品一区二区久| mm1313亚洲国产精品美女| 欧美在线性爱视频| 一区二区三区四区视频免费观看| 欧美重口乱码一区二区| 欧美日韩国产免费观看| 天天色综合天天色| 99re热视频这里只精品| 外国一级黄色片| 在线精品视频一区二区| 日本黄色不卡视频| 久久伊人精品一区二区三区| 伊人久久高清| 精品乱色一区二区中文字幕| 亚洲精品极品少妇16p| 亚洲五月天综合| 91性感美女视频| 黄页网站免费观看| 777久久久精品| 国产色a在线| 欧美在线视频a| 国产精品chinese在线观看| 亚洲av首页在线| 精品一区二区三区免费毛片爱| 一区二区三区四区免费| 天天av天天翘天天综合网色鬼国产| 国产裸体永久免费无遮挡| 正在播放亚洲1区| 美女日韩欧美| 久久久久久久久久久久久9999| 激情自拍一区| 一区二区三区四区影院| 亚洲一区二区在线视频| 国产孕妇孕交大片孕| 日韩在线www| 青青久久精品| 在线丝袜欧美日韩制服| 美国三级日本三级久久99| 欧美激情 一区| 欧美在线三级电影| 第一页在线观看| 国产精品久久久久久久久粉嫩av | 国产伊人久久| 亚洲v国产v在线观看| 日本v片在线高清不卡在线观看| 永久免费成人代码| 在线免费观看一区| 成年人视频网站在线| 国产精品久久久久久久久久久久| 国产一区二区三区四区二区 | 免费中文字幕在线观看| 欧美成人一区二区三区| 国产探花视频在线观看| 国产欧美日本在线| 国产日韩精品视频一区二区三区 | 精品国产精品| 欧美性猛交xxx乱久交| 国产精品日韩成人| 国产探花精品一区二区| 欧美激情第99页| 巨人精品**| 97自拍视频| 精品亚洲成a人片在线观看| 久久久免费电影| 欧洲亚洲成人| 韩国日本美国免费毛片| 国产精品国产三级国产三级人妇| 国产精品毛片一区二区在线看舒淇| 欧美成人精品h版在线观看| 亚洲专区**| 女人天堂av手机在线| 国产日韩欧美亚洲| 国产精品视频第一页| 国内精品久久久久久久久| 亚洲小说图片视频| 中文字幕精品一区二区三区在线| 亚洲免费电影在线| 婷婷在线观看视频| 国产精品第100页| 午夜日韩av| 欧美成人午夜精品免费| 欧美日韩精品一区二区在线播放| av在线播放国产| 欧美伦理一区二区| 国产中文字幕精品| 久久久久久久久影院| 在线a欧美视频| 136导航精品福利| www.xxx亚洲| 亚洲国产色一区| 国产视频二区在线观看| 99re在线观看| 三级在线观看一区二区| 欧美日韩偷拍视频| 亚洲人成在线观看| 亚洲综合网站| 能看的毛片网站| 亚洲综合一二三区| 成人p站proumb入口| 国产91精品一区二区绿帽| 日本成人超碰在线观看| 久久综合色综合| 日韩在线国产精品|