前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用云开发做个免登录资源导航小程序!

使用云开发做个免登录资源导航小程序!

原创
作者头像
程序员鱼皮
发布2021-03-28 21:26:45
1.4K0
发布2021-03-28 21:26:45
举报
文章被收录于专栏:鱼皮客栈

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

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

技术选型

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

前端

前端方面我选择用 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 会自动生成包含云开发的示例代码,目录结构如下:

前端开发

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

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

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

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

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

资源添加页
资源添加页

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

接入云开发

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

开通云开发
开通云开发

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

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

云数据库管理
云数据库管理

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

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

代码语言:txt
复制
Taro.cloud.init({
  // 环境 id
  env: 'xx', 
})

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

比如插入数据:

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

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

代码语言:txt
复制
// 上传文件
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 函数允许所有用户访问,而其他函数仅允许已登录用户访问:

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


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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 技术选型
    • 前端
      • 后端
      • 什么是云开发
      • 应用开发
        • 项目搭建
          • 前端开发
            • 接入云开发
            • 实现无登陆调用
            相关产品与服务
            云数据库 MySQL
            腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档