基于小程序技术栈的微信客户端跨平台实践

基于小程序技术栈的微信客户端跨平台实践
基于小程序技术栈的微信客户端跨平台实践

一、前言

小程序自诞生以来,经过两年多的发展,成为了微信开发者生态中最具有生命力的一环,为外部开发者开辟了全新的想象空间。然而,小程序带来的改变绝不仅限于微信之外,小程序技术栈的确立,又对微信客户端的研发产生了怎样的影响?

二、微信客户端的跨平台实践

微信客户端团队,早在 2012 年的时候就已经开始使用跨平台技术进行研发,从最初为了应对多平台客户端代码逻辑不统一的问题,到后续面向业务和 UI 开发,一直在尝试研发跨平台的解决方案。

最早的跨平台组件是基于 C99 开发的 mmnet,在 2012 年 10 月份的时候为了解决多平台客户端出现的一系列不一致问题而打造的基础网络组件,后续经过不断的迭代优化,尤其是在应对弱网络做了深度的优化,并且加入了安全、容灾等各种网络策略。mmnet 的通用部分逻辑代码于 2016 年以 mars 的名字在 github 开源,在业界获得了广泛的认可,完成了一个内部实验的跨平台组件到最终升华为所有人可用的开源项目。同样在 github 受到欢迎的还有相似思路完成的 wcdb、mmkv 等跨平台组件。

在完成基础组件的跨平台之后,随之而来的是面向业务和 UI 开发的跨平台尝试。为了面对内部快速变化的创新业务,微信客户端团队不得不去寻求在多端上快速迭代的开发模式。在业务开发的过程中,能否可以做到像使用基础跨平台组件那样,只写一次代码就能在多端上得到体验一致的 UI 功能界面呢?

在尝试了不同的方案之后,我们将目光放到了小程序上。在微信小程序快速发展的两年内,各内部业务团队开始基于小程序去做创新业务的开发。借助微信小程序框架,这些业务可以获得相比于纯原生客户端开发周期短、上线快的优势,同时可以满足较强的运营需求。这种基于微信小程序的业务开发模式在内部逐渐的受到认可。

我们认为好的跨平台开发模式必须要达到以下的四个目标:

?减少平台差异性:应该最大限度减少不同平台上开发的差异性,尽可能减少各平台特有的开发负担;

?提高研发效率:从研发效率的角度看,在提高人效比的同时,应该尽可能提升开发人员在开发过程中的效率,包括编码、调试、运行、测试等多个环节;

?原生的性能和体验:从最终的研发产物看,应该有和分平台原生技术开发一样的性能表现和用户体验,让用户无法感知出差距;

易学的可控技术栈:跨平台的技术栈应该具有较好的学习曲线,能够让更多原生开发的同学快速学习并掌握,且无论从技术还是商业角度看,都应该是可控、安全的

技术栈。

那么,小程序技术栈是否能够满足这些要求呢?

三、小程序与微信客户端

微信小程序采用了以前端技术栈为主的方案,框架上面抹平了许多平台差异性,同时业务也可以随时动态部署更新,而体验和性能也比较接近原生。随着小程序生态的发展,还出现了更多丰富的插件扩展机制、自定义组件机制和第三方开发框架。同时,小程序作为微信团队内部自主研发的框架,小程序已经是一个非常优秀的跨平台框架,满足一般的业务开发是没有问题的。

然而,当我们以“小程序技术栈作为客户端跨平台开发技术”这一命题展开,关注其中的一些细节时,也发现了问题。

附近的餐厅就是微信团队内部基于小程序开发的一个类似原生体验的业务。通过小程序实现了一次开发运行在 iOS、Android 两个客户端上的功能。整个开发的过程都主要以微信小程序的开发工具和开发标准为主,配合客户端实现部分额外增补能力,在基本功能完成之后我们也发现了一些在 Android 平台上出现的问题,这里举两个比较典型的例子。

第一个是字体一致性体验问题。微信小程序使用 WebView 渲染,与原生客户端的是两套不同的视图渲染体系,在 Android 平台上出现了无法跟随系统字体保持一致的问题,体验上会有较为明显的割裂感。

第二个在大量的图片和视频混排的场景下,会出现一些掉帧现象,在 Android 中低端机上较为明显。如下图所示,在图片滑动等连续过程中,会偶尔出现 LAG 的情况。并且受目前小程序框架所限,视频、图片的全屏显示效果也不够理想。

正是因为微信小程序框架在面对复杂业务的场景下还会存在一些体验和性能不尽人意的地方,在性能和体验上虽然接近原生,但仍不能达到原生体验效果,我们决定针对这些细节尝试进

行一步步的优化。

先来看看小程序目前的系统架构。

四、基于小程序技术栈的跨平台开发

微信小程序的系统架构相信今天大部分的读者都比较熟悉了,总体来讲分为两部分:

1.View 视图端通过小程序的框架将用户采用 Wxmxxxxl 和 WXSS 描述的UI信息处理

成 H5 元素,最终交给 WebView 去渲染;

2.App Service 端运行用户编写的 jaxxxxvascxxxxript 逻辑,并且可以调用具有微信开放

能力的 JSAPI。逻辑和视图分离,通过事件和数据彼此之间建立联系。

回到我们上面的问题,在中低端机和稍复杂的业务上,受制于 Web 庞大而复杂的体系,要达到原生视图体系这样简单设计的体验,难度很高。那么是否能够使用平台原生的视图渲染体系来解决问题呢?

1. 基于原生渲染优化

原理上我们可以将用户描述的 UI,转换成系统原生的组件,行业里面早有实践,受到ReactNative 这类框架的启发,我们将小程序的视图端进行了一些改造,在 Android 平台上我们 dump 出小程序框架中 Virtual DOM 的信息和所有的 CSS 样式,在 Java 层逐一的去解析映射成原生的组件。但原生体系并不能完全的表达过于复杂的 CSS 样式,因此前期只支持了部分的 WXSS 特性。

2. LV-CPP

我们初步方案当中有太多的实现一开始是用 Java 去做的,考虑平台兼容问题,为了方便移植到其他平台以及可以更低成本的更换渲染模块,我们就将原来解析 DOM 和 CSS 样式的实现单独抽离了出来,形成一个独立的跨平台模块。最终选择了 C++ 实现的 LV-CPP 模块,由LV-CPP 去做跨平台的小程序 UI 体系处理器,完成 DOM 和 CSS 的解析、布局计算,同时执行 JS 的功能由 V8 或者 JSCore 来完成。

当 Wxmxxxxl/WXSS 描述的 UI 发生改变时,小程序前端公共库(WXA frxxxxamework)通过内部计算,将 Virtual DOM 树 Diff 的结果以操作指令的形式提交到 LV-CPP。LV-CPP 接收指令后,更新相应的节点,进行 CSS 的匹配、CSS 属性的转换以及布局的计算,计算好之后再调用 Native View 进行界面的渲染。

CSS 匹配上,目前支持了 ID 选择器(#id)、标签选择器(button)、类选择器(.class)、组合选择器(AB、A B、A>B、A+B、A~B)。为了提高性能,其中组合选择器的匹配使用了 WebKit 的逆序解析方案。

之所以在 LV-CPP 中进行 CSS 属性的转换以及布局计算,目的是为了尽量抹平以后即使使用不同的渲染模块所带来的属性和布局上的差异。最典型的是颜色的转换。CSS 中颜色有各种表示方法,最常见的有:

1.十六进制颜色,如:#0000ff

2.RGB 颜色,如:rgb(00255)

3.RGBA 颜色,如:rgba(255000.5)

4.HSL 颜色,如:hsl(12065%75%)

5.HSLA 颜色,如:hsla(12065%75%0.3)

6.颜色名,如:black

这些不同种类的颜色表示方式,经过 LV-CPP 计算后输出的全部是十进制的颜色值,再交由

渲染模块进行渲染。

采用原生组件的方案确实在体验和性能方面能够带来不错的提升,在 Pixel 2 XL 的机器上我

们测出,帧率方面比 WebView 提升了 27.5%,内存也可以下降 14%~23%。但随着我们要将

该方案推广到各平台的时候,我们意识到需要在各个平台去做适配是一个巨大工作量的事情,而且后续的维护成本也将无法预测。

基于 Web 的渲染满足不了性能和体验的要求,基于原生渲染又会带来高维护成本问题,我们需要一个跨平台的渲染方案来解决。在研究各种可能的方案的时候,Flutter 再次走进了我们

的视野。

3. Flutter

Flutter 是 Google 为跨平台打造的高性能应用框架,受到了很多同行的关注,但如果按照我们设定的微信跨平台开发的目标来看,Flutter 并不完全符合,使用 Dart 开发会对现有开发同学

造成额外的学习成本,所以一开始我们并没有将 Flutter 作为客户端跨平台开发的候选。

但当我们的问题重新设定为“寻找一个跨平台的高性能渲染框架”时,Flutter 就逐渐体现出了

各项优势。从一些经典的 Benchmarks 案例中看到,Flutter 具有非常不错的性能水平。

这组数据是我们在 ARM 平台测出的 Java,Dart JIT 和 Dart AOT 的对比数据,数值越高表示性能越好。同时另一个有意思的情况是,随着 Flutter 版本的提升,性能表现会越来越好,也说明 Flutter 的开发人员在不断地优化性能表现。

而且从 Benchmarks Game 上能获取到和 jaxxxxvascxxxxript 的一些对比数据,从中大概能得出一个结论:Dart 的语言性能是超过 jaxxxxvascxxxxript,和 Java 有得一拼的。

可以看下官方对 Flutter 的介绍:

?快速开发:Flutter 的热重载可以快速地进行测试、构建UI、添加功能并更快地修复错误。

?富有表现力,漂亮的用户界面:自带的 Material Design 和 Cupertino(iOS风格)widget、丰富的 motion API、平滑而自然的滑动效果。

?响应式框架:使用 Flutter 的现代、响应式框架,和一系列基础 widget,轻松构建您的用户界面。

?访问本地功能和 SDK:Flutter 可以复用现有的 Java、Swift 或 ObjC代码,访问 iOS 和 Android 上的原生系统功能和系统 SDK。

?统一的应用开发体验:Flutter 拥有丰富的工具和库,可以帮助开发者轻松地同时在iOS 和 Android 系统中实现想法和创意。

?原生性能:Flutter 包含了许多核心的 widget,如滚动、导航、图标和字体等,这些都可以在 iOS 和 Android 上达到原生应用一样的性能。

在一系列的评估基础上,我们觉得可以使用 Flutter 去尝试一下。于是我们提出了基于 Flutter 的小程序框架渲染优化方案。

4. 基于 Flutter 渲染优化

我们把渲染部分由原来的平台原生组件替换成了 Flutter 的 Widgets,依然只支持精简后的Wxmxxxxl 和 WXSS。

在这个架构下,我们就将 Layout 层的 LV-CPP 专门的作为小程序的 UI 体系处理器,将 UI 信息布局计算好再提交给抽象的后端去渲染,LV-CPP 作为小程序的框架和渲染器的中间层,集中的在 C++ 层去处理与 Web 相关的复杂特性。渲染端就可以基于特定的协议和接口专注将元素转化为 UI 组件,最终绘制出来。

通过结合 Flutter 和 LV-CPP,我们把实现代码收敛在 C++ 和 Dart 上,进一步简化了基于小程序技术栈实现跨平台业务开发的框架维护成本。

然而,真正实现的过程中我们还得做更多的思考和优化。

5. 通信难题

小程序的框架是使用 jaxxxxvascxxxxript 再加上一些平台注入的接口来实现的,它们是运行在JS Engine 的环境当中。而 Layout 层是采用 C++ 来实现,如何去解决 jaxxxxvascxxxxript 和

C++ 的互相通信问题呢?LV-CPP 在 C++ 层计算好布局之后,又如何将这些信息传递给渲染后端 Flutter 的 Dart 环境中呢?要想保障框架的性能,那么我们就必须要去解决两个问题。

a. JS 的通信

基于 Android WebView 的体系下可以在 Java 层通过 WebView 提供的接口注入一个jaxxxxvascxxxxriptInterface,JS 就可以得到一个扩展的 API,调用的时候经过 V8 最终反射到Java 上面。

在 iOS 上面也是类似的实现,这种方式第一是会带来平台相关性的实现;第二是调用路径较长。所以在这个问题上,我们最终使用了 JS Binding 的方案,将原先依赖平台的实现直接下沉到 C++,去实现 JS 对象的扩展,既可以解决跨平台的问题也能带来性能的提升。

b. Flutter 的通信

Flutter 官方提供了一种 Platform Channel 的方案,用于 Dart 和平台之间相互通信。主要的原理就是将传递的数据编码成消息的形式,跨线程发送到平台接口层,处理之后再将返回的数据通过同样的方式原路返回。基于消息和跨线程的处理使得这种方式的通信效率并不高,我们在骁龙845的机器上测了一组数据,一秒内通过 Platform Channel 只能大概完成四千次左右的相互调用。

所以我们对 Flutter Engine 进行了一些改造,增加了一个 dart2cpp 的模块,暴露出部分的 C++ 接口,使得外部的动态库可以基于这些接口通过 DartVM 调用到 dart 的接口。在 Dart 的运行环境中 C++ 和 Dart 之间就可以像调用自身的接口一样调用彼此的接口。而且在 AOT 模式下Dart 会被编译成机器码,所以 C++ 和 Dart 的调用会非常的高效。不需要将数据编码成消息和跨线程一系列的复杂流程,而是直接在内存栈上操作数据。

dart2cpp 相比于 Platform Channel 的方案提升多少呢,同样的测试案例,一秒内通过 dart2cpp 可以完成三十多万次的相互调用,可以说是极大的提升了通信效率。

c. dart2cpp 实现原理

DartVM 提供了一种机制,可以在 Dart 的代码中使用 native 关键字来表示调用的是一个

C/C++ 的接口。

// Dart 示例代码bool systemSrand(int seed) native "SystemSrand";

但这个 C/C++ 接口必须要先注册到 DartVM 当中,不然就无法查找到符号。

DART_EXPORT Dart_HandleDart_SetNativeResolver(Dart_Handle library

Dart_NativeEntryResolver resolver Dart_NativeEntrySymbol symbol);

注册可以通过 Dart_SetNativeResolver 来完成,在 Dart 的运行过程中会通过注册的

Dart_NativeEntryResolver 根据函数信息来查找到 C/C++ 的函数地址。

通过以上的两步就可以在 Dart 直接调用一个扩展的 C/C++ 函数,但是还没完,Dart 的内存

模型和 C/C++ 的是有区别的,Dart 调到 C/C++ 的过程中传递的参数和函数返回值都使用了

一个 Dart_NativeArguments 来描述,可以通过Dart_GetNativeArgument/Dart_SetReturnValue

这两个接口来从Dart_NativeArguments 上获取参数和设置返回值。

// C++ 示例代码void SystemSrand(Dart_NativeArguments arguments) { Dart_EnterScope(); bool success = false; Dart_Handle seed_obxxxxject = HandleError(Dart_GetNativeArgument(arguments 0)); if (Dart_IsInteger(seed_obxxxxject)) { bool fits;

HandleError(Dart_IntegerFitsIntoInt64(seed_obxxxxject &fits)); if (fits) { int64_t seed; HandleError(Dart_IntegerToInt64(seed_obxxxxject &seed)); srand(static_cast(seed)); success = true; } } Dart_SetReturnValue(arguments HandleError(Dart_NewBoolean(success))); Dart_ExitScope();}

d. cpp2dart 实现原理

以上介绍了 Dart 调用 C/C++ 接口的实现原理,那么在 C/C++ 如何的调用 Dart 的接口呢,别急,在 DartVM 中依然可以找到解决办法。

DART_EXPORT DART_WARN_UNUSED_RESULT Dart_HandleDart_Invoke(Dart_Handle

target Dart_Handle name int number_of_arguments Dart_Handle* arguments);

可以在 dart_api.h 中找到一系列 API ,这些 API 就可以在 C/C++ 层操作到 Dart 的接口甚至是

变量。

有了这些基础的 API 就基本上可以做到 Dart 和 C/C++ 之间相互调用,但你可能还需要知道

一些 DartVM 的执行机制,才能让你的代码正常的 work。

上面的 C/C++ 的示例代码中,使用了 Dart_EnterScope/Dart_ExitScope这么两个 API,事实上在 C/C++ 持有的 Dart 对象都是用 Dart_Handle 句柄来描述的,我们在函数内创建的很多变量都是局部变量,在离开作用域之后应该释放内存,那么 Scope 的概念就相当告诉 DartVM 当前创建的都是局部变量,在 ExitScope 之后应该回收这里用到的内存。

当然还有一个重要的概念是 Isolate,Dart 的代码是运行在一个独立的 Isolate 当中的,在Flutter 的体系当中,这个主 Isolate 一般是寄生在 UI Runner 的线程中,在 C/C++ 去调用 Dart 的接口必须要在 Isolate 的环境当中,不然就会出现各种异常。

这里就涉及到非常多细节以及繁琐的 API 调用的问题,对一般的开发者开讲他只是要去调用一个外部的接口而已,可能不了解这些具体的技术细节,因此我们才开发了 dart2cpp 这么一套东西,使得开发者能够正常的写 Dart 和 C/C++ 的代码,不需要去关注数据如何的传递、Scope 以及 Isolate 这些细节。

而且我们也不希望最终业务的动态库和 Flutter Engine 的动态库是绑定在一起的,它们可以是相互独立的动态库,在需要用到的时候,只需要通过 Dart 的接口去加载这个动态库,然后动态库将自己的信息注册到 Flutter Engine 当中,就可以做到 Dart 和外部动态库之间的 C/C++ 相互调用。

e. js2dart

这两套解决方案呢,其实它的想象空间绝非仅此,既然 JS 可以和 C++ 相互调用,C++ 又可以和 Dart 相互调用,他们结合在一起其实就可以间接的打通 jaxxxxvascxxxxript 和 Dart。虽然 jaxxxxvascxxxxript 和 Dart 有各自的执行环境和机制,但通过 C++ 的桥梁,依然可以构建一个高效的通道,中间可以通过引用和一些转换(类似 JNI)来完成大多数的调用操作和数据传递。

另外,Flutter 在动态部署(Hot Patch)方面虽然没有提供官方的支持,但是在借助于 js2dart 下能够做的事情就很多了,但这并不在本文的讨论范围。

至此不同语言环境中的调用通信问题有了比较高效的解决方案。

6. Flutter 渲染优化后的小程序整体架构

来看一下到目前为止小程序的整体架构调整。App Service 端依然保持原有的结构,处理用户编写的 jaxxxxvascxxxxript 逻辑;而视图端(PageView)则重新划分为四个层级,除了原有的 UI DSL 描述(Wxmxxxxl/WXSS)、小程序前端公共库(WXA frxxxxamework)外,还有由 LV-CPP 为主的 UI 布局处理层(Layout+)和 Flutter 实现的渲染层(Renderer)。

使用简化的 Wxmxxxxl/WXSS 描述的 UI 信息,经过小程序前端公共库处理成 DOM 描述,通过 JS Binding 接口传递给 LV-CPP去解析 CSS 和 DOM 节点(Layout+)。LV-CPP 在完成布局计算之后将元素信息通过 dart2cpp 的接口发送到 Flutter 端,Flutter frxxxxamework 层直接将布局计算好的元素描述成渲染节点,交给 Flutter Engine 去绘制。

整体上来讲我们把代码收敛在 jaxxxxvascxxxxript,C++ 和 Dart 上,所以在跨平台方面会极大减少额外的负担。对小程序的开发者也不会带来任何的改变,面向开发者的依然是原有的小程序技术体系。

7. 从 RN-like 到 Flutter 渲染

从最初的 RN-like 方案再到基于 Flutter 方案的研究,本质上都只是在不断的解决我们遇到的问题,对比 Web 的方案体验和性能也都有提升,而且在平台维护方面也得到解决。

汇总 Flutter 渲染解决的问题,基本上看是能够满足我们在性能和体验上的诉求的:?字体不一致问题:通过自定义 Flutter Engine 实现跟随系统原生视图字体;

?视频、地图等同层渲染:Flutter 官方提供了一种机制,通过 Texture Widgets 的方式将 Native 平台渲染的 Texture 同步到 Flutter 的渲染体系中来,保证同一时刻界面上

仅存在一种视图体系;

?文本输入框:Flutter 官方提供了较为完整的输入框控件;

?性能提升:相比 WebView 在低端机上有可见的性能指标提升;

?减少重复资源投入,多平台维护:基本上只需要维护 Dart 和 C++ 代码,平台相关代码可以最小化。

当然,目前阶段在性能上还存在很大的进步空间,相比 RN-like 方案的各项性能指标并未达到最佳,仍需要充分的发挥 Flutter 的特性,提高这套框架整体的可用性。

注:由于开发阶段方案变化较快,此处对比数据并未在同样的设备下测定,仅以相对WebView 渲染提升为例做为说明。

五、总结与展望

回顾一下上下文,微信在客户端跨平台开发方案的探索从最早期的打造高质量、开源化的基础组件,到现在尝试探索大前端技术栈的业务跨平台开发方案,始终是从提升研发团队效能和最终产品用户体验两个角度出发,去思考如何能够不断地提高移动研发技术水平。如果把我们的视线重新拉回来这一根本出发点,今天我们所分享的渲染方案也并不一定是小程序技术栈作为跨平台开发的唯一优化方案选择。WebView 渲染真的无法有突破性提升?跨平台开发只有大前端技术选择?随着大前端技术不断的发展和深入,相信未来一定会继续出现新的技术方案去解决现有研发流程中的问题,也欢迎大家继续关注我们的最新进展。

《微信小程序开发图解案例教程》教学教案—第3章教案用微信小程序组件构建UI界面2

第3章用微信小程序组件构建UI界面

教学过程 3.8沙场大练兵:表单登录注册微信小程序 微信小程序里有丰富的表单组件,通过这些组件的使用,来完成京东登录界面、手机快速注册界面、企业用户注册界面的微信小程序设计,如图所示。 登录手机快速注册企业用户注册 会用到view视图容器组件、button按钮组件、image图片组件、input输入框组件、checkbox多项选择器组件、switch开关选择器组件、navigator页面链接组件等组件的使用,将这些组件进行界面的布局设计来完成表单登录和注册设计。 3.8.2登录设计 在登录表单里,输入账号、密码进行登录,在账号、密码输入框里都有友好的提示信息;登录按钮默认是灰色不可用状态,只有输入内容后,才会变为可用状态;在登录按钮的下面提供手机快速注册、企业用户注册、找回密码链接;界面最下面是微信、QQ第三方登录方式,如图所示。

登录界面 (1)添加一个form项目,填写AppID,只有填写AppID,form微信小程序才能在手机上浏览效果,如图所示。 添加form项目 (2)在app.json文件里添加“pages/login/login”“pages/mobile/mobile” “pages/company/company”3个文件目录,并删除默认的文件目录以及相应的文件夹,如图所示。 app.json配置 (3)在“pages/login/login”文件里,进行账号密码输入框布局设计,并添加相应的样式,代码

输入框布局设计 (4)在“pages/login/login”文件里,进行登录按钮、手机快速注册、企业用户注册、找回密码以及第三方登录布局的设计,并添加相应的样式,代码如下所示。 login.wxml 手机快速注册 企业用户注册 找回密码 login.wxss .content{ margin-top: 40px; } .account{

智昂小程序商城使用手册

智昂小程序商城使用手册 什么是智昂 智昂基于云服务模式向商户提供强大的小程序商城系统和完整的移动零售解决方案,并致力于为广大商家、消费者提供好用、强大的品牌展示工具。携手智昂小程序商城共掘万亿市场。 企业为什么使用小程序 移动互联网的趋势 据微信官方数据,2017年微信用户数达8.89亿,涵盖各年龄阶层的人群。腾讯自2017年1月份推出微信小程序以来,一直将其作为重点扶持对象,小程序独有的稳定性及兼容性为用户提供了完美流畅的体验。 除此之外,腾讯为小程序开放多个流量入口,打破了以往用户只能通过公众号了解商家的局限。许多商家及开发者纷纷转战小程序市场。 智昂平台优势 操作简洁 智昂小程序商城平台的管理界面简单易用、操作方便,大量人性化设计,一分钟开启微信营销,无需安装任何软件,全自动“云”平台。 功能强大 通过智昂平台,商家可以收集小程序商城日常访客数据、首页装修版块不受限,彻底打破常规手机端商城装修通俗单一的传统,让商家能够更完美的展示品牌价值。 专业团队 一站式管理,平台支持,强大精英团队提供专业的技术支持,专属客服7*12小时实时在线为您提供专业指导。 常见问题 使用智昂小程序商城需要什么条件? 首先您需要注册一个微信小程序账号,并确保其已通过认证,同时开通微信支付功能,如您的商城不需要支付功能,则无需开通微信支付功能。(微信官方收取小程序账号认证服务费为300元/年,微信支付功能服务费为300元/年) 智昂商城是否收取交易手续费? 客户在您商城中交易的一切资金,均为实时直达您的微信账户,智昂小程序商城平台只保证您的交易安全,不做交易干涉,更不收取任何交易手续费。(微信官方收取%0.6资金提现手续费)

微信小程序制作方案及流程

微信小程序制作方案及流程 从运营的角度讲制作,不是从程序的角度讲开发,所以简单明晰,通俗易懂。 (一)微信小程序背景作用 微信小程序十分火热,传闻说是要和应用市场竞争,这不可能。除非你替代IOS系统和安卓系统的手机,载体已经决定了性质。 其实,微信小程序功能,更多的是未了给用户提供更优质的服务。微信试图在商业服务领域进一步开发社交平台的商业价值。微信开放平台,接入了京东,滴滴打车,外卖等,这些平台本身已经拥有较大的影响力和价值,但却没有像淘宝那样,把线下的所有商家都尽可能的搬到移动端平台上。这才是微信小程序的目的。 微信小程序其实很久以前就有,记得刚开始搜索附近人的时候,微信已经开通了门店功能,附近的优质门店就会展示出来,小程序,正是把这一功能单独提炼出来,把它做大做好。 微信公众号有很多功能,此前流行微信公众号开发,微官网,微店,微营销等,甚至,微信不能链接淘宝店,有的链接是移动官网,好像似乎都不尽人意。其实,微信小程序,就是拿来供微信链接用的,进一步提升并解决微信开发,微店,微官网等没有做好的地方。你可以试试做一个好的微信小程序,来推广你的业务或服务,以及一些有趣的应用。 这正是微信小程序的作用和目的。 (二)微信小程序制作 从运营的角度讲制作,不是从程序的角度讲开发,所以简单明晰,通俗易懂,小白也能按照流程完成制作。 微信小程序制作流程 1.确定好微信小程序的的定位和目的 如行业,功能,内容,目标用户,目标市场,意向名单,专业作用等。 2.落实小程序的程序制作公司,或者团队 若是外部团队,要签订合同,打款之前,到公司实地考察情况。小程序制作的公司很多,并不是每家公司都会制作出你心仪的小程序。这要考察,更要好好沟通。 3.确定好小程序制作文案资料 包括设计需求,功能项目,表格表单,广告语言,模板栏目,按钮,跳转链接,运行逻辑,计算公式,展现手段等。 4.小程序设计方案,设计图片出炉 交付美工设计,保持沟通,按照文案和沟通内容进行设计。初版审核,是否需要更改设计细节。敲定设计方案。 5.小程序设计切片,程序制作,后台制作

微信小程序入门指南

目 录 关于作者 (3) 前言 (5) 第一节 什么是小程序? (7) 第二节 小程序将给我们带来什么改变 (12) 第三节 小程序上手案例 (18) 知了交通 (19) 剁手吗 (24) 知了地铁 (32) 解忧室 (36) 第四节 如何转行小程序开发? (41) 第五节 如何拥有自己的小程序? (45) 如何注册微信小程序 (46) 如何搞定微信认证? (52) 如何完善小程序信息? (59) 开发者工具怎么用? (65) 小程序的审核与发布 (74) 第六节 小程序官方文档解读 (83) 开发文档解读 (84) 设计文档解读 (94) 运营文档解读 (104) 第七节 电商类小程序开发教程 (112) 如何做轮播图 (113) 如何做商品列表 (123) 数据加载和图文排版 (134) 写在最后 (148) 附录 (149) 小程序大事记 (149)

关于作者 爱范儿是首批获得微信小程序内测资格的200 个公司之一,也是全球第一个开发出微信小程序的公司。 知晓程序,是爱范儿旗下专注小程序生态的新品牌。 我们提供最全面、新鲜的小程序资讯、观点、教程、Demo、活动等内容和服务,在这里你能了解到关于小程序的一切。 我们还跟全国各地的小程序关注者开展了深入交流,形成了面向小程序开发者的未来小程序·黑客马拉松/面向非技术从业人员(产品/运营/市场等)的未来小程序·workshop/面向小程序爱好者的未来小程序·MindTalk 的活动矩阵。 目前,知晓程序共包含四大版块: l知晓程序微信公众号:小程序资讯媒体 l知晓程序商店:小程序应用商店; l知晓程序社区:小程序交流平台; l知晓程序BaaS:小程序后端服务平台。

微盟微商城微信小程序直播使用手册

微盟微商城微信小程序直播使用手册 一、微信小程序直播简介 微信小程序直播是微信官方面向商户提供的直播经营工具,通过微盟接入,商户可以在自己的小程序后台开启和使用直播,并可将直播嵌在小程序商城任意页面,在店铺内即可完成直播闭环。用户可在小程序商城进行直播预约、观看直播以及购买商品等。主播在直播过程中商品卡片实时弹窗,用户点击商品直接进入商品页面完成购买,同时主播还可运用点赞、抽奖、优惠券派发等能力与用户进行互动。 二、微信小程序直播接入流程 1、接入前准备 (1)店铺已绑定微信小程序 (2)绑定的微信小程序已获得小程序直播公测资质 (3)已在微信小程序后台创建了直播间 (4)直播权限已授权给微盟 小程序直播公测资质的获取 小程序后台确认获得直播资质并提交申请审核通过; 登陆小程序后台,左侧有“功能 -直播”功能,即表示您已获得小程序直播公测邀请;

受邀后,请按照引导申请小程序直播能力 满足以下条件的商家在收到公测邀请后可以申请使用直播能力:①小程序在目前开放的18个类目范围内(附类目列表)

类目列表: 电商平台 商家自营-百货 商家自营-食品 商家自营-初级食用农产品 商家自营-酒/盐 商家自营-图书报刊/音像/影视/游戏/动漫 商家自营-汽车/其他交通工具的配件 商家自营-服装/鞋/箱包 商家自营-玩具/母婴用品(不含食品) 商家自营-家电/数码/手机 商家自营-美妆/洗护 商家自营-珠宝/饰品/眼镜/钟表 商家自营-运动/户外/乐器 商家自营-鲜花/园艺/工艺品 商家自营-家居/家饰/家纺 商家自营-汽车内饰/外饰 商家自营-办公/文具 商家自营-机械/电子器件 ②主体下小程序近半年没有严重违规 ③小程序近90天存在支付行为 ------------------------- 以上3个条件同时满足的前提下,下面3个条件满足其一即可 ------------------------- ④主体下公众号累计粉丝数大于100 ⑤主体下小程序近7日dau大于100 ⑥主体在微信生态内近一年广告投放实际消耗金额大于1w 注:由于数据会延迟两个工作日刷新,刚满足以上条件商户可在两个工作日后再发起申请 满足以上条件,但暂未收到邀请的商家可耐心等待(即左侧没有“功能 -直播”功能),小程序直播的公测邀请将逐步覆盖(即满足条件后2个工作日后收到公测邀请) 在此提醒商家需遵守直播相关规范,如出现违规行为,相关能力可能会被回收。 审核通过后,若您能够在小程序后台创建直播,即表示您已审核通过 注:若未通过审核即填写对接信息,添加直播能力有可能导致您的小程序审核失败

微信小程序安徽省大学生就业服务平台网络签约使用指南

微信小程序(安徽省大学生就业服务平台) —网络签约使用指南 一、网络签约—协议书签约指南 第一步 毕业生: 1、微信搜索小程序“安徽省大学生就业服务平台”,打开后选择本校并输入“姓名+学号+身份证号”登录(若出现无法登录的情况,请联系辅导员老师解除原来的绑定)。 2、在“我的”中打开“二维码名片”,向用人单位发送二维码,并告知用人单位使用微信扫描“二维码名片”。 备注:在签约前请务必在“派遣”“生源信息维护”确认信息与本人信息完全一致,否则不能签约。

第二步 用人单位: 打开微信,使用扫一扫功能,扫描毕业生提供的二维码名片后,会出现填写签约信息页面;首先验证毕业生信息,确认下一步后,填写本单位基本信息和联系方式,并选择签约毕业生的工作岗位,然后点击“确认签约”后提交。 第三步 辅导员: 登录省就业派遣系统,依次点击“就业派遣”、“就业协议书”、“打印申请登记表”,会出现已经提交的协议书打印申请。 点击学生姓名,进入审核页,点击“审核通过”或“审核不通过”

完成审核。 第四步 毕业生: 正式开学后,待辅导员正式通知后,毕业生自行线下与用人单位

对接,用学校发放的纸质《三方协议》或《劳动合同》、《就业证明函件》进行正式签约。 二、网络签约—协议书解约指南 第一步 毕业生: 登录微信小程序—安徽省大学生就业服务平台,点击“派遣”,进入“解除就业协议申请”,上传解约申请材料(仅需上传与用人单位达成的解约协议图片即可,且用人单位务必盖公章,否则无效)。

第二步 辅导员: 登录省就业派遣系统,点击最上方主菜单“就业派遣”,再点击左下角“解约申请登记表”,点击申请学生姓名,进入审核页,点击“同意毁约”或“不同意毁约”即可。 备注:辅导员审核时,应认真查看毕业生提交的解约申请材料内容是否清晰,且如未盖用人单位公章的材料一律无效,不同意毁约。 第三步 毕业生: 辅导员老师系统同意毁约后,毕业生可重新签约。

微信应用号(小程序)设计规范

微信应用号(小程序)设计规范 概要 微信小程序设计的基本原则是微信设计中心针对在微信内上线的小程序页面总结的设计指南及建议。以下设计原则都是基于对用户的尊重的基础上的,旨在微信生态内建立友好、高效、一致的用户体验的同时,最大程度顺应和支持各业务需求设计,实现用户与程序的共赢。 一、友好礼貌 为了避免用户在微信中使用小程序服务时,注意力被周围复杂环境干扰,小程序在设计时应该注意减少无关的设计元素对用户目标的干扰,礼貌地向用户展示程序侧提供的服务,友好地引导用户进行操作。 1. 重点突出 每个页面都应有明确的重点,以便于用户每进入一个新页面的时候都能快速地理解页面内容,在确定了重点的前提下,应尽量避免页面上出现其他干扰项影响用户的决策和操作。

反例示意 此页面的主题是查询,却添加了诸多与查询不相关的业务入口,与用户的预期不符,易造成用户的迷失。 纠正示意 去掉任何与用户目标不相关的内容,明确页面主题,在技术和页面控件允许的前提下提供有助于用户目标的帮助内容,比如最近搜索词,常用搜索词等。

反例示意 操作没有主次,让用户无从选择 纠正示意 首先要避免并列过多操作让用户选额,在不得不并列多个操作时,需区分操作主次,减轻用户的选择难度。

2. 流程明确 为了让用户顺畅地使用页面,在用户进行某一个操作流程时,应避免出现用户目标流程之外的内容而打断用户。 反例示意 用户本打算进行搜索,在进入页面时却被突如其来的抽奖弹窗所打断;对于抽奖没有兴趣的用户是非常不友好的干扰,平添一份对开发团队的恼怒;而即便有部分用户确实被“诱人”的抽奖活动所吸引,离开主流程去抽奖之后可能就遗忘了原本的目标,进而失去了对产品真正价值的利用和认识。 二、清晰明确 作为一个负责任的开发者,一旦用户进入我们的小程序页面,就有责任和义务清晰明确地告知用户身在何处、又可以往何处去,确保用户在页面中游刃有余地穿梭而不迷路,这样才能为用户提供安全的愉悦的使用体验。

小程序开发入门指南——前端篇

小程序开发入门指南——前端篇 一、开发前的准备 开发环境:微信推出的官方开发工具。 申请Appid:相关公司或个人申请到Appid后可以进行真机的调试和预览,否则只能在开发工具里进行调试。 备案域名和证书:微信小程序仅支持https协议,所以务必绑定含有证书的域名,才能在正式上线后进行使用。 二、项目结构 微信小程序底层借鉴了React框架的思想,整个开发围绕着组件化开发和数据绑定的模式进行,与传统的jQuery开发逻辑不同。 在开发工具中建立项目,选择quickstart选项,会自动生成项目的框架,并补充部分代码。 如图所示,.wxss后缀是样式文件,类似于css,整个文件的书写语法和css一致,.js后缀的是脚本文件,和传统前端开发的js文件作用一样,.json后缀文件是配置文件,页面相关配置的书写都在这个文件中。这些文件在进入小程序之后就会运行,生成小程序实例。 下面我们简单学习一下这三个文件的作用。 1、app.js是小程序的脚本代码。我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量、建立一些登录和获取用户信息的全局方法,进行本地数据的读写存储。 2、app.json是对整个小程序的全局配置。在这个文件中我们可以注册每个页面,设定小程序窗口的背景颜色和导航文字,设置小程序的tab分页等。 3、app.wxss是整个小程序的公共样式表。它是全局的,页面里的元素也都可以直接使用该文件里的样式规则。

Pages文件夹里放置着各个页面的文件夹,utils里是一个通用工具类方法文件夹。我们在小程序里看到的每个页面,都是放置在pages文件夹里的。 三、页面文件结构 例如我们想要写一个充值页面叫做charge,首先要在app.json文件中进行页面的注册,然后就在pages里新建一个叫做charge的文件夹,该文件夹内必须包含四个文件:charge.wxml,charge.wxss,charge.js和charge.json。这四个文件缺一不可,并且一定要保证后缀以外的名字完全一致。 .wxml后缀文件是页面的结构,类似于传统前端开发的html文件,.wxss是该页面的样式文件,.js是页面的脚本文件,.json是页面的配置文件。 一个简单的.wxml文件代码如下: 书写结构和html文件很像,微信小程序只是重新进行了标签的定义,但是在小程序里,每个标签都是一个组件,根据官方文档我们可以快速找到常用组件的标签写法和对应的属性。 小程序支持在wxml文件里进行数据绑定,使用“{{}}”来完成绑定。对应的数据可以写在js文件中。同时,小程序也支持条件渲染和列表渲染。 再来看看js页面的简单结构: 在js文件中,我们可以声明绑定的数据,监听处理页面的生命周期函数,定义页面的交互事件,获取小程序实例调用实例方法等。 小程序的js文件,内置对象是Page而非浏览器内置的window对象,因此,所有以window对象为基础而写的库或插件都无法在小程序中使用(例如jQuery)。除此以外,小程序里也没有document对象,所有DOM的操作都是基于绑定的数据来进行变化,而不能直接在脚本里进行DOM操作。熟悉Angular,React 或者Vue的朋友应该可以很容易理解这种设计。 需要注意的是,如果页面无需新的配置项,也必须包含.json文件,并且文件里最少要有一个大括号(如“{}”),否则会报错。 这样我们就处理了一个页面了,每个页面都可以按照这样的方式来开发,但请记住一定要在app.json文件中进行页面的注册,否则是无效的哦。

微信小程序的官方设计指南和建议(最新规范抢先看)

c基于微信小程序轻快的特点,我们(微信官方)拟定了小程序界面设计指南和建议。设计指南建立在充分尊重用户知情权与操作权的基础之上。旨在微信生态体系内,建立友好、高效、一致的用户体验,同时最大程度适应和支持不同需求,实现用户与小程序服务方的共赢。 一、友好礼貌 为了避免用户在微信中使用小程序服务时,注意力被周围复杂环境干扰,小程序在设计时应该注意减少无关的设计元素对用户目标的干扰,礼貌地向用户展示程序提供的服务,友好地引导用户进行操作。 重点突出 每个页面都应有明确的重点,以便于用户每进入一个新页面的时候都能快速地理解页面内容,在确定了重点的前提下,应尽量避免页面上出现其他干扰项影响用户的决策和操作。 反例示意 此页面的主题是查询,却添加了诸多与查询不相关的业务入口,与用户的预期不符,易造成用户的迷失。

纠正示意 去掉任何与用户目标不相关的内容,明确页面主题,在技术和页面控件允许的前提下提供有助于用户目标的帮助内容,比如最近搜索词,常用搜索词等。 反例示意 操作没有主次,让用户无从选择

纠正示意 首先要避免并列过多操作让用户选择,在不得不并列多个操作时,需区分操作主次,减轻用户的选择难度。

流程明确 为了让用户顺畅地使用页面,在用户进行某一个操作流程时,应避免出现用户目标流程之外的内容而打断用户。 反例示意 用户本打算进行搜索,在进入页面时却被突如其来的抽奖弹窗所打断;对于抽奖没有兴趣的用户是非常不友好的干扰;而即便有部分用户确实被“诱人”的抽奖活动所吸引,离开主流程去抽奖之后可能就遗忘了原本的目标,进而失去了对产品真正价值的利用和认识。 二、清晰明确 一旦用户进入我们的小程序页面,我们就有责任和义务清晰明确地告知用户身在何处、又可以往何处去,确保用户在页面中游刃有余地穿梭而不迷路,这样才能为用户提供安全的愉悦的使用体验。

小程序使用指南

小程序使用指南 微信小程序是什么? 张小龙在小程序内测时说:“小程序是一个不需要下载安装就可使用的应用,它实现了应用触手可及的梦想,用户扫一扫或者搜一下即可打开应用。也体现了用完即走的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载”。 那么,小程序精细化使用怎么做?一份最最全面的小程序推广手册送给大家,助您成为企业赢家。 1. 发传单地推(传单、海报、易拉宝等) 线下扫码是小程序最基础的获客方式之一,用户通过微信扫小程序码即可打开小程序。商家可以将小程序码与营销活动相结合,比如发传单、印海报、在店面门口展示易拉宝等,以利益吸引用户主动扫码进入小程序。 2. 线下活动推广 活动推广是营销的重要方式之一。商家可以通过举办一些线下活动来推广自己的小程序,比如在商场、商业街等人流量多的地方举办活动,比如在店面举办「用小程序下单送XXX」等让利活动等。 3. 抢占小程序名称 我们微信搜索是小程序一个很重要的入口,甚至在张小龙的计划中,搜索会成为微信小程序的主要入口,所以这么重要的“地方”我们不能不抢占啊。而且小程序的名

称具有唯一性,一个好用的名字被别人抢注了就没了。所以,尽早注册符合自己的行业、用户习惯、产品特性的小程序很有必要。 4. 小程序名称搜索优化 微信搜索支持关键词模糊匹配与搜索,所以自定义关键字也会影响到小程序的排名,在设置关键词时,可借鉴百度推广的投放技巧,结合微信指数进行考量,确保关键词符合微信使用场景。关键词挑选:地域词、品牌词、人群词、产品词、行业词,且与主营业务相关等。需要注意的是,关键词应尽量选择短词、热词等。建议根据数据反馈每周进行关键词优化。 5. 附近的小程序入口 我们都知道,微信小程序和支付宝小程序都有“附近的小程序”功能,当你的小程序展示在“附近的小程序”的时候,小程序自动展示给 5 公里范围内的所有微信用户。还有,针对线下连锁门店,小程序支持 10 个地理位置展示,你想想看,10个地理位置,每个半径 5 公里,几乎整个城市都有你的小程序。 6. 卡券入口 卡券是微信为线下商家推出的功能之一,在卡券界面中,我们可以点击相应的优惠券、会员卡等进入相应的小程序。人具有贪小便宜的本性,所以我们在推广小程序的时候,不妨多送一些优惠券,以提高转化率。 7. 关联公众号 公众号是最目前常规推广中涨粉最快、最稳定的一种方式。小程序与公众号关联后,小程序可以嵌入公众号自定义菜单中,也可以插入推文中,同时在公众号资料页

微信小程序大全(建议收藏)

微信小程序大全(建议收藏) 怎么找到它们呢?你可以在“发现”里点开最后一行“小程序”,在里面进行搜索。注意: 1、现在搜索功能对模糊搜索的支持不算很好,请严格按照以下列表的名称进行搜索。 2、有写小程序后面还有个“+”号,别忘了一并输入。 3、关于小程序的答疑,我写在最后。【高频使用】美团外卖滴滴公交查询车来了大众点评+京东购物摩拜单车滴滴出行DiDi携程酒店机票火车票 【旅行】驴妈妈门票预订飞常准查航班海南航空微应用南航e行去哪儿出行朋友家精选民宿熊猫签证去哪儿酒店预订【购物】国际品牌价格小小包麻麻好物好药师优选汽车之家Autohome手机查报价有赞精选什么车好微店轻便版Coolbuy玩物志美的官方商城腾讯周边订蛋糕元祖黑天鹅诺心21cake新品有戏应用 【交通】滴滴公交查询车来了租租车出国去哪玩巴士管家知了交通 【健康医疗】姨妈日历美柚APP经期月月记好药师优选孕期提醒APP柚宝宝App药顾问丁香医生 【图片】嗨图MOTIF米田图案壁纸小工具名画滤镜APP今日名画小蚁AI艺术Miatou藏识相册 【工具】我的计算器朝夕日历Pro印象笔记微清单亲戚关系

100房贷助手查地铁Coolbuy玩物志看剧小助手约会来也老板管账掌上探路者生活序列号查查小程序示例解忧室股票灯塔艺术签名助手延迟退休计算器汽车报价库签到打卡实时空气质量自选股高校图书馆查询小小房贷计算器新股申购宝最新汇率查询汇率e二手车e记账e翻译e通勤助手留学公寓助手云梦助眠引导蚂蚁待办蚂蚁微日记窝牛App 【教育培训】小D词典词汇量查询分答快问钢琴优课天天练口语词汇量测试有钱兔择校宝宝微空间一首一首诗人人词典有可能微课蚯蚓课+桔子创投内参感恩笔记本爱弹唱 【快递查询】快递100小助手 【天气查询】智慧气象服务精准天气预报30天天气预报【投资理财】自选股富途牛牛股票微众银行南方基金微理财BP助手FellowPlus创投数据库 【票务】猫眼电影小小票儿电影演出赛事 【阅读】今日头条lite轻芒杂志Qdaily桔子创投内参QQ阅读壹点调查快看漫画段掌柜西窗诗词网易灰评换阅空间360好书推荐历史上的今时心邮口袋书架 【视频】腾讯视频开眼视频Eyepetizer 【美食】下厨房+探城美食APP 【美妆】化妆品点评 【体育】酷竞 【表情包】表情家园斗图表情包神器

微信小程序(安徽省大学生就业服务平台)—网络签约使用指南【模板】

微信小程序(安徽省大学生就业服务平 台)—网络签约使用指南 一、网络签约—协议书签约指南 第一步 毕业生: 1、微信搜索小程序“安徽省大学生就业服务平台”,打开后选择本校并输入“姓名+学号+身份证号”登录(若出现无法登录的情况,请联系辅导员老师解除原来的绑定)。 2、在“我的”中打开“二维码名片”,向用人单位发送二维码,并告知用人单位使用微信扫描“二维码名片”。 备注:在签约前请务必在“派遣”“生源信息维护”确认信息与本人信息完全一致,否则不能签约。

第二步 用人单位: 打开微信,使用扫一扫功能,扫描毕业生提供的二维码名片后,会出现填写签约信息页面;首先验证毕业生信息,确认下一步后,填写本单位基本信息和联系方式,并选择签约毕业生的工作岗位,然后点击“确认签约”后提交。 第三步 辅导员: 登录省就业派遣系统,依次点击“就业派遣”、“就业协议书”、“打印申请登记表”,会出现已经提交的协议书打印申请。 点击学生姓名,进入审核页,点击“审核通过”或“审核不通过”完

成审核。 第四步 毕业生: 正式开学后,待辅导员正式通知后,毕业生自行线下与用人单位

对接,用学校发放的纸质《三方协议》或《劳动合同》、《就业证明函件》进行正式签约。 二、网络签约—协议书解约指南 第一步 毕业生: 登录微信小程序—安徽省大学生就业服务平台,点击“派遣”,进入“解除就业协议申请”,上传解约申请材料(仅需上传与用人单位达成的解约协议图片即可,且用人单位务必盖公章,否则无效)。

第二步 辅导员: 登录省就业派遣系统,点击最上方主菜单“就业派遣”,再点击左下角“解约申请登记表”,点击申请学生姓名,进入审核页,点击“同意毁约”或“不同意毁约”即可。 备注:辅导员审核时,应认真查看毕业生提交的解约申请材料内容是否清晰,且如未盖用人单位公章的材料一律无效,不同意毁约。 第三步 毕业生: 辅导员老师系统同意毁约后,毕业生可重新签约。

微信小程序应用开发具体步骤

微信小程序开发有哪些内容? 微信小程序上面的应用无需下载可以直接使用,这样的简便之处让许多人开始来到微信小程序当中去使用所需求的功能,许多开发者也看到了未来微信小程序的潜在价值,纷纷开发出来应用投入到微信小程序当中去使用,许多个体应用者在刚开始面对微信小程序时是陌生的,那么,具体的开发步骤是怎样的呢? 开发者在微信小程序当中要去申请特定的微信号,然后上传个人信息,这个是需要后台进行审核的,一般需要2-3个工作日,在审核通过了之后,开发者可以通过微信小程序给的链接去下载对应的开发者工具。 在开发者工具当中可以选择个体应用项目开发和订阅号应用项目开发两个类别,找好自己的应用定位,这样才可以让使用者更好的去享受应用带来的功能。需要注意的是,开发者工具在每一次登录的时候都需要通过扫描二维码来完成,因此一定要确保账号的安全。 在开发者工具当中的空白页,开发者可以上传或者编辑代码,以此来生成应用或者应用板块,需要注意的地方是,微信小程序代码编辑过程中,每一个空白面的接口格式要确保一致。 接下来的几年,我想会有越来越多的应用登录到微信小程序当中,无需下载就可以享受应用带来的功能,在给人们带来生活便利的同时,也让越来越多的应用有了走向大众的机会,如果你在开发微信小程序过程中出现问题,可以咨询V 小二微信小程序服务商。

V小二专注于微信小程序开发,微信小程序搭建等业务,为用户提供微信小程序解决方案,公司拥有完善的团队支撑,提供运营、设计、技术等多方面的支持,在微信小程序这个潜藏巨大商机的市场中迅速脱颖而出,已为包含多家公司 企业提供微信服务,搭建小程序累积使用客户数已达到上千万。

搭建微信小程序 HTTPS 服务器,只需三步

搭建微信小程序HTTPS 服务器,只需三步 知晓程序注:微信小程序中,要求所有服务器通讯使用HTTPS 协议的安全连接(即增加SSL 加密)。也就是说,除了按照小程序要求进行数据收发,还要为服务器配置加密证书。这就让不少小程序开发者非常头疼。知晓程序(微信号zxcx0101)今天为大家推荐这篇文章,可以帮助大家快速申请加密证书、配置HTTPS 服务器,并尽快将小程序应用于生产环境中。本篇文章以阿里云为例,展示证书申请、配置等。此方法也可举一反三,应用于其他云服务器中。文| 一斤代码在小程序的生产环境中,如果需要调用服务器的REST API 或WebSocket,服务器必须提供安全的链接地址。也就是说,服务器需要使用SSL 加密数据。因此,我们需要在服务器中配置SSL 加密。第一步:申请服务器与域名许多云服务商的云服务器配置是弹性的,可以根据自己的需要来选择合理的配置,如果你是个初学者为了学习用的话,一开始选择最低配置就行了。当然,如果你有业务需求,也可以选择更高配置的服务器。小程序的网络访问必须使用白名单中的地址,这意味着我们需要一个域名,便于加入微信的域名白名单中。你可以在云服务商直接提供的域名购买服务中购买域名,也可以到域名服务商购买。第二步:申请证书很多国内外机构都提供CA 证书签发认证,国内的如沃

通,国外的如Symantec。很多证书提供商的证书服务价格不菲,根据证书的不同功能,价格也是相差很大,最便宜的也要好几百一年。现在也有免费的证书可以使用,比如Let’s Encrypt。阿里云上也提供了免费的证书,申请起来很方便,我们就来看看怎么申请阿里云里的免费证书。从阿里云的页面顶部菜单「产品与服务」里面,找到「CA 证书服务」。进入页面后,点击页面右上角的「购买证书」按钮,进入证书选择界面。在这里,我们可以选择「免费型DV SSL」证书。需要注意的是,申请一个这样的证书,只能对一个明细域名生效。也就是说,如果你有几个子域名,你需要分别为它们申请不同的证书。购买完成后,可以在你购买的订单列表里点击「补全信息」,输入域名和个人信息等,提交给签发机构审核。审核完成后,你的邮箱里会收到一封配置指导邮件。之后,你就可以在订单列表中下载到证书文件了。证书文件里包含了一些适合Apache、Nginx、IIS 等不同HTTP 服务器可用的证书,这些都可以用于配置服务器的SSL 加密。第三步:在服务器中配置证书由于我在服务器上安装的是CentOS 和Nginx,所以以下指令都是以CentOS 为例。首先,通过yum安装Nginx。yum install nginx接下来,把服务器证书上传到服务器上,并配置nginx.conf文件(在 /etc/nginx目录下),使其支持HTTPS 协议。server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2

微信小程序设计指南

概要 基于微信小程序轻快的特点,我们拟定了小程序界面设计指南和建议。设计指南建立在充分尊重用户知情权与操作权的基础之上。旨在微信生态体系内,建立友好、高效、一致的用户体验,同时最大程度适应和支持不同需求,实现用户与小程序服务方的共赢。 友好礼貌 为了避免用户在微信中使用小程序服务时,注意力被周围复杂环境干扰,小程序在设计时应该注意减少无关的设计元素对用户目标的干扰,礼貌地向用户展示程序提供的服务,友好地引导用户进行操作。 重点突出 每个页面都应有明确的重点,以便于用户每进入一个新页面的时候都能快速地理解页面内容。在确定了重点的前提下,应尽量避免页面上出现其它与用户的决策和操作无关的干扰因素。 反例示意 此页面的主题是查询,却添加了诸多与查询不相关的业务入口,与用户的目标无关,易造成用户的迷失。

纠正示意 去掉任何与用户目标不相关的内容,明确页面主题,在技术和页面控件允许的前提下提供有助于用户决策和操作的帮助内容,比如最近搜索词等。 反例示意 操作没有主次,让用户无从选择。

纠正示意 首先要避免并列过多操作让用户选择,在不得不并列多个操作时,需区分操作主次,减轻用户的选择难度。 流程明确 为了让用户顺畅地使用页面,在用户进行某一个操作流程时,应避免出现用户目标流程之外的内容而打断用户。

反例示意 用户本打算进行搜索,在进入页面时却被突如其来的模态抽奖框所打断;对于抽奖没有兴趣的用户是非常不友好的干扰;而即便有部分用户确实被“诱人”的抽奖活动所吸引,离开主流程去抽奖之后可能就遗忘了原本的目标,进而失去了对产品真正价值的利用和认识。 清晰明确 一旦用户进入我们的小程序页面,我们就有责任和义务清晰明确地告知用户身在何处、又可以往何处去,确保用户在页面中游刃有余地穿梭而不迷路,这样才能为用户提供安全且愉悦的使用体验。 导航明确,来去自如 导航是确保用户在网页中浏览跳转时不迷路的最关键因素。导航需要告诉用户,当前在哪,可以去哪,如何回去等问题。首先在微信系统内的所有小程序的全部页面,均会自带有微信提供的导航栏,统一解决当前在哪,如何回去的问题。在微信层级导航保持体验一致,有助于用户在微信

相关文档
最新文档