使用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版本化路由设计策略  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  想要更高端的建设网站,这些原则一定要坚持!