一起来做个免登录资源导航小程序!

今天,一起来开发个资源导航微信小程序吧,要实现的功能很简单,就是所有用户都可以查看和推荐资源。

主要目的是通过实战,帮助大家快速了解下 小程序开发流程云开发技术,学习更高效的小程序开发方式。

技术选型

首先选择小程序开发技术。开发小程序的过程和开发网站类似,都是要写前端(界面交互)和后端(请求处理逻辑)代码。

前端

前端方面我选择用 Taro 框架 + Taro UI 开发。Taro 是一个基于 React 的跨端开发框架,支持写一套代码,自动生成微信小程序、H5、APP 等应用,再加上框架为很多复杂的功能提供了函数封装,可以大大提升开发效率。而 Taro UI 是基于 Taro 的 UI 库,提供了很多现成的组件,比如图片上传、选择器等,可以满足常见的开发需求。

后端

后端就简单了,传统的方式是使用编程语言提供的后端开发框架,比如 Java 的 SpringBoot、PHP 的 Laravel、Python 的 Django 等,但往往需要自己搭建服务器、数据库、日志、监控、运维等等,对于只会前端或者想要快速开发小程序的同学来讲,简直就是噩梦!

因此我选择更高效便捷的方式,腾讯小程序云开发!

什么是云开发

小程序云开发是微信团队联合腾讯云推出的专业的小程序开发服务,帮助大家快速开发小程序、小游戏、公众号网页等,并且原生打通微信开放能力。

云开发的优势有哪些呢?

  1. 开发者无需搭建后端服务器,只需使用平台提供的各项能力(比如云数据库、云存储、音视频、AI 等),即可快速开发业务。
  2. 安全易接入:无需管理证书、签名、秘钥,直接调用微信 API 。复用微信私有协议及链路,保证业务安全性。
  3. 多端复用:支持环境共享,一个后端环境可开发多个小程序、公众号、网页等,便捷复用业务代码与数据。
  4. 不限开发语言和框架:开发者可以使用任意语言和框架进行代码开发,构建为容器后,快速将其托管至云开发。
  5. 按量计费,成本更低,支持自动扩缩容
  6. 扩展能力:支持一键部署静态网站,并能用云 CMS 管理数据内容

其中,最吸引我的就是云开发的高效便捷,不用自己搞服务器、搭数据库,也不用处理和微信对接的复杂逻辑,只需要专注于实现功能本身即可,而且可以直接用云开发 SDK 提供的各种函数,开发效率拉满!

比如查询数据,几行代码搞定!

应用开发

下面来开发小程序,包含初始项目搭建、前端页面开发、接入云开发等步骤。

项目搭建

首先我们参照 Taro 框架官方文档的快速开始部分,安装 Taro 命令行工具,并初始化一个小程序应用。

初始化 Taro 应用

注意初始化时会让你选择模板,此处选择云开发即可,Taro 会自动生成包含云开发的示例代码,目录结构如下:

前端开发

我们总共要创建两个页面,资源列表页和推荐资源页,需要用到的组件有列表、表单、输入框、按钮、图像上传等。

Taro UI 支持以上所有组件,按照 Taro UI 的官方文档接入,复制组件代码到页面中修改即可,很快就能开发出这两个页面。

资源列表页的示例代码如下:

<View className='list'>
  <!-- 列表组件 -->
  <AtList>
    {resourcesView}
  </AtList>
  <!-- 固钉组件,点击跳转至推荐页 -->
  <AtFab className="fab-btn"
         onClick={() => navTo(xx)}>
    <AtIcon value='add'/>
  </AtFab>
</View>

可以打开微信开发者工具查看页面效果:

资源添加页

页面开发完成后,我们来搭建后端服务,使得用户可以通过界面插入和读取数据。

接入云开发

区别于自己搭建后端服务,使用云开发会更简洁快速,直接在微信开发者工具中点击云开发,开通环境即可,每位用户都可以享有一定数量的免费环境!

开通云开发

在云开发界面中,可以对云数据库、云存储、云函数等资源进行监控和管理。

我们可以在云数据库中创建一张 资源表,用于读写资源数据。云开发控制台支持可视化的数据库管理,比如记录、索引、数据权限等,非常方便!

云数据库管理

每个环境都有唯一的 id,用于区分,可以在前端引入云开发 SDK,并传入环境 id 来初始化。

前端用 Taro 的话,可以用它封装好的 init 方法:

Taro.cloud.init({
  // 环境 id
  env: 'xx', 
})

然后,就可以在前端 直接调用 云开发提供的操作数据库的接口,比如插入数据、查询数据,不用自己开发后台了!

比如插入数据:

const db = Taro.cloud.database();
// 添加数据到 resource 表
db.collection('resource').add({
  data
}).then(res => {
  // 成功
  return res;
}).catch(err => {
  // 失败
    console.error(err);
});

在推荐资源时需要让用户上传图片,以前我们需要自己找地儿存放,现在可以在前端 直接调用云存储,几行代码搞定:

// 上传文件
const res = await Taro.cloud.uploadFile({
  cloudPath: '上传到云存储的位置',
  // 要上传图片的本地路径
  filePath: pictureUrl,
})
// 获取图片 id,可下载或直接展示
picture = res.fileID;

可以在云开发控制台管理云存储中的文件、配置权限、缓存等:

云存储管理

如果云开发默认提供的接口不能满足需求,那可以自己写后台接口,作为一个云函数部署到腾讯云上。然后在前端请求即可,和自己开发后端类似。

比如部署一个登录函数,可以获取用户在小程序中的唯一 id,在控制台中还能看到函数的调用日志、管理权限等。

云函数管理

实现无登陆调用

按照上面的流程开发完后,在微信开发者工具中,能够顺利地推荐和展示资源。但是如果将这个小程序上线并分享给其他用户,就会出现权限问题,所有功能都会失效!

某同学遇到的问题

这是因为云开发为了保证资源的安全性、灵活控制资源调用权限,制定了安全规则,默认不允许未登录用户访问

安全规则

假如我们把小程序分享到朋友圈,必须要朋友们登录才能查看资源列表,那这用户体验就太差了,所以下面我们要实现无登录调用。

小程序云开发考虑到了种种场景,因此提供了 未登录模式

在未登录模式中,不存在用户的登录态,应用场景有:

  1. 单页模式:小程序/小游戏分享到朋友圈被打开时
  2. Web 未登录模式:没有登录的 Web 环境中(见Web 端支持

该模式默认关闭,需要在 “云控制台 - 设置 - 权限设置” 中手动为云环境开启允许未登录访问。

进入权限设置

允许未登录访问

一旦开启了未登录模式,客户端(前端)的权限控制 必须使用安全规则,即云函数、数据库和文件存储的访问都必须通过安全规则。

因此,除了在控制台开启允许未登录访问云环境外,还必须在云数据库、云存储和云函数的权限设置中分别选择安全规则并配置。

安全规则有一套自己的语法,以云数据库为例,选择自定义安全规则,查看原本的规则:

原安全规则

在上述规则中,readwrite 分别代表读写权限,doc 表示当前的一条数据,auth 表示当前登录的用户,表达式为 true 时允许访问,即当前登录的用户必须是该条数据的创建者才能读写。

未登录用户访问时,安全规则的 auth 字段为空,如果要允许所有用户读写所有资源,可以直接将表达式值设置为 true:

修改安全规则

再修改下云存储的安全规则,原规则如下:

上述规则中,resource 表示一个资源,将表达式改为 true,则允许所有用户读写存储的所有文件!

同理,也要修改云函数的安全规则,可以为不同云函数设置不同规则,比如 login 函数允许所有用户访问,而其他函数仅允许已登录用户访问:

安全规则非常灵活,合理运用,可以在满足资源调用需求的同时,增加资源的安全性,为应用安全保驾护航。


最后总结,通过本文,我们了解了小程序的开发过程,以及小程序云开发的用法、无登录资源调用的方式。相对于代码,思路更重要,也强烈建议大家试一试云开发,感受高效,轻松地做出自己的应用!

阅读官方文档,开启云开发之旅

#学习路径#
全部评论
学到了
点赞 回复 分享
发布于 2021-03-30 23:32
感谢参与【创作者计划2期·技术干货场】!欢迎更多牛油来写干货,瓜分总计20000元奖励!!技术干货场活动链接:https://www.nowcoder.com/link/czz2jsghtlq(参与奖马克杯将于每周五结算,敬请期待~)
点赞 回复 分享
发布于 2021-04-22 17:25

相关推荐

吃辣椒还买票:没有一个公司不加班的,不加班的公司哪有收益给你开工资啊
点赞 评论 收藏
分享
10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务