正如将可复用功能封装为自定义组件以供他人使用一样,在uni-app
开发框架中提供了另一种形式的自定义插件,并可将该插件提交至uni-app插件市场。
制作插件前,首先要清楚实现插件的基本思路:
- 插件需要实现什么效果;
- 建立插件模板,先把架子搭起来,完成插件基本样式、大致效果;
- 插件基本逻辑是怎样的;
- 准备好插件的数据输入,即分析好逻辑,定义好插件里面的数据、类型;
- 准备好插件的数据输出,即根据插件逻辑,做好要暴露出来的方法;
- 注册、调用。
以集成听云APM离线插件为例,首先将离线插件放入项目目录nativeplugins
中,
然后,在项目manifest.json
可视化视图APP原生插件配置中导入本地插件。
导入成功后,可在源码视图中app-plus->nativePlugins
看到配置的插件信息。
"nativePlugins" : {"tingyunAppUniPlugin" : {"__plugin_info__" : {"name" : "tingyunAppModule","description" : "tingyunAppuni插件","platforms" : "iOS","url" : "","android_package_name" : "","ios_bundle_id" : "","isCloud" : false,"bought" : -1,"pid" : "","parameters" : {}}}
}
打开插件目录下的package.json
文件,可查看插件详细配置信息。
{"name": "tingyunAppModule","id": "tingyunAppUniPlugin","version": "1.0.0","description": "tingyunAppuni插件","_dp_type": "nativeplugin","_dp_nativeplugin": {"ios": {"plugins": [{"type": "module","name": "tingyunAppUniPlugin-tingyunAppModule","class": "tingyunAppModule"}],"frameworks": ["libz.tbd","WebKit.framework","Security.framework","CoreTelephony.framework","SystemConfiguration.framework","JavaScriptCore.framework","CoreGraphics.framework","QuartzCore.framework","CFNetwork.framework","libresolv.tbd","libc++.tbd"],"integrateType": "framework","deploymentTarget": "9.0"}}
}
并在引用处通过以下方式引入插件。
var tingyunApp = uni.requireNativePlugin('tingyunAppUniPlugin-tingyunAppModule')
注意⚠️:uni.requireNativePlugin()
api 中的参数为插件package.json
文件中_dp_nativeplugin.ios.plugins.name
属性值,否则会发生插件引用失败的问题。