首页 APP开发 正文

uniapp开发小程序插件(uniapp插件开发)

APP开发 1829
本篇文章给大家谈谈uniapp开发小程序插件,以及uniapp插件开发对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、uniapp开发微信小程序富文本编辑器(样式仿腾讯文档)

本篇文章给大家谈谈uniapp开发小程序插件,以及uniapp插件开发对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

uniapp开发微信小程序富文本编辑器(样式仿腾讯文档)

照着腾讯文档小程序开发了微信小程序富文本编辑器组件,这几天做个整理,如有这个需求可以前往腾讯文档小程序操作看看实际效果。毕竟参照的是微信自家小程序,无法做到百分百效果,只能按现有开放api尽可能实现。

项目地址:

uniapp插件市场:

editor富文本编辑器组件官方文档:

否则会受到小程序css影响。小程序本身editor标签有css样式:

editor {

display: block;

position: relative;

box-sizing: border-box;

-webkit-user-select: text;

user-select: text;

outline: 0;

overflow: hidden;

width: 100%;

height: 200px;

min-height: 200px;

}

that.updatePosition(keyboardHeight)

that.editorCtx.scrollIntoView()

在插入目标文字时,将值设为\n',可以实现换行

this.editorCtx.insertText({ text: '\n' });

参考:请问editor组件控制拉起键盘操作支持吗?

小程序技术专员-sanford 2019-09-20

不支持的。iOS无法通过接口拉起键盘,必须用户点击;安卓则可以。所以,终究是不一致,不行。。

该组件主要为微信editor组件的api调用集成封装,因此受到的限制同文档描述一致,即编辑器内支持部分 HTML 标签和内联样式,不支持class和id,支持的标签详见: 。

不满足的标签会被忽略,div会被转行为p储存。

这也是为什么在做富文本解析时,仅仅用rich-text组件无法有效还原html内容,在解析内容的时候就需要将内容中的HTML标签转换成微信小程序所支持的标签。因此最好方式是引入市场封装好的富文本解析插件去解析html。

所以,开发者需要自行权衡在做富文本编辑开发时,是否使用微信自带的editor组件,或者参考腾讯文档小程序采用webview内嵌网页等方式去渲染。

小程序富文本编辑器editor初体验:( )

如果是微信原生开发,将demo组件中的相关dom元素标签和api换成微信原生即可。

微信小程序(或uniapp)引入腾讯视频插件播放视频

注意:个人开发者无法使用

登录微信公众平台,在你的小程序后台的设置-第三方服务—插件管理,搜索插件并点击添加。

微信小程序:

小程序的app.json里声明使用插件

在使用插件的页面的js文件里

使用插件的自定义组件,在json中定义需要引入的自定义组件。使用plugin://协议

页面中使用

暂停方法:

uniapp:

manifest.json添加:

在page.json中的对应页面的 style中添加

页面实现:

n0041aa087e即为vid。

开源了一个 webpack 插件,希望对大家有所帮助

最近,陆陆续续搞 了一个 UniUsingComponentsWebpackPlugin 插件(下面介绍),这是自己第三个开源项目,希望大家一起来维护,一起 star 呀,其它两个:

用 uniapp开发小程序的小伙伴应该知道,我们在 uniapp 中要使用第三方 UI 库( vant-weapp , iView-weapp )的时候 ,想要在全局中使用,需要在 src/pages.json 中的 usingComponents 添加对应的组件声明,如:

但在开发过程中,我们不太清楚需要哪些组件,所以我们可能会全部声明一遍(PS:这在做公共库的时候更常见),所以我们得一个个的写,做为程序员,我们绝不允许使用这种笨方法。 这是第一个痛点 。

使用第三方组件,除了在 src/pages.json 还需要在对应的生产目录下建立 wxcomponents ,并将第三方的库拷贝至该文件下,这个是 uniapp 自定义的,详细就见:。

这是第二个痛点 。

第二痛点,我们将整个UI库拷贝至 wxcomponents ,但最终发布的时候,我们不太可能全都用到了里面的全局组件,所以就将不必要的组件也发布上去,增加代码的体积。

有的小伙伴就会想到,那你将第三方的库拷贝至 wxcomponents 时候,可以只拷使用到的就行啦。是这理没错,但组件里面可能还会使用到其它组件,我们还得一个个去看,然后一个个引入,这又回到了 第一个痛点了 。

有了这三个痛点,必须得有个插件来做这些傻事,处理这三个痛点。于是就有 UniUsingComponentsWebpackPlugin 插件,这个webpack 插件主要解决下面几个问题:

webpack 的插件体系是一种基于 Tapable 实现的强耦合架构,它在特定时机触发钩子时会附带上足够的上下文信息,插件定义的钩子回调中,能也只能与这些上下文背后的数据结构、接口交互产生 side effect,进而影响到编译状态和后续流程。

从形态上看,插件通常是一个带有 apply 函数的类:

Webpack 会在启动后按照注册的顺序逐次调用插件对象的 apply 函数,同时传入编译器对象 compiler ,插件开发者可以以此为起点触达到 webpack 内部定义的任意钩子,例如:

注意观察核心语句 compiler.hooks.thisCompilation.tap ,其中 thisCompilation 为 tapable 仓库提供的钩子对象; tap 为订阅函数,用于注册回调。

Webpack 的插件体系基于 tapable 提供的各类钩子展开,所以有必要先熟悉一下 tapable 提供的钩子类型及各自的特点。

到这里,就不做继续介绍了,关于插件的更多 详情可以去官网了解。

这里推荐 Tecvan 大佬写的 《Webpack 插件架构深度讲解》

UniUsingComponentsWebpackPlugin 插件主要用到了三个 compiler 钩子。

第一个钩子是 environment :

这个钩子主要用来自动引入其下的原生组件,这样就无需手动配置。 解决第一个痛点 。

第二个钩子 thisCompilation ,这个钩子可以获得 compilation ,能对最终打包的产物进行操作:

所以这个勾子用来将 node_modules 下的第三库拷贝到我们生产 dist 目录里面的 wxcomponents , 解决第二个痛点 。

ps:这里也可直接用现有的 copy-webpack-plugin 插件来实现。

第三个钩子 done ,表示 compilation 执行完成:

执行完成后,表示我们已经生成 dist 目录了,可以读取文件内容,分析,获取哪些组件被使用了,然后删除没有使用到组件对应的文件。这样就可以解决我们 第三个痛点了 。

PS:这里我判断只有在生产环境下才会 剔除,开发环境没有,也没太必要。

安装

然后将插件添加到 WebPack Config 中。例如:

NameType Description patterns{Array}为插件指定相关

moduleprefix 模块名组件前缀

module 是指 package.json 里面的 name ,如使用是 Vant 对应的 module 为 @vant/weapp ,如果使用是 iview,刚对应的 module 为 iview-weapp ,具体可看它们各自的 package.json 。

prefix 是指组件的前缀,如 Vant 使用是 van 开头的前缀,iview 使用是 i 开头的前缀,具体可看它们各自的官方文档。

PS: 这里得吐曹一下 vant,叫别人使用 van 的前缀,然后自己组件里面声明子组件时,却没有使用 van 前缀,如 picker 组件,它里面的 JSON 文件是这么写的:

picker-column 和 loading 都没有带 van 前缀,因为这个问题,在做 自动剔除 功能中,我是根据 前缀来判断使用哪些组件的,由于这里的 loading , picker-column 没有加前缀,所以就被会删除,导致最终的 picker 用不了。为了解决这个问题,增加了不少工作量。

希望 Vant 官方后面的版本能优化一下。

本文通用自定义 Webpack 插件来实现日常一些技术优化需求。主要为大家介绍了 Webpack 插件的基本组成和简单架构,通过三个痛点,引出了 uni-using-components-webpack-plugin 插件,并介绍了使用方式,实现思路。

最后,关于 Webpack 插件开发,还有更多知识可以学习,建议多看看官方文档《Writing a Plugin》进行学习。

uniapp原生插件开发问题汇总

uniapp原生插件开发与使用

问题1 : 导入UniPlugin-Hello-AS工程项目后,运行时虚拟器报device support x86 but apk only supports armeabi-v7a

问题2 :打包uni-app插件时,选择Gradle---插件module---Tasks---build---assembleRelease(双击运行生成module的aar文件)

双击运行assembleRelease时失败:

修改插件module的gradle:除了对sdk的arr包引入不用改为implementation,其他地方的compileOnly都需改为implementation。

成功:

成功获取插件module的aar文件:

备注:官网原生插件开发文档中添加依赖库是所有都用compileOnly,也不知道为什么到导致运行assembleRelease时报错,将compileOnly再改为implementation即可。

uni-app 项目小程序端支持 vue3 介绍

随着 vue3 的发布, uni-app 也逐步支持 vue3 。

目前小程序平台已支持,h5、App 平台暂不支持。

除支持 vue3 语法特性外, uni-app 特有的生命周期钩子支持 Composition API ,如 onLaunch , onShow , onLoad …

下面介绍创建支持 vue3 的 uni-app 项目的流程,以及使用中的一些注意事项。vue3 相关问题请关注vue官方文档 vue3 中文文档。

目前仅支持 cli 方式创建支持 vue3 默认模板项目。

如果你之前没有使用过 vue-cli 方式创建过项目,需要先安装 vue-cli ,若已安装则跳过步骤 1。

步骤 1: 全局安装vue-cli

步骤 2: 用如下的命令创建vue3工程

步骤 3: 创建好工程后,进入对应目录

步骤 4: 将项目跑到微信平台

需要将编译后的文件 dist/dev/mp-weixin 导入微信开发者工具运行,也可将项目拖入 HbuildX 中运行,方便运行到各个平台。

欢迎开发者反馈使用该版本遇到的问题,我们将积极收集意见。

后续:

DCloud之所以不支持vue3的h5和app版,主要是因为vue3的组件中很多语法的写法发生变化,这导致uni-app的h5版基础组件库和app版基础组件库的写法与vue3不兼容。

当然除了基础组件,插件市场的所有插件(包括uni ui),都不支持vue3。即便是uni-app已经推出的vue3的小程序版,也不支持插件市场的插件。

考虑到生态兼容的重要性,vue官方(尤雨溪)计划2021年4月中下旬推出新版,对vue2的语法做兼容,届时uni-app的h5版和app版将同时推出,并且插件市场的众多插件也将自动适配vue3版的uni-app。

uniapp原生插件开发(iOS)

打开 Xcode,创建一个新的Framework工程,然后点击 Next

输入插件工程名称(建议使用一个性化的前缀,避免与其他人的插件包名冲突),其他项不需要修改保持工程默认填充的即可,然后点击Next

然后选中工程名,在TARGETS-Build Settings中,将 Mach-O Type 设置为 Static Library 如下图所示

打开 iOSSDK/HBuilder-uniPluginDemo工程目录,双击目录中的HBuilder-uniPlugin.xcodeproj 文件运行插件开发主工程

在 Xcode 项目左侧目录选中主工程名,然后点击右键选择Add Files to “HBuilder-uniPlugin” ...

然后选择您刚刚创建的插件工程路径中,选中插件工程文件,勾选 Create folder references 和 Add to targets 两项,然后点击Add

然后在 Xcode 项目左侧目录选中主工程名,在TARGETS-Build Phases-Dependencies中点击+

在弹窗中选中插件工程,如图所示,然后点击Add,将插件工程添加到Dependencies中

此时可以看到 Dependencies 和 Link Binary With Libraries 都添加了插件工程,如下图所示

扩展原生功能有两种方式:

module:不需要参与页面布局,只需要通过 API 调用原生功能,比如:获取当前定位信息、数据请求等功能,通过扩展module的方式来实现;

component:需要参与页面布局,比如:map、image等需要显示UI的功能,通过扩展component即组件的方法来实现;

新建TestModule类,继承 DCUniModule,引入 DCUniModule.h 头文件。

然后在 TestModule.m 文件中添加实现方法

选中工程中的HBuilder-uniPlugin-Info.plist文件右键-Open As-Source Code找到dcloud_uniplugins节点,copy下面的内容添加到dcloud_uniplugins节点下,按插件的实际信息填写对应的项

在 uni-app 项目中调用 module 方法

生成 uni-app 本地打包资源

首先需要生成本地打包资源,在 HBuilderX 中选您的 uni-app 工程,右键-发现-原生App-本地打→生成本地打包App资源

项目编译完成后会在 HBuilderX 控制台输出资源存路径,点击路径会自动打开资源所在文件夹

接下来,将应用资源导入到插件开发主工程的 HBuilder-Hello/Pandora/apps/ 中,如下图所示,直接拖进去即可

如下图所示,将编译工程选择为插件项目(DCTestUniPlugin),运行设备选择 Generic iOS Device

新建一个 package.json 文件,根据插件实际情况填写插件配置信息

然后以插件id为名新建一个文件夹,将编辑好的 package.json 放进去,然后在文件夹中在新建一个 ios (小写)文件夹,将刚刚生成的依赖库(DCTestUniPlugin.framework)copy 到 ios 根目录,这样我们的插件包就构建完成了,如下图所示

HBuilderX 的 uni-app 项目创建中“nativeplugins”目录(如不存在则创建)将插件配置到uni-app项目下的“nativeplugins”目录

uni-app原生插件本地配置

将原生插件配置到uni-app项目的“nativeplugins”下,还需要在manifest.json文件的“App原生插件配置”项下点击“选择本地插件”,在列表中选择需要打包生效的插件:

关于uniapp开发小程序插件和uniapp插件开发的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码