精华内容
下载资源
问答
  • 同学们大家好,我是小伊同学,前面我们已经做好了小程序的页面,在开发好了后端的接口之后,我们就需要对前后进行联通,而在云开发下,这部分内容就是我们今天将要一起学习的——小程序端如何调用云函数。...

    同学们大家好,我是小伊同学,前面我们已经做好了小程序的页面,在开发好了后端的接口之后,我们就需要对前后端进行联通,而在云开发下,这部分内容就是我们今天将要一起学习的——小程序端如何调用云函数。

     

     

     

      在微信小程序中,我们使用wx.request这个API来发送http请求,但对于云开发而言,我们的接口都是云函数,这时我们就需要使用wx.cloud.callFunction这个API来调用云函数。

     

     

     

      wx.cloud.callFunction和第四章我们讲到的API的语法和格式规范一致,使用的基本格式为:花括号中需要填写name属性,属性值为要调用的云函数名称,为必填项。data字段用于填写我们发给服务器的数据,我们可以在花括号中定义我们要发送的变量名称及其值,可以有多条,使用逗号分隔。当然如果我们没有数据要传,这里也可以为空或者不写data这部分。

     

      其次是success,fail和complete这三个回调函数,他们将分别在api请求成功、失败和完成时执行内部的逻辑。唯一不同的是,这里在success函数中,我们拿到的函数参数中将含有服务器发送给我们的数据,例如这里回调参数为res,那么我们通过res.data就能够访问到服务器返回的数据。这里的数据是指整体数据区,如果服务器返回了电话号码phonnumber字段,那么我们的写法应该是res.data.phonnumber。

     

     

     

      下面我们具体根据某个接口的接口文档填写一个调用云函数api的示例。以登录接口为例,我们拿到的接口文档如左边的表格所示,这里的返回数据我们暂时不考虑,下面我们将它填写到api中,我们将函数名称直接复制过来,复制到name中。然后我们看到输入数据有三个,分别是avatarUrl、gender和nickName,我们在data中进行定义并给定值。最后,我们需要说明一下success和fail函数。大家需要明白两个概念,一个是api调用成功和失败,另一个是服务器请求成功和失败。

     

      一般,我们看实际的接口文档,在返回数据中,会有关于错误的说明,通常会通过一个数字类型错误码来标识,这个错误码是干什么的呢?就是让前端知道,比如提交的信息不全或者信息比对不一致等等,以便于我们对用户进行提示。对于这类错误,实际上我们请求api是成功的,意思是说我已经成功访问到服务器了,但是服务器请求失败了,因为服务器经过判断发现信息不正确或者不能跟微信服务器获取信息从而导致这个函数并未按照预期方式执行成功。

     

      因此,这里就会产生两种成功和失败。我们这里的success和fail是指云函数调用的成功和失败,也就是是否成功访问到服务器,在成功访问的前提下,服务器验证和后会告诉我登录成功还是失败,这是该接口功能是否如期完成的成功和失败,也可以说是业务层面的成功和失败,如果成功一般错误码是0,如果失败会给出失败信息。因此我们必须在success函数中判断服务器返回的错误码,以对服务器请求成功和失败分别进行处理。

     

      我们可以通过调用云函数来和服务器进行数据交换,从而完成小程序的各个功能。学习完这部分内容之后,同学们就可以真正具备开发一个小程序的能力了。在前后端打通之后,同学们同样不要忘记按照之前讲过的方法将代码发布上传哦~

     

      本节的内容就是这些,如果大家有什么问题,欢迎在文末留言。

     

    想看视频版?

    关公号“微程序学堂”,我们的视频教程即将上线

     

    如果你自己写了好文章想投稿

    请联系我们

     

    展开全文
  • 阿里小程序的一云多端 相信绝大部分同学知道阿里一云多端的项目,最早始于19年三月份在北京云栖大会上,阿里云的CEO在云栖大会上对外发布了一云多端的项目。 一云多端什么? 大家今天常见都是微信小程序,微信...

    专家介绍

    视频回放

    https://yq.aliyun.com/live/1097

    阿里小程序的一云多端

    相信绝大部分同学知道阿里一云多端的项目,最早始于19年三月份在北京云栖大会上,阿里云的CEO在云栖大会上对外发布了一云多端的项目。

    一云多端是什么?

    大家今天常见都是微信小程序,微信小程序实际上是一个变化的体系,在它上面开发一个小程序,只能在微信上跑。是不是可以有另外一种方式,能不能开发一个小程序,比如:我写了前端代码,既能在微信上跑,也能在支付宝、高德、头条、百度、哪里都能跑。

    这样对研发同学的成本要低很多,这就是多端的概念。

    相比较我们App的生态体系,微信其实类似于iOS,他自己自成了一个闭环。

    阿里巴巴想做的事情就是我们希望类似于 Android 这样一个开放联盟,能形成整个除了阿里内部,包括阿里生态公司,包括外部的一些公司,都能共用整个小程序的一个框架,共用小程序的一个体系,这是当时对外宣称要做一云多端目的。

    一云指的是什么呢?

    一云指的是:给大家举个例子,我们今天在做微信的小程序,我们都知道他的ID里其实是有自己的云服务的,那我们在做支付宝小程序的时候,大家也会感知到它其实也是一个闭环。

    那我们从业务的视角来看,比如:我作为星巴克的开发者,我肯定希望我后端的服务都供用在我自己的服务里,让所有的端都能供链到我这里,这才是对业务来讲价值最大、最好的一个点。这就是阿里巴巴想强调的一云,通过我们这样整体的云,来支持我们这样所有的端。

    这是一个大的背景,具体我们来看一下,微信小程序大概在2016年开始做,差不多历时了三年才有了今天我们看到的小程序这样一个繁荣的生态,真正让大家感知到这样一个风口差不多是在18年,大概是跳一跳那个小程序开始火起来以后,大家才感知到小程序原来可以这么玩,越来越多这样的玩家入驻了。

    截止到2018年底,全网的小程序已经超过了200万,整个小程序的开发其实呈现出井喷的现状。

    200万是什么概念呢?

    现场有多少同学知道,当前iOS系统中的 App Store,它里面有多少应用?

    据我了解的一个数据 ,18年的时候,整个 App Store 里也才230万个 App 应用。大家看小程序这个行业,才经历了两三年基本已经到了我们这样一个量级,根据我们现在了解的一些调研报告的数据,2019年可能预计会到500万的量级,今年还会有一个很快速增长的过程。

    整个微信小程序活跃用户的增长量其实是趋于平缓的,获客成本其实是逐渐逐渐的高起,整个发展的核心已经由传统意义上的拉新到现在更多的是运营。

    微信小程序的活跃用户现在已经有7亿多,整个微信App,活跃用户也才10亿到11亿左右,它的天花板其实已经很低了,随时就可以触碰到,在这种背景下,我们作为一个开发者,作为一个企业,其实是希望能够有更多其他平台的拥抱 ,我们可以通过其他的渠道来获取到我们这样的流量。

    阿里巴巴正在做的事情是:会全面的拥抱小程序,为小程序提供全面的技术、业务、生态的支持,能够帮助我们的企业在未来的云生态里面走的更远。

    下面这张图,是我们刚才介绍的数据:

    左边的数据是我们小程序的增长量,17年数据是100多万,到18年已经200多万了,按照我们现在预测的数据,到了2019年可能有四五百万,基本上是每年翻倍的节奏。

    右边的数据是全网小程序用户数的规模,大概分布情况是:支付宝大概是四五亿,微信大概是七亿左右,百度大概是两三亿,加在一起应该有十几亿的数据。后续随着越来越多大平台的参与 ,小程序的用户规模也会越来越大的。

    具体到阿里巴巴,我们有一些面向场景主流的端,比如:我们面向电商购物场景的淘宝,面向出行领域的高德,面向我们金融和本地生活的支付宝,面向这种企业服务这块的钉钉,这些端都会全面的拥抱小程序。

    具体这些端后面会做什么,接下来几位讲师会和大家详细分享,我们在不同端里,小程序具体是什么样的玩法?会给我们的开发者提供什么样的业务能力?我在这里就不做太多的介绍了。

    对于个人开发者,对于企业而言,当前阿里在做的一云多端对我们来讲有什么价值,对我们来讲有什么样的机会,我们可以看一下这张图。

    我们传统意义上讲,大家其实都知道小程序,大家能感知到的就是微信,因为只有这样一个声音,后续我们期望能让大家知道小程序不只等于微信小程序, 阿里其实也会有相应的能力。除了阿里以外,大家已经知道的,像今日头条,像百度也都陆陆续续加入了小程序战场,后续小程序真的不等于就是微信小程序了,全网主流平台都会去做支持。

    其次我们传统意义上,小程序在微信覆盖的用户群体,覆盖的场景以社交场景为主,后续随着更多的App和场景的加入,我们的小程序基本上可以覆盖全场景,不仅仅是当前的社交 ,我们有支付场景、有金融场景、有出行场景、有企业服务场景,有越来越多的场景。随着阿里小程序战略的演进,后续会把阿里小程序的开发框架、开发标准对外开放,除了阿里内部小程序能用以外,整个阿里系的一些App,比如:像微博等一些App都可以直接运行阿里的小程序。再往后会把开发框架开放给企业自己的App,可以真正的做到一个小程序在全网都能跑,能支持全网的用户覆盖。

    基于这样的背景,现在这样流量红利,如果我们不仅仅看微信的话,流量红利其实又有一波已经进来了,不仅仅是微信平台,现在全网已经有十几个小程序的平台在加入到战场,整体的活跃用户现在已经能突破十亿以上,这种小程序的入口其实也很多。

    从场景上来说:除了像微信社交场景以外,电商的LBS、搜索、内容,能覆盖的场景也是会越来越多的。

    对企业而言,对个人开发者而言,价值在于:现在中国这个人口红利已经逐渐的消失了,如果自己做一个App,获客成本其实已经很高了,即使是微信小程序做了这么长时间,微信小程序的获客成本也是越来越高。

    我们如何来降低获客成本,一个比较好的方式就是借助不同App平台,通过不同的小程序平台来获取我们的流量扶持,能够通过低成本的方式来获取我们的客户,这是一个我们价值点所在。

    不同的这个App有不同的业务能力,比如:高德,大家更多的就是用它的LBS能力,我们可以获得位置,出行数据等等,可能这些能力你在微信里是获取不到的,每个不同的开发者,所面向的场景是不一样的,所要的业务能力也是会有比较大的差异的。如果可以借助平台的这个业务的赋能,让业务场景能够快速的扩展,这对大家来讲是一个比较好的机会。

    从阿里本身的经济体而言,其实会给不同的开发者提供业务的赋能,比如:一些API的能力,地图的API、商家的API、风控的API、支付的API,我相信大部分的开发者可能更多的都是奔着更好用的业务能力来的。

    对企业大的战略而言,也有几个比较好的点。一个点是前面说的,微信小程序的获客成本已经逐渐提高了,其他一些平台属于刚起步的阶段,流量其实相对来讲还属于比较充沛。如果能抓住这样的机会,能早一点进去,流量的获客成本相对比较低的,业务的扶持也能让自身的小程序,自身的业务有快速的发展。

    通常情况下,大家都知道,鸡蛋不要放在一个篮子里,因为放在一个篮子里风险是比较高的,如果我们把所有的业务全部承载在微信的小程序里,万一微信的小程序开发的规则以及的业务变化,实际上对大家自身的业务影响是很大的,甚至是致命的影响。多元发展其实是所有开发者,所有企业都必须考虑这样的点,今天刚好也确实是有这样的机会。

    多端小程序的价值

    多端小程序对大家到底有哪些核心的价值?

    第一个是场景,在于我们传统意义上讲微信,更多的是我们有人际关系的关系链在微信上,其他的场景,比如:我是做汽配相关的,这时候我在微信上很难获取到适合的用户群体。

    我不知道大家有没有看过一份数据:现在支付宝、微信、百度的小程序的留存率,从数据上看,支付宝的小程序留存率是最高的,为什么呢?原因在于支付宝是一个场景化的App,它主要面向的是一个支付的场景和本地生活化的场景,大家用这个App的时候其实就是它的目标用户群体,基于这个场景来开发App,其实就很容易获客,如果我们的业务其实做的还ok的话,这批用户的留存和后续的转化其实是很高的。

    第二个是流量的价值,流量的价值在于由单一的微信生态流量逐渐转变为全网的流量,因为我们有越来越多的App加入到小程序的战场。除此之外,像阿里内部的高德、钉钉、淘宝是有大量的企业能力,大量的设备能力的数据在里面,通过这些能够帮助大家更好的获取流量。

    第三个是业务,相比较其他的平台,阿里的一个很大的优势在于相对的业务能力板块是比较全的,金融支付能力、企业的服务能力、物流能力,一系列的能力都可以帮助大家来做赋能,让大家更好更快的开发自己的业务。

    第四个是用户粘性,之前数据也举例了,大家通过单一渠道来获取以及通过社交渠道来获取的流量,相对来讲粘性是比较差的,因为它使用的场景是面向我们当前社交的,我们跟朋友的聊天,不大会关注其他的场景,可能也有一定的转化,但这个转化率一定是不高的。如果是奔着特定场景的,相对来讲这个粘性要高很多。

    第五个是成本,一个产品它的生命周期如果从刚起步到成熟到后续的衰落,那么微信当前就处于偏成熟的阶段,这时候大家认知的很多,使用的人也很多,很多人去抢那一点流量,成本逐渐越来越高,如果有一个新的战场,一片新的领域,大家能早一点有机会进去,这个时候获客成本其实是很低的。

    第六个是品牌的效应,我们可以让整个小程序的品牌,能够更好的扩展,能做到所有人都能够共知的状况。

    前面介绍的是小程序的背景,对当前的机会所在,具体到阿里小程序,这张图就是阿里产品的能力大图,对应的小程序解决方案,从最底下看是我们阿里经济体的能力的输出,后续大家通过我们的阿里小程序云,可以获取到阿里内部的所有这些业务能力,支付宝的能力、钉钉、高德、淘宝所有的能力都会通过小程序云来对外进行透出。

    小程序云本身它会提供哪些能力呢?

    小程序云里包含两个部分:

    第一部分是云应用,云应用来帮助大家来做线上的资源编排和应用拓广,比如:作为一个开发者,我们可能有自己的后端服务,后端服务可能想自己去做部署,部署是有成本的,可能首先要去买ECS、买服务器、买数据库、买IDS、还得买流量、买官网IP,买好了一系列的原子的原产品,接下来要做的事情就是把环境给打好,具备一个网络环境,具备可访问的环境,有了可访问的环境,接下来还得想怎么去做部署,做更新,云应用核心所解决的就是以上事情。

    第二部分是云开发,云开发简单地讲它是一个Serverless 的套件,云开发不仅仅是面向开发者,在开发者的领域会提供函数计算的能力、存储能力、数据库的能力,同时也会面向运营测,会提供你当前小程序端测的数据统计分析,提供对应的用户反馈的能力,接下来还有类似做运营提供图片设计的在线能力,这些能力都会通过 Serverless 的套件对外透出。

    具体到业务会更多,阿里经济体大家想核心想使用的业务能力,比如:云视频、内容安全能力等都会通过当前的 Serverless 的套件对外透出。另一个是小程序云的整体价值,前面强调的一云多端的一云目的是什么,一云并不是希望大家都把数据统一的放在阿里云上,一云的核心对客户支撑的价值在于我们把所有的资源都聚拢在一起,而不是面向不同的场景,来提供不同的后端服务。这样是一种极大效率的降低。那另外一个是期望大家数据能统一,有了数据以后,我们才好有后续基于数据的运营,基于数据的业务分析和扩展,这是我们希望做到一云的效果,通过一朵云来支持整个小程序业务的发展,支持企业,支持我们个人开发者业务的发展。

    如何能做到一云多端?

    中间有两层是比较关键的点, 在小程序云上面大家可以看到有一个本地开发者的IDE,开发者的IDE里核心提供了两部分的能力,一部分是本地的开发环境,是大家基于这个IDE可以完成全网小程序的这个开发,构建,调试的能力。第二部分是云服务的套件,我们所希望使用的云能力都会通过IDE透出,通过IDE直接进行使用。

    我们如何能做到多端?

    多端核心是不同的端得有统一的标准,我们就会在这一块给大家提供一整套端的开发标准,我们的组件、API的接口定义、DSL、埋点规范、跨端的开发框架、小程序的运行环境,这些能力如果都提供了,都统一了,大家完全可以只要做一次前端,全网都可以跑。我们当前的规划是第一步把阿里内部所有的APP针对小程序的标准统一,第二步会支持整个阿里系的、阿里生态的企业的APP;第三步是向全网提供对应的小程序框架。

    云应用有哪些能力?

    云应用核心是期望帮助大家后端有应用状态下的运维部署的成本。对应到这张图我们可以看到,最底层大家公用的其实都是阿里云的ECS,RDS,如果服务多,还有SLB,公网的出口IP,都基于最底层的s层资源来帮助大家来做后端应用的运维交互。

    第一部分是资源编排能力,资源编排是你买了一堆原子的能力,基于这些能力帮你搭建一个可用的网络环境,里面包括又两个部分,第一部分是如何进行统一的资源购买,第二部分是如何快速搭建能够直接在公网使用的网络环境。

    第二部分是应用托管。我们不管去支付宝还是微信,开发平台里都会要求配一个域名地址、一个白名单,域名地址都是要求htps的方式,服务一定得有证书,那证书该怎么管?很多做小程序开发的同学可能更偏向这种,前端的同学可能对整个后端的网络环境,证书管理不是很擅长,我们就帮大家把这些事情都做掉。我们现在已经有的一些能力,比如:证书的管理,运行环境的托管、应用的扩展,这些能力当前是已经有的,后续还会扩展,比如:大家要去申请域名,做域名的备案,这些事情我们都会在平台里一次性帮大家落地。

    第三部分是发布管理。有了应用托管的环境,接下来就是如何发布。最简单的方式,大家在本地,在IDE构建产出一个包,直接帮你上传就OK了,这是云应用想做到的事情,帮大家来做对应的发布包的管理,来对应的应用部署。之所以能做这样事情在于我们提供了标准的应用的运行环境。比如:大家写一个工程,可能需要的是JDK,有可能也要 tompad,整个运行环境如何搭建,我们帮你做;如果你还有多节点,前面和 SLB 等相应的配置,全部都帮大家弄好了。对大家来讲,核心要做的事情是在本地构建产出一个可部署的包,然后通过我们端层的IDE,通过云上的 Console 入口直接把你的发布包上传,上传以后就可以自动给你做部署和运行,起来以后大家直接访问就可以了。

    第四部分是运维监控。部署完之后是后续的运维能力,当前这个机器的负载是怎么样的,CPU水位高不高,内存消耗的大不大等这些监控我们都可以通过平台一站式完成。基本上云应用帮助大家做完了在后端应用的交互部署运维的完整链路。平台面向的场景比较多,一方面是专门做小程序开发的三方的软件公司,另一方面体量大一点的是个人开发者,也适合使用我们的平台,还有创业公司在业务早期也适合通过这种方式来降低整体的成本。

    云开发它的核心是一个 Serverless 套件,套件里面都用过微信里面的开发者工具,里面其实是有云开发的能力的,它的云开发能力是对应到我们开发套件这里,我们是面向开发者的套件,里面会有对应的云函数、云数据库、存储等能力,这些能力在微信里大家看到了,比如:有应用管理的入口,这里的数据是微信端的数据采集上报,对应到阿里云开发,不仅仅可以把当前的微信用户数上报,同样也会支持把支付宝、钉钉、高德、头条等其他的端侧的小程序用户数据上报,真正实现在同一朵云里进行所有的数据管理。

    第二部分会提供一系列的运营能力,除了要开发一个小程序,小程序上线以后,还是需要关心当前小程序到底有没有用户、用户访问的高峰在哪里、用户如果有问题怎样把他的问题反馈给我。比如:创业公司很想做一些活动,做一些图片设计,这些能力我们如何在当前的平台里实现,针对这种场景会提供一系列的运营套件来满足大家在运营场景的诉求。

    后面大家更关心的业务能力。阿里其实有形形色色的不同的能力,支付的能力、出行数据的能力、电商订单的能力等等系一列能力,我们都会通过业务套件这部分来透出。这里我列了几个,比如:音视频、图片鉴黄等能力,都是可以通过当前的 Serverless 套件简单的获取。有同学会问:在这里获取和直接使用有什么区别?我们希望通过云开发来给大家提供这些业务能力,原因是云开发是会给大家在小程序场景下做比较多的适配,通过提供这种端侧的JS、SDK来面向主流的小程序的场景,能让大家做到一次开发,多端的运行。

    举个简单的例子,在支付宝里想上传图片,用了这个端侧的SDK可能就写比如:阿里云. Upload文件就上去了,对应微信小程序也是一样的逻辑,在前端写一个阿里云.upload文件就上去了。不需要在微信里面通过一个代码逻辑,但是在支付宝又换了一个逻辑,不仅仅是我们不期望的,开发者同学也不期望面向不同的场景需要重复写一堆适配的代码,意义并不大。下面已经列出一些会陆续提供给大家的业务能力,地图API、支付API,等等一系列的能力,都会通过小程序的体系对外进行透出。

    除了提供云的能力以外,还会给开发者提供一整套的开发者工具链。大部分同学可能是偏前端的,大家在做小程序开发的时候都是会在本地,希望在IDE里能够一站式的完成所有的事情,我们IDE里就会包含很多能力,前面几个产品的时间点也给大家同步下,云应用第一个版本4月份已经上线了,接下来6月份会有新版本上线。前面提到的云开发的第一个版本应该在6月下旬就会推出,对应的IDE时间点也给大家同步,差不多会在7月初会有阿里小程序的IDE。

    阿里小程序IDE对大家来讲有什么价值呢?

    第一个部分是研发工具。可以通过阿里小程序的IDE可以做到一次开发可以生成符合各个平台运行的小程序。为什么能做到这一点,在于阿里小程序IDE里有一个内容叫跨端开发框架,是通过跨端开发框架,比如:写vue的语言,写完了一次,想发布到支付宝怎么办?去编译一个支付宝的安装包,上传到支付宝的开发平台就可以了。同理,想发布到微信上,同样的一份云代码,只需要做一次编译就可以了,成本会低很多。除此之外,工具链的能量,有跨端开发框架、有对应的语法的提示等,会提供一整套的模板库来帮助大家降低开发成本,还提供了插件扩展能力,让大家做自己想要的能力。

    第二个部分是调试工具。支持断点、支持性能分析、多端的模拟,还有类似的日志系统,让大家能看到整个过程的日志,帮助大家定位错误。

    第三部分是云端一体的能力。把后端云的能力通过IDE的入口来实现在本地可以一键发布,在本地做统计分析等一系列的事情。

    阿里内部的APP绝大部分我们定义成超级APP,超级APP超级在哪里?它跟普通的APP有什么不一样?超级APP里面其实是有个宿主概念,宿主本身会提供通用的基础的能力,比如:系统原生的网络能力、业务能力等,这些能力都会通过宿主APP来提供。另外一方面,在宿主APP上面会提供一系列的容器,比如:小程序渲染引擎,在 Native 里可能会有页面框架、组件框架等管理的能力。在前端写H5页面,会有阿里内部的 WEEX 开发框架等等。为什么要有这样的东西,有了这样的东西后大家就可以很好的扩展。假如把容器都开放出去,在业务场景下有自己的APP,你也有了这一整套的容器后,这时候来做小程序,不仅可以放在阿里的APP里,可以在支付宝上能跑,也能在自己APP里跑,这是当前超级APP的一个价值点。

    通过这个可以感知到,可以通过容器的标准来实现大家业务的真正统一。统一还分几种场景:一种场景是面向B端的场景,有一个很典型的APP-钉钉,钉钉是很典型的面向企业服务的,自己做了内部审批工作流,公司内部也有日常工作的APP,这时候你的审批工作流既可以在钉钉里跑,也可以在内部办公APP里跑,价值是很明显的放大的。另一种场景是对于外部的场景投放,也是类似的。比如:星巴克APP,自己做了下单的功能,这个功能不仅仅可以直接在自己的APP里跑,也能在淘宝、支付宝等其他的APP里跑。这是一整套的小程序渲染引擎所提供的核心价值。

    前面介绍的是大家可以感知出来,提供云的能力、端侧统一的IDE、跨端框架的能力,会提供后续的小程序渲染引擎的能力。基于一些能力的组合可以覆盖小程序开发过程中绝大部分的场景。

    繁星计划包含哪些能力?

    繁星计划在云栖社区有一个入口,里面有小程序能力的展示,截图就是针对当前繁星计划后续给大家提供的一些扶持计划。

    第一个部分是云资源扶持。云资源的扶持会跟着云应用的产品功能迭代的节奏来推出的,比如:现在已经推出的后付费的零元购的内容,接下来还会推出预付费的零元购,帮助大家免费使用云应用的能力;其他场景的资源补贴也会随着产品计划逐渐对外推出。

    第二部分是流量扶持。比如:端侧流量的扶持,流量扶持里有个概念,叫做超星计划。会筛选出很典型的有创新意义的小程序,这些小程序在支付宝、、钉钉、高德等不同的场景里入驻的时候,会帮助去争取流量的扶持,让你有更多的机会进行透出,让更多的用户感知到你的小程序,除此之外还会有其他一整套的流量计划。

    第三部分说是创业补贴。一个创业公司,刚起步连工位都没有,想去园区里找个工位。如果通过繁星计划就可以获取到一些资源,你可能真的就不需要工位了,我们提供给你,你的团队就可以直接过来进行小程序的开发。除此之外,你做的比较好,接下来想找融资的计划,可能大家对投资融资领域不熟悉,阿里有一整套的团队、体系来帮助大家降低成本。

    第四部分是培训认证大赛。大赛我们现在已经在筹备,后续通过小程序大赛的方式来筛选出比较典型的有创新意义的小程序,帮助它做一些后续的推广、相应的扶持。

    以上基本上就是整体的繁星计划所涉及的大方向的点,大家现在感知不到整体的全貌,原因是现在整体的产品运营还没有上线,整体的繁星计划的内容还没有完全明确出来,大概会在7、8月份左右会把整体的繁星计划后续的规划点跟大家同步,也方便大家申请相应的资源。


    原文链接
    本文为云栖社区原创内容,未经允许不得转载。

    展开全文
  • [node.js]PC微信小程序包解密

    千次阅读 2020-12-12 00:21:34
    微信小程序在PC是加密存储的,如果直接打开是看不到什么有用的信息的,需要经过解密才可以看到包内具体的内容。本文使用nodejs实现解密算法,主要涉及到crypto, commander, chalk三个包的使用。 小程序的源码在...

    原来发布在掘金,搬过来好了。

    微信小程序在PC端是加密存储的,如果直接打开是看不到什么有用的信息的,需要经过解密才可以看到包内具体的内容。本文使用nodejs实现解密算法,主要涉及到crypto, commander, chalk三个包的使用。

    小程序的源码在哪里

    PC端打开过的小程序会被缓存到本地微信文件的默认保存位置,可以通过微信PC端=>更多=>设置查看:

    进入默认保存位置下的/WeChat Files/WeChat Files/Applet文件夹,可以看到该目录下有一系列前缀为wx的文件(文件名其实是小程序的appid),这些就是我们打开过的小程序啦:

    进入其中某个小程序的文件夹,我们可以看到一个名字为一串数字的文件夹。点进这个文件夹, 就可以看到一个__APP__.wxapkg文件,也就是小程序对应的代码啦:

    然而,当我们打开这个文件之后却发现是这样的:

    WTF 这能看出来个🔨。很明显,这个文件是经过加密的,需要解密才能看到我们想看到的东西。

     

    PC端小程序是怎么被加密的

    这里参考了一位大佬用Go语言写的PC端wxapkg解密代码。整理一下的话,加密流程是这样的:

    首先将明文代码在第1024字节处一分为二,前半部分使用CBC模式的AES加密,后半部分则直接进行异或。最后,将加密后的两节拼接起来,并在最前边写入固定的字符串:"V1MMWX"。

    所以,我们打开__APP__.wxapkg文件看到的就是加密后的代码,如果想还原回去的话,需要从后往前逐步推回去。

     

    解密思路

    预处理

    我们使用node.js去写一个解码的程序。根据上边加密的流程,我们首先读取加密文件,把前6个字节的固定字符串去除。由于AES加密和异或前后数据的位数是相同的,我们可以据此获取到加密后的头部1024字节和加密后的尾部部分:

    const fs = require('fs').promises;
    ...
    
    const buf = await fs.readFile(pkgsrc); // 读取原始Buffer
    const bufHead = buf.slice(6, 1024 + 6);
    const bufTail = buf.slice(1024 + 6);
    

    加密后的头部部分

    为了得到这1024个字节的明文,我们需要知道AES加密的初始向量iv,以及一个32位的密钥。已知16字节的初始向量iv是字符串:“the iv: 16 bytes”,我们接下来需要计算出这个由pbkdf2算法导出的32位的密钥。

    pbkdf2(Password-Based Key Derivation Function)是一个用来生成密钥的函数,它使用一个伪随机函数,将原文密码和salt作为输入,通过不断的迭代得到密钥。在crypto库中,pbkdf2函数是这样的:

    const crypto = require('crypto');
    ...
    
    crypto.pbkdf2(password, salt, iterations, keylen, digest, callback)

     

    其中参数分别是:原文密码、盐值、迭代次数、密钥长度、散列算法、回调函数。已知salt是"saltiest",原文密码为微信小程序的id(也就是wx开头的那个文件夹名),迭代次数为1000,散列算法为sha1。因此,我们可以写出计算密钥的代码:

    crypto.pbkdf2(wxid, salt, 1000, 32, 'sha1', (err, dk) => {
        if (err) {
            // 错误
        }
        // dk即为计算得到的密钥
    })

     

    密钥和初始向量iv都有了之后,我们可以开始对密文进行解密了。AES加密算法是一种非对称加密算法,它的密钥分成公开的公钥和只有自己知道的私钥,任何人都可以使用公钥进行加密,但是只有持有私钥的人解密得到明文。

    小程序使用的加密算法是CBC(Cipher Block Chaining, 密码分组链接)模式的AES,也就是它在加密的时候,首先把明文进行分块,然后将每一块与前一块加密后的密文进行异或,再使用公钥进行加密,得到每一块的密文。对于第一块明文,由于它不存在前一块明文,因此它会与初始向量iv进行异或,再进行公钥加密。在实现的时候,我们只需要调用crypto提供的解密函数就可以啦。

    我们知道,AES算法根据密钥长度的不同有AES128, AES192和AES256。回顾上边,我们的密钥是32字节,也就是256位的,因此显然我们应该使用的是AES256。综上,我们可以写出来解密的代码:

    const decipher = crypto.createDecipheriv('aes-256-cbc', dk, iv);
    const originalHead = Buffer.alloc(1024, decipher.update(bufHead));

     

    其中originalHead就是我们要的前1024字节的明文啦。我们可以打印出来看看:

    嗯…… 有那么点意思了。

    加密后的尾部部分

    这一部分就很简单啦。由于异或运算是具有自反性的,因此只需要简单的判断一下小程序id的位数获得异或的xorKey,再把它与密文进行异或,就可以得到原文了:

    const xorKey = wxid.length < 2 ? 0x66 : wxid.charCodeAt(wxid.length - 2);
    const tail = [];
    for(let i = 0; i < bufTail.length; ++i){
        tail.push(xorKey ^ bufTail[i]);
    }
    const originalTail = Buffer.from(tail);

     

    将头部部分的明文与尾部部分的明文进行拼接,再以二进制形式写入文件,就可以得到最终的明文啦。

     

    再漂亮点

    根据上边的描述,我们可以把我们整个的解密过程封装成一个黑盒子:

    commander

    我们可以使用commander库让程序直接从命令行读取小程序的id和密文包。commander是一个nodejs命令行界面的解决方案,可以很方便的定义自己的cli命令。比如说对于下面这一串代码:

     

    const program = require('commander');
    ...
    program
        .command('decry <wxid> <src> [dst]')
        .description('解码PC端微信小程序包')
        .action((wxid, src, dst) => {
            wxmd(wxid, src, dst);
        })
    
    program.version('1.0.0')
        .usage("decry <wxid> <src> [dst]")
        .parse(process.argv);

     

    我定义了一个"decry <wxid> <src> [dst]"的命令,其中尖括号代表必选参数,方括号代表可选参数。description内是关于这个命令的描述文本,action则是执行这段命令。在控制台使用node执行代码之后,可以看到如下界面:

    于是我们就可以根据提示,输入参数进行解密啦。commander.js的中文文档在这里

    chalk

    为了让我们的控制台多一抹颜色,我们可以使用chalk.js来美化输出。chalk的基本用法也比较简单:

    const chalk = require('chalk');
    ...
    
    console.log(chalk.green('绿了'))

    这样我们就可以在黑白的控制台上填上一抹绿色,替大熊猫实现梦想:

    除此之外,我们还可以使用es6的字符串标签模板更方便的使用chalk。具体的参考chalk官方文档吧。

     

    源代码

    代码发布到github和gitee啦,可以给大家参考一下下~

    github点这里, gitee点这里

     

     

    展开全文
  • 微信小程序开发【前端+后端(java)】

    万次阅读 多人点赞 2018-07-13 22:19:46
    现在微信小程序越来越火了,相信不少人都通过各种途径学习过微信小程序或者尝试开发,作者就是曾经由于兴趣了解开发过微信小程序,最终自己的毕业设计也是开发一个微信小程序。所以现在用这篇博客记录我之前开发的...
    1. 前言
      现在微信小程序越来越火了,相信不少人都通过各种途径学习过微信小程序或者尝试开发,作者就是曾经由于兴趣了解开发过微信小程序,最终自己的毕业设计也是开发一个微信小程序。所以现在用这篇博客记录我之前开发的一些经验和一些心得吧。

    2. 主要内容
      springboot后端架构构建
      小程序项目构建
      小程序api调用
      后台resetful接口编写
      小程序调用后台接口
      免费的https申请
      linux下部署上线

    3. 微信小程序项目构建
      这些基础的东西我就不过多介绍,大家在刚开始开发的时候一般都没有自己的服务器及域名,所以大家在本地编写的时候,在“详细”下的“项目设置”里面将“不校验域名安全性”勾选。这里写图片描述
      至于微信小程序的组件,即前端页面的开发希望大家耐住寂寞认真在微信开发平台上,组件https://developers.weixin.qq.com/miniprogram/dev/component/及api:https://developers.weixin.qq.com/miniprogram/dev/api/

    4. 后端详解
      我在后端编写主要是用java,当然对其他开发语言熟悉的也可以使用其他语言开发后端。现在我就java编写后端api的讲解。主要框架springboot,开发工具myeclipse,服务器阿里云服务器。
      创建一个maven项目,导入相关依赖:
      pom.xml依赖

        <!-- 统一版本控制 -->
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>1.5.9.RELEASE</version>
    	</parent>
    	<dependencies>
    		<!-- freemarker渲染页面 -->
    		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-freemarker -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-freemarker</artifactId>
    		</dependency>
    
    		<!-- spring boot 核心 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    
    		<!-- springboot整合jsp -->
    		<!-- tomcat 的支持. -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    			<exclusions>
    				<exclusion>
    					<groupId>org.springframework.boot</groupId>
    					<artifactId>spring-boot-starter-tomcat</artifactId>
    				</exclusion>
    			</exclusions>
    		</dependency>
    
    		<dependency>
    			<groupId>org.apache.tomcat.embed</groupId>
    			<artifactId>tomcat-embed-jasper</artifactId>
    		</dependency>
    	</dependencies>
    

    在配置文件src/main/resources/下创建application.properties文件可以修改一些配置参数等。

    #jsp支持
    spring.mvc.view.suffix=.jsp
    spring.mvc.view.prefix=/WEB-INF/jsp/
    #this is set port
    #server.port=80
    server.port=443
    #添加ssl证书
    #ssl证书文件名
    server.ssl.key-store=classpath:xxxxxxx.pfx
    server.ssl.key-store-password=xxxxxxxx
    server.ssl.keyStoreType=xxxxxxxx
    

    在实际项目中可能涉及数据库,还要整合mybatis,在文章中,我仅仅做测试就不做使用数据库的测试。
    首先创建springboot的入口程序:app.class下面贴上代码:

    @ComponentScan(basePackages= "com.bin")//添加扫包@ComponentScan(basePackages= "")
    @EnableAutoConfiguration
    public class App{
    
    	//启动springboot
    	public static void main(String[] args) {
    		SpringApplication.run(App.class, args);
    	}
    }
    

    启动项目时直接右击run即可。
    在写一个测试的controller进行微信小程序与java后端实现通信,controller代码如下:

    @RestController
    @SpringBootApplication
    public class ControllerText {
    	
    	@RequestMapping("getUser")
    	public Map<String, Object> getUser(){
    		System.out.println("微信小程序正在调用。。。");
    		Map<String, Object> map = new HashMap<String, Object>();
    		List<String> list = new ArrayList<String>();
     		list.add("zhangsan");
     		list.add("lisi");
     		list.add("wanger");
     		list.add("mazi");
     		map.put("list",list);
    		System.out.println("微信小程序调用完成。。。");
    		return map;
    	}
    	
    	@RequestMapping("getWord")
    	public Map<String, Object> getText(String word){
    		Map<String, Object> map = new HashMap<String, Object>();
    		String message = "我能力有限,不要为难我";
    		if ("后来".equals(word)) {
    			message="正在热映的后来的我们是刘若英的处女作。";
    		}else if("微信小程序".equals(word)){
    			message= "想获取更多微信小程序相关知识,请更多的阅读微信官方文档,还有其他更多微信开发相关的内容,学无止境。";
    		}else if("西安工业大学".equals(word)){
    			message="西安工业大学(Xi'an Technological University)简称”西安工大“,位于世界历史名城古都西安,是中国西北地区唯一一所以兵工为特色,以工为主,理、文、经、管、法协调发展的教学研究型大学。原中华人民共和国兵器工业部直属的七所本科院校之一(“兵工七子”),陕西省重点建设的高水平教学研究型大学、陕西省人民政府与中国兵器工业集团、国防科技工业局共建高校、教育部“卓越工程师教育培养计划”试点高校、陕西省大学生创新能力培养综合改革试点学校。国家二级保密资格单位,是一所以\"军民结合,寓军于民\"的国防科研高校。";
    		}
    		map.put("message", message);
    		return map;
    	}
    	
    	@RequestMapping("")
    	public String getText(){
    		return "hello world";
    	}
    
    
    }
    

    至此简易的后端框架及测试基本完成。
    说明:@RestController与@Controller注解的区别@RestController相当于两个注解,它能实现将后端得到的数据在前端页面(网页)中以json串的形式传递。而微信小程序与后台之间的数据传递就是以json报文的形式传递。所以这就是选择springboot框架开发小程序后端的主要原因之一。可以方面我们进行小程序的后端开发。

    1. 小程序发起网络请求
      在完成了小程序的后端开发,下面进行小程序端发起网络请求。
      下面以一个简单的按钮请求数据为例:
      wxml文件
    <button bindtap='houduanButton1'>点击发起请求</button>
    <view wx:for="{{list}}">
        姓名:{{item}}
      </view>
    
    js文件
    
     /**
       * 页面的初始数据
       */
      data: {
        list: '',
        word: '',
        message:''
    
      },
      houduanButton1: function () {
        var that = this;
        wx.request({
          url: 'http://localhost:443/getUser',
          method: 'GET',
          header: {
            'content-type': 'application/json' // 默认值
          },
          success: function (res) {
            console.log(res.data)//打印到控制台
            var list = res.data.list;
            if (list == null) {
              var toastText = '数据获取失败';
              wx.showToast({
                title: toastText,
                icon: '',
                duration: 2000
              });
            } else {
              that.setData({
                list: list
              })
            }
          }
        })
      }
    

    主要调用的api就是wx.request,想知道将详细的介绍大家可以去微信公众平台
    接下来以搜索类型的请求为例:
    wxml文件:

     <input type="text" class="houduanTab_input" placeholder="请输入你要查询的内容" bindinput='houduanTab_input'></input>
      <button bindtap='houduanButton2'>查询</button>
      <view wx:if="{{message!=''}}">
        {{message}}
      </view>
    

    js文件:变量的定义见上一个js文件

    //获取输入框的内容
      houduanTab_input: function (e) {
        this.setData({
          word: e.detail.value
        })
      },
      // houduanButton2的网络请求
      houduanButton2: function () {
        var that = this;
        wx.request({
          url: 'http://localhost:443/getWord',
          data:{
            word: that.data.word
          },
          method: 'GET',
          header: {
            'content-type': 'application/json' // 默认值
          },
          success: function (res) {
            console.log(res.data)//打印到控制台
            var message = res.data.message;
            if (message == null) {
              var toastText = '数据获取失败';
              wx.showToast({
                title: toastText,
                icon: '',
                duration: 2000
              });
            } else {
              that.setData({
                message: message
              })
            }
          }
        })
      }
    

    至此已经完成了简易的微信小程序端与java后端进行通信。
    现在可以在启动后端项目在微信开发工具上进行测试。
    演示效果:
    这里写图片描述
    这里写图片描述
    所以至此已经完成了小程序的前后端通信。

    1. https申请
      其实也不算什么申请,在购买域名之后可以申请免费的ssl证书,在前面的配置文件application.properties中有证书的配置,将证书的pfx文件直接添加到后端项目下即可。
    2. 购买服务器部署后端api代码
      对于springboot项目,本人建议打jar,直接在服务器上部署即可,在服务器上只需要安装对应版本的jdk即可。项目部署命令:
      我购买的是阿里云的轻量级应用服务器部署的。比较划算吧。
    运行命令: nohup java -jar helloworld.jar &
    

    nohup的意思不挂服务,常驻的意思,除非云服务器重启,那就没法了;最后一个&表示执行命令后要生成日志文件nohup.out。
    当然还可以使用java -jar helloworld.jar

    源码:链接: https://pan.baidu.com/s/1PfByFfEgqkVALcc3PRhn9w 提取码: c7yf

    结束语:由于时间篇幅问题,本人介绍的内容很有限,希望对这方面有兴趣的你能有帮助。共同进步。
    觉得有帮助,给个赞赏吧。给赞赏的优先同意qq或者微信,问问题秒回复等[滑稽],谢谢老铁。
    在这里插入图片描述

    展开全文
  • 【微信】微信小程序前后数据请求示例

    千次阅读 多人点赞 2019-04-29 17:26:00
    本篇内容简介之 微信小程序的前后数据交互示例,主要涉及到获取服务端的数据,和提交到服务端的数据演示,服务端使用java-springboot进行快速搭建演示 1、在小程序中的index.wxml中进行一个表单的设计 例如: ...
  • 问题1:作为刚入门自学的我 心不够细,有的时候发现很代码写着写着发现大小写没区分(重要的一点是目前微信小程序是区分大小写的)。只需要将红框中的"JSON"改成"json", "Content-Type"改成"content-type"即可。 ...
  • 什么是大小?如何确定大小

    千次阅读 多人点赞 2019-08-25 19:59:40
    一、什么是大小? 对于一个由2个字节组成的16位整数,在内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,这称为小端(little-endian)字节序;另一种方法是将高序字节存储在起始地址,这称为大端...
  • 主要内容:宏定义、max(a,b)宏定义细节、大小判断、(int&)a什么意思 #if 1 #include // 注意空格 #define F (x) ((x) - 1) // F代表后面 #define F(x) ((x) - 1) // F(x)代表后面 // 经典的笔试题宏定义求...
  • 从今天开始就来带领大家学习微信小程序了,只要你跟着我一步步来,相信你也可以上线一款属于自己的微信小程序 一,认识小程序 微信⼩程序,简称⼩程序,英⽂名 Mini Program Mini Program ,是⼀种不需要下载安装...
  • 服务器: using System; using System.Windows.Forms; using System.Net.Sockets; using System.Net;//IPAddress,IPEndPoint(ip和端口)类 using System.Threading; using System.Collections.Generic; using ...
  • 小程序开发中遇到的问题—汇总

    万次阅读 多人点赞 2018-04-07 22:33:27
    小程序面试题 1.bindtap和catchtap的区别是什么? bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡 2.Js数组转成换字符串,强制转换成整数及转换成浮点数的函数分别是什么? js...
  • 小程序的模块化

    千次阅读 2018-04-06 17:36:12
    小程序逻辑层语言是JavaScript,其逻辑代码运行在三:iOS,Android和用于调试的开发者工具,这三是各自不同的三个解析引擎; iOS:小程序的js代码运行在JavaScriptCore中; Android:小程序的js代码通过X5内核...
  • 下面这个图片就是通过图片和文字等内容合成的一张带有微信小程序二维码的图片,在小程序内部长按可以识别出来: 基本思路是先将内容用canvas排好版,然后把该canvas转化成图片;图片利用wx.previewImage进行展示...
  • 小程序即时通讯聊天控件(一)

    万次阅读 多人点赞 2017-11-06 12:21:52
    小程序即时通讯——文本、语音输入控件(一)集成近期一直在做微信小程序,业务上要求在小程序里实现即时通讯的功能。这部分功能需要用到文本和语音输入及一些语音相关的手势操作。所以我写了一个控件来处理这些操作...
  • 微信小程序入门三request请求

    万次阅读 2017-03-08 21:38:00
    上一章讲了微信小程序的UI框架 weui-wxss 这章就谈谈微信小程序的数据交互,wx.request 方法。 request的请求发起的是https的请求,如果你的服务器是http站点,那需要做配置。可以参考文章:http转https教程 如果你...
  • 在微信小程序中想要实现下拉刷新,是很方便的。但是如何使用,在文档上找起来却不是很方便。话不说,直接上文档截图 很明显,enablePullDownRefresh 这个属性设置为true。就默认开启了下拉刷新。...
  • 什么是大端和小端

    千次阅读 2017-04-18 17:15:47
    什么是大端和小端  Big-Endian和Little-Endian的定义如下: 1) Little-Endian就是低位字节排放在内存的低地址,高位字节排放在内存的高地址。 2) Big-Endian就是高位字节排放在内存的低地址,低位字节...
  • 微信小程序测试点

    万次阅读 多人点赞 2019-03-29 18:14:41
    微信小程序的限制 微信小程序测试点:权限测试、兼容性测试(操作系统兼容、微信版本兼容)、功能测试、易用性测试、性能测试。 注意:微信缓存
  • 微信小程序和WebApp有什么区别?

    千次阅读 2017-01-15 13:12:34
    微信小程序和WebApp有什么区别?-威震天 1.开发方式: 开发语言和开发感觉方面类似,微信小程序自己的js-sdk也是类似vue和ng的mvvm思想来写。webapp如ionic是基于ng的所有有很ng插件,但是微信小程序是自己渲染...
  • 深入解读-小程序SDK

    万次阅读 2017-06-29 21:15:19
    由于笔者没有获取到微信官方提供的小程序实现原理图,很内容都是通过阅读文档资料反推和理解所得,如有误解之处,望指正。 本文建议阅读时间: 5min目录 小程序SDK 定义 JS-SDK 小程序基础库与JS-SDK的共同点 ...
  • 零基础入门微信小程序开发 (2020 版)

    万次阅读 多人点赞 2020-02-19 23:30:02
    就算你完全没有开发过微信小程序,甚至没有接触过小程序的相关技术(XML、JSON、JavaScript 等)也可以轻松入门! 涵盖开发全周期,助你尽快完成自己的小程序: 麻雀虽小,五脏俱全。专栏通过 9 篇文章覆盖从开发...
  • 【LiteApp系列】何为爱奇艺小程序

    千次阅读 2018-07-08 10:25:41
    今年5月份,爱奇艺开源了LiteApp,俗称小程序。LiteApp是一种是一种高性能的移动跨平台框架,它介于Native App和Web App之间。Github地址如下: https://github.com/iqiyi/LiteApp 那么,既然已经有了Native ...
  • 抓取微信小程序数据加密内容

    千次阅读 2020-03-16 18:11:52
    最近又收到个任务,要去抓取别人小程序的内容,通过fiddler抓包,请求和响应数据看的我是一脸懵逼,自己造数据是不可能的,小程序看不到js,根本猜不到怎么解密和加密的。网上也有文章说小程序的源码可以通过反编译...
  • 充电桩小程序方案

    千次阅读 2020-06-29 11:15:57
    开发充电桩小程序项目至少需要四个,一是微信小程序端、二是后台管理、三是硬件通讯服务端、四是充电桩硬件本身。除了开发这四的程序后,最终要正式上线运营,还需要对接充电站所在地政府的新能源汽车充电设施...
  • 小程序,压缩图片

    千次阅读 2019-04-13 11:46:21
    我们在小程序上,直接上传手机相册及拍照的图片时,因为图片过大(如10m),手机不像我们再计算机上传输那么快,也没那么稳定, 解决办法:在图片上传前压缩图片 压缩图片就是将图片尺寸、图片质量降低,把这两...
  • 小程序ColorUI使用简易教程

    万次阅读 多人点赞 2019-11-08 13:50:58
    使用原生小程序开发 从现有项目开始 从新项目开始 使用自定义导航栏 组件 基础元素 layout布局 Background背景 Text文字 Icon图标 Button按钮 Tag标签 Avatar头像 Progress进度条 Border&S...
  • 微信小程序云开发的一点坑

    千次阅读 2019-05-15 20:44:35
    然而,最近回到这个小程序,发现了好多有趣的东西,最重要的就是云开发~意思是腾讯免费给你服务器去玩~ 下面是我做的一些小程序云开发的坑: 云数据库权限问题: 云数据库是非关系型数据库,是nosql,然而,...
  • 微信小程序开发知识点总结

    千次阅读 2017-02-19 08:50:05
    微信小程序开发知识点总结1.微信小程序的目录结构1.外联公共样式的方法根据微信的官方文档,是支持@import的方式一如外联的公共样式的 使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对...
  • 小程序 版本管理使用教程

    千次阅读 2019-07-13 10:27:37
    3.在小程序端 设置-远程 添加路径; 4.在网络和认证中选择使用用户名和密码,输入之前设置的账号密码; 5.点击推送,首次推送需选择新的远程仓库分支,之后便可选择 推送到以下远程仓库分支; 6.推送过程:填写...
  • 微信小程序控制树莓派(一)

    千次阅读 2020-07-09 20:52:06
    一....目前仅限本地演示:树莓派运行服务器代码,微信小程序端可输入指令动态显示树莓派回执信息;微信小程序界面可以点选按钮,动态根据服务器返回信息回显。 2. 系统设计方案 a. 微信交互界

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 130,711
精华内容 52,284
关键字:

多端小程序是什么意思