插件、组件、控件,你分得清吗?

news2024/11/18 20:44:36

最近和小伙伴交流,时常发生插件、组件、控件等概念混淆的情况,因此导致经常会错意。感觉还是很有必要带大家整理清楚的,今天就来跟大家来聊一聊插件、组件、控件的区别。

什么是插件

先按照官方的一些解释来看看插件的概念描述?

微信小程序官方描述:

插件,是可被添加到小程序内直接使用的功能组件。开发者可以像开发小程序一样开发一个插件,供其他小程序使用。同时,小程序开发者可直接在小程序内使用插件,无需重复开发,为用户提供更丰富的服务。

支付宝小程序官方描述:

插件是一种独立封装的软件模块,用来承载企业的能力或者服务,便于宿主小程序进行快捷集成。和普通组件不同的是,插件拥有独立的应用和独立的上下文,即数据、业务逻辑和服务端连接。当小程序应用需要使用插件的服务时,加载和运行插件,以使得插件访问自身的数据与服务端,完成对应的服务;而在小程序不需要使用插件的服务时,只需要运行小程序应用本身,访问小程序应用自身的数据服务端。插件和宿主小程序上下文是互相隔离的,即小程序应用不能直接访问插件的数据,也不能获得插件的权限,反之,插件也不能直接访问小程序的数据,也不能获得小程序的权限。

 

插件vs组件vs控件

为了进一步直观的了解插件、组件、控件之间具体的差异,我用一张表罗列了彼此之间的对比:

名称

英文单词

概念

显著的特点

插件

plugin & addin

算是组件的一种,在原有的应用程序中,已经给它们预留了接口。接口,简言之就是一种规范。

可以被开发者添加到小程序内直接使用的,能为用户提供具体服务的功能组件。

即插即用,支持动态的插入

在应用程序中已经预留接口的组件就是插件

可直接提供服务

可以独立进行发版,开发和升级更高效

运行时框架提供上下文隔离机制,插件内部的数据安全性更有保障

组件

component

提起组件我们不应该把他和具体的技术,什么dll文件,ocx控件,activex等等联系起来,因为组件仅仅是一个概念,如果非要解释的话,那就是凡是在软件开发中用到了软件的复用,被复用的部分都可以称为组件,组件是给开发者提供的轮子,不能直接提供服务。

参考机械制造中的“零件”,它好比是组装在一起的满足一个功能单元的一组元件。

仅是一个宽泛的概念

是给开发者提供的轮子,不能直接提供服务

控件

control & widget

也算是组件的一种,顾名思义,用来给用户做控制的。做用户图形界面设计时,有一些“复选框”、“按钮”之类的东西,这些都是控件。所以可以把它理解为用来做可视化的一类组件。

是“可视化”的,例如表单中的按钮、文本框等

小程序插件的价值

小程序插件,顾名思义是用于小程序运行调用的插件,小程序插件的广泛推广使用可以实现“开发资源共享”、“可便捷强化能力”、“商业化变现”等积极作用

1.开发共享,避免重复开发

在小程序内使用插件,可免去小程序开发者重复开发,一定程度上减少了开发工作量。例如:在小程序可以使用地图插件,开发者无需在小程序内独立开发地图内导航、出行指引、周边服务推荐等能力,直接使用地图插件即可为用户提供导航服务,免去很大量的开发工作。

2.强化能力,打造卓越产品

我们自己的技术、精力和成本都是非常有限的,开发出来的小程序的能力可能比较单一,如果想要应用到更多更复杂的功能就能够通过快速引入小程序插件的方式增强自己的产品能力。例如:想要在小程序实现产品的销售,使用店铺插件,用户即可通过小程序完成产品预订、购买、评价等功能。

3.商业变现,能力有目共睹

插件支持商业订购和结算,质量优秀和普适性较高的小程序插件可以借助各大平台的小程序插件市场对开发的插件进行封装售卖,便于开发者进行服务变现和商业化。

小程序插件的技术原理

插件本身的技术原理并不复杂。插件的木质是在不修改程序主体的情况下对软件功能进行加强,当插件的接口被公开时任何人都可以自己制作插件来解决一些操作上的不便或增加一些功能。

一个插件框架包括两个部分:主程序(host)和插件((plug-in)。主程序即是“包含”插件的程序,插件必须实现若干标准接口,由主程序在与插件通信时调用。

小程序插件代码由一些自定义组件和 JS 代码文件构成,插件开发者在发布插件时,这些代码被上传到后台保存起来。当小程序使用插件时,使用者需填写插件的 AppID 和版本号,就可从后台获取相应的插件代码。小程序代码编译时,插件代码会被嵌入到小程序中,与小程序一起编译运行。

插件商业变现的建议

目前开发者完成小程序插件的开发后,可以将自己的插件上架到微信小程序插件市场、支付宝小程序插件市场、FinClip 小程序应用市场等。前两者不言而喻是最大的小程序生态市场,变现的能力较为强劲,而 FinClip 则主要是面向 B 端用户群的小程序容器技术,利用其技术一些企业可以在自有 App 运行小程序,或者将自有小程序转化为 App ,这两类场景也都有集成小程序插件的场景,也同样具有一定的潜力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/492462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搭建Debug(printf)Viewer调试环境

希望对KEIL开发的小白的有用&#xff0c;KEIL开发如果高效正确调用Printf 打印输出调试信息。 需要添加红色字体代码 #include <stdio.h> #define ITM_Port8(n) (*((volatile unsigned char *)(0xE00000004*n))) #define ITM_Port16(n) (*((volatile unsigned short *)(…

Android类似微信聊天页面教程(Kotlin)五——选择发送图片

前提条件 安装并配置好Android Studio Android Studio Electric Eel | 2022.1.1 Patch 2 Build #AI-221.6008.13.2211.9619390, built on February 17, 2023 Runtime version: 11.0.150-b2043.56-9505619 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 11 …

【模拟IC学习笔记】 负反馈系统的稳定性

反馈方程 输出方程 误差方程 环路增益 定义:当输入电压接地、并将环路断开时&#xff0c;所计算的增益就是环路增益 时&#xff08;幅度1&#xff0c;相位-180&#xff09;电路稳定在电源或低状态或在电源和地之间振荡。 分析稳定性时是对环路增益进行分析&#xff0c;通过环…

Java+Selenium+Testng自动化学习(一):环境搭建

目录 一、软件准备及版本介绍&#xff1a; 二、安装步骤及环境变量配置&#xff1a; 2.1 Java安装及配置 2.2 IDE工具&#xff08;Intellij IDEA&#xff09;安装及配置 2.3 Maven安装及配置 2.4 Maven本地仓库配置 2.5 Intellij IDEA配置mvn 一、软件…

全开放式时代来临,南卡OE带给你非同寻常的舒适和听觉感受

NANK南卡一直致力于深耕音频领域&#xff0c;不断创新&#xff0c;将于五月份发布全新形态的全开放式蓝牙耳机。相较于传统耳机&#xff0c;开放式蓝牙耳机除了佩戴零感舒适&#xff0c;还能在沉浸音乐的同时与外界保持沟通。南卡OE作为新推出的开放式蓝牙耳机&#xff0c;采用…

7年从测试废物到测试主管,如何从纯功能测试内卷中破局?

我大学学的计算机专业&#xff0c;有一点编程基础。我的软件测试职业开始和大多数测试人员一样&#xff0c;一开始在一家电商公司做软件功能测试。 大部分进入测试行业的朋友&#xff0c;最开始接触都是纯功能界面测试&#xff0c;随着工作年限&#xff0c;会接触到一些常用测试…

计算机体系结构总结:内存一致性模型 Memory consistency Model

存储一致性是为了保证多线程背景下的访存顺序&#xff0c;多线程的语句是可以交错执行&#xff0c;使得顺序不同产生不同的执行结果。 下面P2的输出结果可能是什么&#xff1f; P1, P2两个线程的语句是可以交叉执行的&#xff0c;比如1a, 2a, 2b, 1b&#xff1b;一个线程内的语…

网络基础学习:什么是网络与网络发展史

什么是网络与网络发展史 什么是网络&#xff1f;什么是网络发展史&#xff1f;分组交换技术TCP/IP技术Web技术ARPANET&#xff08;1969年&#xff09;Internet&#xff08;1983年&#xff09;万维网&#xff08;1990年&#xff09;移动互联网&#xff08;2007年&#xff09;物联…

Golang - GraphQL 搭配 Database

介绍 上一篇我们用GraphQL 已经有个基本的认识 接着来模拟真实的情境搭配Database 来使用 这篇主要都是在初始化环境 示例代码 通过 Docker 设置 MySQL 数据库 从 DockerHub 拉取 MySQL 镜像docker pull mysql 创建MySQL数据库 $ docker exec -it mysql bash $ mysql -u …

Python代码学习之给图片添加文字或图片水印

前言 图片加水印有什么好处&#xff1f;在现今的数字化时代&#xff0c;网络上的图片泛滥&#xff0c;盗图现象也越来越严重。因此&#xff0c;在发布文章时&#xff0c;为了保护自己的原创作品版权&#xff0c;很多人选择使用水印来保护他们的图片。这样就能更好地做到&#…

Java基础(十九)反射机制

1. 反射(Reflection)的概念 1.1 反射的出现背景 Java程序中&#xff0c;所有的对象都有两种类型&#xff1a;编译时类型和运行时类型&#xff0c;而很多时候对象的编译时类型和运行时类型不一致。 Object obj new String(“hello”); obj.getClass() 例如&#xff1a;某些变…

ChatGPT技术如何助力汽车门店销售服务水平提升?

过往&#xff0c;由于线下销售过程没有数字化记录&#xff0c;销售顾问的销讲要点执行情况、客户在体验展车、试乘试驾等过程中的反馈&#xff0c;没法真实全面地记录下来&#xff0c;因此很难做精细化的销售管理和客户心声分析。销售沟通过程不透明、员工服务质量难评估。 在…

Docker启动多个mysql容器

原有镜像mysql5.7.41&#xff0c;已启动mysql容器端口3306&#xff0c;再启动一个端口号为3400的容器。指定用户名root,mima &#xff0c;密码123456 命令&#xff1a; docker run --name zjfz-mysql -e MYSQL_ROOT_PASSWORD123456 -p 3400:3306 -d mysql 名字&#xff1a;zjfz…

【软考备战·希赛网每日一练】2023年5月5日

文章目录 一、今日成绩二、错题总结第一题 三、知识查缺 题目及解析来源&#xff1a;2023年05月05日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析&#xff1a; 有返回消息的就是同步消息&#xff1b;不需要等待返回消息就可以去做其他事情的请求消息就是异步消息…

数影周报:假冒ChatGPT的恶意软件激增,谷歌开启无密码登录

本周看点&#xff1a;假冒ChatGPT的恶意软件激增&#xff1b;谷歌开启无密码登录&#xff1b;京东申请注册Chat相关商标&#xff1b;Flexport收购 Shopify Logistics...... 数据安全那些事 Meta&#xff1a;假冒ChatGPT的恶意软件激增 美东时间周三&#xff0c;Facebook的母公司…

SSM框架(SpringBoot快速构建)

简介 本文意在快速构建一个可以接受前端访问&#xff0c;并进行数据库查找&#xff0c;随后返回相关信息给前端的项目。 ssm为Spring IocSpringMVCMyBatis的缩写 Spring Ioc:管理对象的一个工厂。对象之间有依赖&#xff0c;相互引用Spring MVC:开发代码模式Mybatis:操作数据…

搭建网站使用轻量云服务器怎么样?

​  搭建网站实际上可以从轻量云服务器租用中受益匪浅。如果您正在为个人网站寻找更多的低成本和轻运维&#xff0c;您可以考虑将轻量云服务器作为一个可行的选择。它提供独享资源、独立的IP地址、专属防火墙以及比传统虚拟主机更好的安全性能。本文将介绍轻量云服务器对建站…

OBCP题目及解析

1.关于OCP中的新建告警项&#xff0c;告警项的所属范围包括________&#xff1f;&#xff08;正确答案个数&#xff1a;2个&#xff09; A. OB告警 B. 操作系统告警 C. 应用告警 D. 服务器硬件告警 E. OBProxy告警 【答案】AC 【解析】如下图所示&#xff1a; 2.如果Oce…

大疆无人机 MobileSDK(遥控器/手机端)开发 v4版<1>

大疆无人机飞控开发 大疆无人机SDK开发包功能概述飞行控制相机实时视频流传感器数据下载媒体文件遥控器&#xff0c;电池和无线链路连接应用程序和产品 v4版sdk 二次开发注册成为DJI开发者生成 App KeyAndroid 示例代码配置Android Studio项目集成创建一个新的应用配置Gradle 脚…

使用Gradle7.6+SpringBoot 3.0+java17创建微服务项目

系列文章目录 学习新版本&#xff0c;菜鸟一枚 会持续更新的 文章目录 系列文章目录前言一、搭建项目1.1、创建git仓库1.1.1、登录gitee&#xff0c;新建仓库1.1.2、得到如下命令&#xff08;新建仓库使用创建git仓库 即可&#xff09; 1.2、使用IDEA创建项目1.2.1、开发工具1.…