当前位置: 首页 > 科技观察

云开发与WePY,快速实现Linux命令查询小程序

时间:2023-03-16 20:04:19 科技观察

大家好,今天给大家分享Linux命令查询小程序中的WePY云开发实践。为什么选择WePY首先,让我分享一下您为什么选择WePY?在项目选择之初,我可以选择的底层框架有WePy、MPVue、Taro、MinUI。这些框架都是精心设计的框架,可以帮助小程序项目长期维护。其中,Taro一开始就被排除在外,因为它使用了我不熟悉的React。我看了MPVue之后,更多的是为web开发者提供小程序转换工具,而不是为小程序开发者提供类似Vue的工具,所以也被我排斥了。由于MinUI本身只提供组件化方案和npm、ES6/ES7支持,其他命令仍需继续使用小程序的功能,不提供更多支持。整个生态还不丰富,所以排除了MinUI。为了***,我选择了WePY。在开始之前,我研究了WePY,看看WePY有什么优势。总的来说,我认为WePY的优势有以下几点:提供了类似Vue的组件化解决方案:组件化开发可以提高项目的可维护性。随着你的开发周期变长,组件化会极大地影响你的开发体验。提供对ES6/ES7语法的支持:JavaScript饱受诟病的回调在ES6和ES7中有更优雅的实现。提供Vue生态:不同于MinUI的孤军奋战,WePY拥有众多Vue社区生态产品,如WePY-Redux、RxWX等Vue下大家习惯的一系列工具,使得开发过程更加顺畅,开发体验也更加一致.原生API优化:小程序官方提供的很多接口都是回调方式提供的,不提供Promise。我们在使用的时候往往需要自己重新打包,比较麻烦。在WePY中,WePY官方给我们封装了一层,大家可以直接使用WePY封装的方法,减少封装的工作量。Vue习惯的数据设置:在WePY中,可以使用this.xxx=xxx的语法进行赋值操作。与原生的setData方法相比,语法更顺手,可维护性更高。提供计算方法:在开发小程序的时候,我们不可避免地需要对数据进行格式化。在传统的小程序开发中,我们需要对数据进行映射,然后进行修改。但是使用WePY之后,我们可以使用computedComputed属性来格式化和调整数据,大大提高了代码的可读性。以上就是我看重的WePY的优势。接下来说一下如何在WePY中使用云开发。WePY中的云开发我写过很多小程序,也教过一些小程序的课程。经常有人问我,XXX可以用在XXX吗?在这种场景下,WePY可以使用云开发吗?答案当然是肯定的。看这个问题首先要搞清楚云开发到底提供了什么?云开发提供数据存储、文件存储、计算能力,WePY的定位与提供微信小程序组件化开发的能力并不冲突。所以WePY和云开发并不冲突,可以在WePY中使用云开发。在WePY项目中启用云开发由于WePY本身并没有提供云开发的模板(但是现在可以使用wepyinitcloudkits/wepy-tcb-demo命令来初始化包含云开发示例的WePY项目),我们需要添加自己对项目进行云开发。云开发本身集成在wx.命名空间,无需配置,直接使用wx.cloud.xxx调用云开发的各种命令。另外比较特殊的是需要指定云函数目录,保证微信小程序开发者工具能够识别云函数目录。这里需要注意的是,因为云开发命令本身就支持Promise和Callback,所以可以直接使用wx.cloud代替wepy.cloud来调用。WePY官方并没有为云开发重新封装。可以在小程序项目根目录下新建一个目录cloudfunctions,然后在project.config.json中新增一个配置项cloudfunctionRoot,并将其值设置为cloudfunctions。这样微信小程序开发者工具就可以识别出该目录为云函数目录,并为其添加一个特殊的目录名。这里需要注意的是,云函数要放在小程序的源码目录src之外,否则会导致编译错误。我试图在wepy.config.js中找到关于屏蔽编译检查目录的配置项,但是没有找到,所以我直接把这个目录放到了项目根目录下,和的src同级云功能和小程序源码。这样你就完成了WePY小程序云开发的参考。我在开发过程中踩过的坑。这个赋值应该先设置数据。在用WePY开发的时候,我们使用this.xxx来修改数据的值,但是我在开发的时候第一次遇到第一个问题,使用this.xxx无法设置数据的值,在小程序界面。后来发现如果想让WePY为你更新和管理数据,你需要把要传递给页面的数据放在页面实例中的数据对象中,这样WePY会帮你更新和管理数据。由于文档中没有说明这一点,所以踩坑了。后来经过WePY的分析,明白了这种做法。由于WePY没有使用setData,而是直接调用this.xxx进行修改,那么WePY需要知道应该向页面发送哪些变量,否则,将this中的所有数据全部传递给页面的话,传递时间会太长,小程序容易退出。这个时候,用数据来限制数据是可以理解的。如何处理纯移动数据的管理?到目前为止,云开发除了微信小程序的官方控制台外,还没有提供管理方式,这让我们在构建应用的时候手足无措。为了提供更好的服务,我们决定修改产品的型号。一开始我们考虑的是用户提交翻译,团队审稿的模式,但是我们认为不存在管理和开发成本的问题。我们决定稍微调整一下模式,改成社区自净。我们完全开放编辑能力,任何用户都可以提交数据。同时,也可以在国内实践一个完全由社区维护的应用。但是这种任何人都可以提交的数据很可能被其他人利用,所以我们引入了微信小程序官方提供的内容安全接口来进行文本安全检测,尽可能的避免一些非法内容的影响小程序。如果你用过这个接口就会知道调用接口需要一个access_token,而微信的access_token获取接口既有发起调用的地址限制(不能在小程序中调用),也有接口请求频率限制(请求了可能会导致获取Token失败),所以我们决定使用云函数来处理这部分功能。我们使用云函数中的got库请求微信提供的接口,获取access_token,检查内容安全。而且,为了保证access_token请求不会太快,我们添加了一些代码来缓存token。constresult=awaitcache.get();//缓存是对应集合的引用constnow=(newDate).valueOf();constnextTime=now+5400000;letaccessToken=''if(!result.data.length){console.log("进入初始获取流程")constresult=awaitgot(accessTokenUrl)accessToken=JSON.parse(result.body).access_tokenawaitcache.add({data:{token:accessToken,time:nextTime}})}else{if(result.data[0].time>now){console.log("现有令牌有效")accessToken=result.data[0].token}else{console.log("已有令牌无效")consttokenResult=awaitgot(accessTokenUrl)accessToken=JSON.parse(tokenResult.body).access_tokenawaitcache.doc(result.data[0]._id).update({数据:{令牌:accessToken,时间:nextTime}})}}通过上面的代码,在云数据库中存储了一个token,并比较了它的过期时间。如果发现token过期,则更新token,保证正常请求。总结回顾整个小程序的开发过程,WePY的便捷让整个开发过程变得异常顺畅,云开发快速迭代的优势帮助整个应用快速上线。Linux小程序正式发布时,整体开发时间不超过24小时!