精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

992tv成人免费视频| 精品国产91乱高清在线观看| 国产欧美在线视频| 国产少妇在线观看| 久久aimee| 精品美女久久久久久免费| 日韩欧美精品一区二区| www.久久伊人| 肉色丝袜一区二区| 蜜月aⅴ免费一区二区三区 | 9色视频在线观看| 偷拍精品一区二区三区| 久久国产夜色精品鲁鲁99| 久久乐国产精品| 成人无码精品1区2区3区免费看| 亚洲视频三区| 欧美日韩一区在线| 欧美精品色婷婷五月综合| av网站大全在线| 久久久久久久一区| 国产精品免费看一区二区三区| 天天干天天色综合| 激情欧美日韩| 免费99精品国产自在在线| 国产高潮呻吟久久| 狼人天天伊人久久| 欧美刺激脚交jootjob| 亚洲国产日韩欧美在线观看| 色资源二区在线视频| 亚洲精品你懂的| 欧美一区二区高清在线观看| 蜜臀av中文字幕| 国产呦精品一区二区三区网站| 国产成人欧美在线观看| 97人人澡人人爽人人模亚洲| 欧美成人午夜| 久久精品影视伊人网| 成人在线观看免费高清| 夜夜春成人影院| 亚洲国产精品999| 日本精品一二三区| 欧美精品影院| 91精品久久久久久久久99蜜臂| 91精品无人成人www| 澳门av一区二区三区| 精品久久久久久久久久| 婷婷五月综合缴情在线视频| 欧美韩日亚洲| 亚洲一级电影视频| www.在线观看av| 污影院在线观看| 一区二区三区国产精品| 大片在线观看网站免费收看| 国产盗摄在线观看| 亚洲人成影院在线观看| 欧美一级黄色录像片| а√中文在线8| 亚洲免费观看视频| 最新中文字幕久久| 中文字幕中文字幕在线中高清免费版 | 加勒比一区二区三区在线| 99久久综合狠狠综合久久| 国产一区二区精品免费| 亚洲欧洲精品视频| 久久久99久久精品欧美| 五月婷婷一区| 国内精品久久久久国产| 亚洲综合激情网| 日日摸日日碰夜夜爽无码| 三妻四妾完整版在线观看电视剧| 色香色香欲天天天影视综合网| 熟女人妇 成熟妇女系列视频| 国内激情视频在线观看| 一本到一区二区三区| 手机看片福利日韩| 动漫一区二区三区| 亚洲成人av片在线观看| 亚洲国产天堂av| 91久久夜色精品国产按摩| 久久综合伊人77777| 国产无码精品在线观看| 香蕉久久夜色精品国产| 国产日韩换脸av一区在线观看| 精品久久久久久亚洲综合网站 | 国产精品初高中精品久久| 日日夜夜精品免费| 中文在线一区二区| 欧美性猛交内射兽交老熟妇| 黄色在线免费观看网站| 欧美色视频在线| 亚洲图片欧美另类| 国产永久精品大片wwwapp| 大胆欧美人体视频| 日韩中文字幕在线观看视频| 久久国产精品99精品国产 | 亚洲一区二区三区视频在线播放| 又粗又黑又大的吊av| 日韩欧美2区| 欧美mv日韩mv| 久久精品三级视频| 亚洲视频精品| 国产日韩专区在线| 天天干天天色天天| 日韩一区在线免费观看| 日本免费黄视频| 福利一区三区| 亚洲石原莉奈一区二区在线观看| 日本黄色片免费观看| 香蕉久久久久久久av网站| 999视频在线观看| 成人免费一区二区三区视频网站| 亚洲国产精品自拍| 午夜影院免费观看视频| 国际精品欧美精品| 97视频在线观看播放| 国产成人精品毛片| 国产女同性恋一区二区| www.av毛片| 国产一区二区三区免费在线| 亚洲最新中文字幕| 可以免费在线观看的av| 国产999精品久久久久久| 亚洲欧洲一区二区在线观看| 综合毛片免费视频| 欧美精品一区二区在线播放 | 亚洲va韩国va欧美va精品| 色播五月激情五月| 精品一区二区三区的国产在线观看| 久久久人成影片一区二区三区观看| 国产乱人乱偷精品视频a人人澡| 国产日韩欧美电影| av免费在线播放网站| 国产精品久久久久av蜜臀| 久久视频在线免费观看| 在线视频欧美亚洲| 欧美激情综合网| 欧美 日韩精品| 日韩美女毛片| 97国产精品视频| 人妻偷人精品一区二区三区| 亚洲最大成人网4388xx| 熟妇无码乱子成人精品| 夜间精品视频| 亚洲综合在线播放| а√天堂在线官网| 这里只有精品免费| 一级性生活免费视频| 久久精品国产亚洲a| 亚洲电影网站| 婷婷久久免费视频| 久久九九热免费视频| 国产精品热久久| 亚洲精品国产视频| 日本黄色大片在线观看| 黄色成人在线网站| 精品不卡在线| 日本不良网站在线观看| 日韩国产在线播放| 亚洲av无码精品一区二区| 国产午夜一区二区三区| 一道本视频在线观看| 亚洲h色精品| 99视频免费观看| 99爱在线视频| 精品亚洲夜色av98在线观看| 在线免费观看av网址| 国产女人18毛片水真多成人如厕 | 永久免费精品视频| 午夜精品蜜臀一区二区三区免费| 亚洲欧洲精品视频| 欧美天天综合网| 亚洲欧美小视频| 不卡一卡二卡三乱码免费网站| 国产h视频在线播放| 久久最新网址| 成人淫片在线看| 精精国产xxxx视频在线播放| 亚洲人成电影网站色| 国产精品无码久久久久成人app| 一区二区三区蜜桃| 成人乱码一区二区三区av| 久久av中文字幕片| 国产一区二区三区小说| 女人丝袜激情亚洲| 成人性生交大片免费观看嘿嘿视频| 在线三级中文| 亚洲石原莉奈一区二区在线观看| 国产精品一区二区三区在线免费观看 | 粉嫩av一区二区三区粉嫩| 午夜精品久久久内射近拍高清 | 澳门成人av| 人人澡人人澡人人看欧美| 久久国产精品一区| 日韩成人免费视频| 97人妻精品一区二区三区视频| 亚洲午夜激情av| 青青草自拍偷拍| av日韩在线网站| 日本黄色福利视频| 99亚洲视频| 精品一区二区三区毛片| 激情综合网站| 国产精品免费一区二区三区在线观看| 亚洲精品一级二级| 欧美日韩成人黄色| av资源种子在线观看| 亚洲高清久久网| 国产乱码久久久| 日本精品一级二级| 国产午夜福利精品| 综合电影一区二区三区| www.黄色在线| 91一区一区三区| 欧美视频国产视频| 日韩av高清在线观看| 蜜臀av无码一区二区三区| 亚洲欧美在线专区| 亚洲国产婷婷香蕉久久久久久99| 日韩高清影视在线观看| yellow视频在线观看一区二区| 欧美与亚洲与日本直播| 日本久久久久久久久久久| 2018av在线| 欧美俄罗斯乱妇| 男人和女人做事情在线视频网站免费观看| 精品五月天久久| 网站黄在线观看| 欧美变态tickle挠乳网站| 97精品人妻一区二区三区香蕉 | 久久久久久午夜| gogo在线观看| 欧美大片va欧美在线播放| 免费看美女视频在线网站| 伊人久久男人天堂| 东热在线免费视频| 亚洲视频综合网| 黄色av免费在线看| 国产亚洲在线播放| 国产香蕉在线| 中文字幕亚洲专区| 成人性爱视频在线观看| 亚洲天堂一区二区三区| 国产高清在线看| 神马久久桃色视频| 国产丝袜在线| 欧美情侣性视频| 国产理论电影在线| 国内精品久久久久久久久| www中文字幕在线观看| 欧美极品xxxx| 色资源二区在线视频| 日本免费在线精品| 欧美与亚洲与日本直播| 成人黄色片在线| 一区二区三区欧洲区| 岛国一区二区三区高清视频| 国产在线播放精品| 免费看成人av| 欧美日韩精品在线一区| 一区二区精品在线观看| 影音先锋日韩精品| 福利视频免费在线观看| 极品av少妇一区二区| 国产最新免费视频| 日本不卡123| 99九九精品视频| 高清视频一区二区| 艳妇乳肉亭妇荡乳av| 久久久久久影视| 亚洲天堂精品一区| 一区二区免费视频| av一级在线观看| 欧美一区二区精美| 色婷婷中文字幕| 一本一道久久a久久精品逆3p| avav免费在线观看| 欧美激情在线有限公司| 成人国产二区| 97久久天天综合色天天综合色hd| 久久成人福利| 亚洲韩国在线| 精品动漫3d一区二区三区免费| 日韩免费毛片视频| 国产麻豆视频精品| 久久亚洲AV成人无码国产野外 | 亚洲欧美日韩精品久久亚洲区 | 亚洲综合色噜噜狠狠| 69国产精品视频免费观看| 欧美群妇大交群中文字幕| 国产91免费看| 中文字幕一区日韩电影| h片在线观看视频免费| 国产精品视频久久久久| 一区二区三区四区视频免费观看 | 亚洲福利免费| 欧美三级午夜理伦三级富婆| 成人av网站免费观看| 中国特黄一级片| 午夜久久久久久久久久一区二区| 丰满熟女人妻一区二区三| 精品国一区二区三区| 大乳在线免费观看| 国产69精品99久久久久久宅男| 成人黄色图片网站| 狠狠久久综合婷婷不卡| 天天综合国产| 国产xxxxx视频| 成人国产在线观看| 亚洲色偷偷综合亚洲av伊人| 欧美性感美女h网站在线观看免费| 99re只有精品| 在线亚洲男人天堂| 高清不卡亚洲| 国产一级特黄a大片99| 欧美成人综合| 手机av在线免费| 久久久久国产精品人| 日韩成年人视频| 精品国产sm最大网站| 麻豆av免费在线观看| 国产精品国产自产拍高清av水多 | 在线观看污视频| 美腿丝袜一区二区三区| 三上悠亚影音先锋| 婷婷中文字幕一区三区| 成人午夜视频一区二区播放| 久久国产加勒比精品无码| 91精品亚洲一区在线观看| 日韩免费电影一区二区| 久久午夜精品一区二区| 成年人在线观看av| 精品福利在线看| 天堂资源中文在线| 97在线免费观看| 卡一精品卡二卡三网站乱码| xxxx18hd亚洲hd捆绑| 不卡电影一区二区三区| 国产精品成人av久久| 精品1区2区在线观看| 国产探花在线观看| 国产成人精品免费视频大全最热 | 欧美在线观看日本一区| 日本欧美高清| 日韩一级在线免费观看| 久久久久久久av麻豆果冻| 波多野结衣二区三区| 在线观看久久av| 欧美黄页免费| 国产美女视频免费| 国产传媒日韩欧美成人| 久久97人妻无码一区二区三区| 日韩欧美色电影| 美女航空一级毛片在线播放| 国产久一道中文一区| 西西裸体人体做爰大胆久久久| aaaaa级少妇高潮大片免费看| 色视频一区二区| a视频网址在线观看| 91老司机精品视频| 欧美日韩三级| 黑丝av在线播放| 在线亚洲一区二区| 免费在线看黄| 大波视频国产精品久久| 老鸭窝毛片一区二区三区| 毛片久久久久久| 欧美mv和日韩mv国产网站| 在线观看网站免费入口在线观看国内| 欧美精品一区三区在线观看| 麻豆国产精品官网| 妺妺窝人体色www在线下载| 日韩精品中文字幕在线播放| 电影亚洲一区| 成人午夜免费在线视频| 91网站黄www| 一卡二卡在线观看| 久久久久久久久久久国产| 国产成人久久| 日韩成人av免费| 黑人巨大精品欧美一区二区免费| 高清毛片在线看| 国产成人一区二区三区免费看| 亚洲在线网站| 国产一二三四区| 亚洲欧洲午夜一线一品| 国产精品一区二区精品视频观看| 国产九九九九九| 国产精品国产三级国产| 国精产品乱码一区一区三区四区| 日韩免费精品视频| 影音先锋成人在线电影| 色哟哟精品观看| 欧美草草影院在线视频| 免费一级欧美在线观看视频| 国产手机免费视频| 国产精品福利影院| 头脑特工队2在线播放| 91精品免费视频| 久久综合婷婷| 精品深夜av无码一区二区老年|