使用DeviceOne实现微信小程序功能
发布时间 - 2026-01-10 22:12:07 点击率:次微信小程序即将推出,还没推出就火的不行了。基于微信这个巨大平台,小程序必然能有巨大成功。不过它并不能完全取代App,该开发App还得开发。如果我们自己想实现一个基于自己的APP包含类似微信的小程序功能,该如何实现了?我们先来看看小程序的技术特点。

小程序的特点
1. 跨平台,微信就像JRE,在不同操作系统上都有实现,所以微信上的小程序就像运行在JRE上的java程序,从而实现跨平台。另外解决了多平台多机型的适配问题。
2. 体验好,webview加载html是最容易的跨平台方式,但是在手机上的体验太差。小程序和web开发,以及h5其实没有关系了,其ui和运行机制完全是原生,所以体验比公众号强多了。
3. 无需安装,只需扫描二维码。其实还是会有下载了,只不过下载的数据很小,用户根本察觉不到。比如你开发的小程序有10个页面,用户扫描的时候只会下载首页的几个文件,可能1k都不到,而且下载完就缓存在本地和内存了。
其实还有一个最大的优点是微信是巨量用户的粘度最高的应用了,基于这上面的小程序便于推广,这里我们暂时不谈。
我们再来看看缺点:
1. 只能基于微信入口,这是显然的,目前得到的消息是不可能在桌面上有小程序的入口方式,不知道以后是否支持。
2. 只能使用微信应用带的功能,不能使用其它第三方比如地图,支付,统计等功能。微信这些功能都有而且做的也很好,但是多元化更有利用长远的技术发展。
3. 小程序的能力有限,有限的ui和有限的功能不能应付复杂的交互和业务要求。另外开发者也无法扩展其基础功能。
DeviceOne能做到既具备以上优点,也能避免以上缺点,对此大家肯定会有所质疑。我们先简单介绍一下DeviceOne针对以上几点对应的说明,再看看一个示例。
DeviceOne的特点
1. 跨平台,以js或lua为开发语言,一次编写,发布到android,ios和windows平台。而且也是自动适配各种机型。
2. 体验好,从ui到功能,deviceone完全是原生实现,和html没有任何关系。所以是原生的体验效果。
3. 无需安装,这个我们可以从下面的例子再仔细分析。
4. 不是基于一个固定的框架App,也就是说你可以做一个你自己的微信程序,我们暂且称之为主程序,可以有自己的图标,自己的入口,然后加载你自己定义的小程序。包括主程序都是完全可以热升级,就像更新小程序一样的方便。
5. deviceone把app开发完全跨平台组件化了,把开发人员分二部分,开发app的业务开发人员和开发原生组件的原生开发人员。
5.1 开发app的人员不需要懂android和ios,不需要有android和ios开发环境,只需要js就能开发app
5.2 开发组件的人员不需要理解和了解具体app的业务需求,只需要开发可以复用的跨平台的ui和功能组件。所以可以集成任何第三方组件,比如可以集成百度地图,也可以集成高德地图,可以集成alipay也可以集成微信支付。
6. deviceone的组件具有扩展功能,目前官方提供了100多个组件,其它开发者提供了30多个组件,基于deviceone平台,其它原生开发者可以不断的扩展组件商店。
类似小程序的示例
先看运行效果图
这是deviceone动态加载组件API示例的一个应用。我们称之为主程序,本身就是用deviceone开发的。列表中列出的do_App, do_Global之类的都是deviceone的组件,每个组件对应一个新的程序,是示范这个组件功能的一个小例子,我们称之为小程序,但是本质上和主程序没有区别。
运行机制很简单:
1. 程序启动从一个web服务获取到一个json,里面包含多个组件的信息,包括名称,文件大小,下载小程序的url,文件md5值
2. 比较本地的旧的md5是否和新的md5是否一样,如果不一样,提示有更新,可以通过点击更新按钮下载最新的小程序,这里没有使用二维码扫描下载小程序的首页,简单改造就能做到那样。
3. 点击一行,打开新页面,加载小程序,退出页面,关闭小程序。
基本代码如下:
var http = mm("do_Http");
// 显示等待窗口
var waittingLayer = require("source://modules/waittingLayer/call");
waittingLayer.invoke({
hint : "请稍后"
});
var src = "data://" + data.id + ".zip";
http.url = data.url;
http.on("result", function(d) {
sm("do_Storage").unzip(src, "data://temp/" + data.id, function(_d, e) {
var updatesrc = "data://temp/" + data.id + "/source/view";
sm("do_App").update([ updatesrc ], "source://view", function() {
sm("do_Page").fire("installed", data.id);
// 隐藏等待窗口
var waittingLayer = require("source://modules/waittingLayer/call");
waittingLayer.invoke({
close : true
});
})
})
})
http.download(src);
总结
感觉是不是很简单,但是意义很重大,除了小程序更新很容易以外,主程序也很容易更新,原理完全一致。这能用于2个基本用途。
1. 实现程序的热更新,deviceone的业务所有逻辑和页面都是文本文件,包括js代码和ui文件(json描述),天然更新非常容易。
2. 对应大一点的应用或企业,完全可以把业务让不同的开发团队和部门独立完成,然后由一个总个框架App来管理,做到应用开发和管理标准化。而且deviceone有强大的云打包能力,编译打包也可以标准管理。
最后要说的是deviceone并不是只是一个想法和实践,它已经是正式运营一年多的产品,已经为互联网很多个人和公司提供了很多服务,上线了很多面向个人和企业的应用。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# DeviceOne
# 微信小程序
# 微信小程序 省市区选择器实例详解(附源码下载)
# 微信小程序 Template详解及简单实例
# 微信小程序 数组(增
# 删
# 改
# 查)等操作实例详解
# 微信小程序 tabs选项卡效果的实现
# PHP:微信小程序 微信支付服务端集成实例详解及源码下载
# 微信小程序 解决请求服务器手机预览请求不到数据的方法
# 详解微信小程序——自定义圆形进度条
# 微信小程序开发探究
# 微信小程序(应用号)简单实例应用及实例详解
# 微信小程序 实战小程序实例
# 微信小程序 for 循环详解
# 微信小程序 WXML、WXSS 和JS介绍及详解
# 微信小程序 限制1M的瘦身技巧与方法详解
# 自己的
# 主程序
# 都是
# 就像
# 多个
# 这是
# 加载
# 开发人员
# 都有
# 就能
# 不需要
# 称之为
# 很简单
# 只需要
# 第三方
# 首页
# 运行机制
# 无需安装
# 的是
# 几个
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
QQ浏览器网页版登录入口 个人中心在线进入
动图在线制作网站有哪些,滑动动图图集怎么做?
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
高防服务器租用指南:配置选择与快速部署攻略
HTML 中如何正确使用模板变量为元素的 name 属性赋值
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
如何确保FTP站点访问权限与数据传输安全?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
Python3.6正式版新特性预览
Linux系统命令中tree命令详解
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
香港服务器网站卡顿?如何解决网络延迟与负载问题?
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
桂林网站制作公司有哪些,桂林马拉松怎么报名?
微信公众帐号开发教程之图文消息全攻略
高端建站如何打造兼具美学与转化的品牌官网?
Python制作简易注册登录系统
实例解析Array和String方法
网站制作软件有哪些,制图软件有哪些?
Android中AutoCompleteTextView自动提示
网站建设整体流程解析,建站其实很容易!
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
如何用低价快速搭建高质量网站?
EditPlus中的正则表达式实战(5)
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
java获取注册ip实例
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
详解CentOS6.5 安装 MySQL5.1.71的方法
如何用JavaScript实现文本编辑器_光标和选区怎么处理
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
在线制作视频网站免费,都有哪些好的动漫网站?
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
详解阿里云nginx服务器多站点的配置
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
专业商城网站制作公司有哪些,pi商城官网是哪个?
创业网站制作流程,创业网站可靠吗?
EditPlus 正则表达式 实战(3)
javascript日期怎么处理_如何格式化输出
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
想要更高端的建设网站,这些原则一定要坚持!

