微信小程序开放公测,开发者可登陆微信公众平台

2024-05-25
来源:网络整理

小程序概览

昨晚微信团队宣布,微信小程序开启公测,开发者可以登录微信公众平台申请,开发完成后提交审核,公测期间无法上线。

前段时间我们也开发过一个小程序,现在来总结一下之前的开发经验。

1.什么是小程序?

微信小程序是原生应用与网页应用之间的一种接口,通过微信进行加载,达到与原生应用同等的流畅度。相较于原生应用,小程序更轻量、实时更新、跨平台;相较于网页应用,小程序资源离线,体验更流畅。

微信小程序的设计目标是让开发者能够以最简单、最高效的方式在微信中开发出具有原生APP体验的服务。

话不多说,我们来看看小程序的效果:

看到效果之后,你是否好奇接下来的发展呢?

2. 小程序实现机制

小程序的开发基于微信提供的一套应用框架。微信封装了微信客户端提供的基础功能,如文件系统、网络通信、任务管理、数据安全等,并向上层提供了一套完整的API,让开发者可以轻松使用微信客户端提供的各种基础功能,快速构建一个应用。框架设计如下:

框架提供了自己的视图层描述语言WXML和WXSS,以及基于的逻辑层框架,并通过单向数据绑定在视图层和逻辑层之间传输数据,让开发人员更加专注于数据和逻辑。

3. 支持的功能

接下来我们看一下微信框架具体提供的功能:

wxml:一切皆组件(视图组件)

更多wxml组件请查看微信公众平台小程序文档

4.功能API:

更详细的API请参考微信公众平台小程序文档

5. 其他:

现在就来详细开发一下吧~

小程序开发流程 1.获取微信小程序

2. 创建项目

创建项目需要使用开发者工具。(工具可在微信小程序公众平台下载)

3. 编写代码

首先我们来看一下小程序的目录结构:

微信对于小程序的开发有一些规定:

上图左侧的三个文件放在小程序的根目录下,其他文件由开发者自由控制。

其中app.js和app.json是必需的。

小程序页面由四个位于同一路径下同名不同后缀的文件组成:

H5开发中我们在页面中引入相应的css和js,而小程序开发不需要在wxml中引入,它们通过同一个名字将页面和逻辑js、样式进行关联匹配。

接下来我们开始具体的开发吧~

框架:小程序内置微信框架,无需额外框架

一般来说,我们开始开发的时候,都会从框架开始,但是小程序封装了一个为客户端设计的框架,作为小程序的开发者,你基于这个框架进行开发,不需要考虑现有的框架。

现有的框架基本都是建立在 、 对象之上的。小程序没有 、 ,或者说没有浏览器BOM宿主环境。你可以理解小程序的宿主环境是类似node的宿主环境,而不是浏览器客户端。关于这个环境的设计,有兴趣的朋友可以参考PWS

模块化:正式支持,加载引用更像ES6

小程序支持,通过加载,类似node,但是加载的是引用的赋值,而不是值的缓存。

小程序模块编写:

小程序的模块操作(类似node,框架会自动增加一层外层):

模块化:UI 组件设计

在开发时,我们可能需要注意视图相关的组件的模块化,比如在H5中,我们一般将弹窗封装成模块组件,这样可以复用;在小程序中,视图只能是wxml,无法动态生成。

首先我们来看一下微信的弹窗视图组件,之前微信提供的API如下(微信有其他方式实现过该组件,这里为了描述问题就用它):

看到这里,你有没有一种联想呢?如果一个页面需要使用100个弹窗框,那么开发者就需要创建组件,并注册对应的100个确定按钮事件和100个取消按钮事件。这显然是不合理的。

能不能在框架上封装成一个通用的组件,开发者只需要传入相应的事件句柄就可以了?微信以后可能会考虑封装一下~

不〜!

为什么?从框架组件设计来看,框架本身采用面向状态的编程方式,组件也是类似的设计(实际并未实现)

组件的View操作之后只能通过业务处理来更新,框架是单向数据绑定,无法自动更新。

对于该类型的View组件,建议根据需要重新封装,封装可以考虑以AOP的形式实现动态的注册和卸载。

1. 定义组件的通用模板

2.以AOP方式封装组件逻辑

1)组件默认配置:

2)组件封装实现

3.组件的使用:

1)在页面wxml中引入组件模板

2)在页面js中,随时使用弹框,不受限制

目前微信已经封装了此组件(api:wx.()调用弹窗),但是不能自动更新的特性依然存在,如果开发者需要定制其他可交互的UI组件,仍然会遇到上述问题,可以参考上述解决方案。

具体页面开发

对于业务页面的开发来说,可以将页面看成是一个页面组件,在这个页面组件中,完成了以下工作:

负责初始化组件(微信)

负责组合子视图组件形成页面效果(开发者)

确定js和view匹配的数据(开发者)

负责注册业务逻辑对象提供的业务逻辑方法(开发者)

负责管理业务逻辑对象(开发人员)

1).wxml文件

2) .js

页面wxml与页面js的通信如下(简化微信框架的工作)

在页面开发中我们需要注意:

在页面js中,必须约定data是只读的。框架是单向数据绑定,修改data中的数据不会自动更新View;更新View需要使用()方法。()在更新View时,会和data中的数据进行Diff比对,不同才会更新。这样如果直接修改data,很容易导致data中的数据和View不一致。

{{{…}},模板中的数据{{{}}},{{}},对应data中的数据为data:{{:{“”,:“”}},方便对子视图的控制。

这样就完成了页面级的开发~~YES!

小程序与H5的区别

在写代码方面,小程序开发和H5开发有什么区别?

1.限制:

为了安全起见,禁用了所有通过传入字符串来执行代码的能力,具体禁用的原生函数有:new、eval等,这也是比较有效的避免H5中类似xss问题的方法。

这些禁用的功能对于我们开发影响最大的应该就是字符串到 JSON 的转换,以前我们都是使用 new、eval 来处理后台 CGI 的返回(移动端一般都是封装成这种框架),小程序开发就需要对具体的实现进行改动。

在这些BOM中,对开发影响最大的应该是none。因为其他功能,比如小程序,也有类似的处理方式。在web开发中,是跟后台登录相关的。

该功能在小程序中不可用,用于兼容当前大部分网页的登录管理,在小程序发送请求时,客户端可以动态设置需要发送的消息。

请注意,它不能在客户端被读取或写入。

因为没有,所以H5中的CSRF问题理论上是解决了,小程序是否存在其他客户端安全问题,还需要技术和时间来验证~

优化

在H5中一般通过微信授权通过URL重定向的方式获取code;在小程序中则是通过wx.获取code,这样就避免了之前登录重定向的问题。

小程序取代H5和微信,每个小程序大小为10M,支持同步和异步。

(三)不便之处

1)每个页面都需要手动在app.json中注册,如果没有注册,页面将不会被执行。

2)打开页面数量限制为5个,开发过程中需要控制打开页面的数量。

wxss:

rpx():可以根据屏幕宽度进行适配,屏幕宽度指定为,例如上图,屏幕宽度为,一共有750个物理像素,那么 = = 750个物理像素,1rpx = 0.5px = 1个物理像素。

4. 调试

开发完成后我们进行调试检查效果,跟移动端开发类似,添加手机日志。

开发工具调试:

手机客户端:点击右上角开始调试

5. 施工

小程序采用类似node的本地加载模块,所以不需要考虑模块合并,直接使用就可以。当然如果你使用ES6开发,还是需要的。

6.测试环境

具体微信还在调整中……

7. 发布

在开发工具中,提交全额,通过微信审核后,发布到微信小程序平台。文件发布加载流程如下:

8.版本更新

小程序在启动时会进行更新,先和客户端版本对比是否有新版本,如果有新版本则更新小程序后运行,否则直接使用本地资源运行。

这样小程序整体的开发和发布就结束了~

我对小程序产品的个人看法:

优势:

低门槛下载,作为微信的一部分,可以直接通过微信进入并使用,几乎可以看成是一个网页,无任何下载门槛。

跨平台,微信客户端底层封装,支持跨平台小程序

开发成本低,通过以往的开发对比,小程序的开发成本比网页端低,而且前端资源的存储、发布、运营都集成在微信里(如果和腾讯云功能结合,那就纯粹是关联了~~呵呵)

页面与原版类似,体验更流畅

小程序可以使用微信支付功能

限制:

基于微信框架开发,部分功能受限,不支持其他现有第三方插件;

同时仅能打开5个小程序页面,如果交互流程较长则难以支撑;

小程序包大小限制为1M(目前),只适合轻量级

关于微信框架API的详细信息,请参考

建议大家在开发小程序的时候,不要用和web app一样的思维。

结论

8月份开始项目内测,期间经历了几次翻天覆地的调整,不断痛苦的迭代,好在框架和开发工具已经比较完善和稳定了,期待小程序的正式上线~~

如果您觉得我们的内容不错的话,请扫描二维码赞赏作者并转发到您的朋友圈,分享给您的朋友吧~

本文由腾讯独家发布,转载请在文章开头显著位置注明作者及出处“腾讯()”。

分享