应用实战|微信小程序开发示例之Super课表

微信小程序:简易课程表模板 前段时间,接了一些项目订单,其中有一个内容要绘制一个课表界面,因为他们要查重,就自己简单的写了一下,界面不是很花里花哨,但功能都具备,需要的自取,且我会详细的分析代码,提供一个实现思路,大家一起进步。:我实现的方式主要是通过全部铺满然后判断具体哪些课需要显示,如果各位友友有更好的实现思路也可以在评论中分享,一起学习下。好久没有更新文章了,从毕业到现在已经开始上班几个月啦,今天有点无聊摸会鱼,上班写个简单的文章证明自己还活着哈哈哈,。我在考虑要不要将课程表的增删改查功能也贴出来, 阅读详情

此示例提供了使用 MemFire Cloud 构建一个课表的小程序的步骤。小程序用到的MemFire Cloud的功能包括:

  • 云数据库:存储小程序数据表的信息。

  • 用户验证:小程序使用MemFire Cloud提供的用户认证的API接口,快速完成用户注册登录操作。

  • 云存储:存储小程序的注册用户上传的头像。

  • 行级安全策略:采用RLS策略来限制用户访问行为,用户可以修改个人信息,上传个人头像。

  • 即时API:创建数据表时会自动生成 API。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-acketCQR-1663239309449)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=MjQ2YWViMDBiYzU2ODFhYmNiYWJiOTdkZGYwMWY4MjdfQjFVVkNxT1NOcWRYVHBEN0kwcElCb0hLV004c3pEOFRfVG9rZW46Ym94Y25WNmRyOE9mWUxVQWh2bG1mOEp2WXloXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

创建应用

目的:通过创建的一个MemFire Cloud应用来获得数据库、云存储等一系列资源,并将获得该应用专属的API访问链接和访问密钥,用户可以轻松的调用API接口与以上资源进行交互。

登录https://cloud.MemFiredb.com/auth/login,在“我的应用”页面创建一个新应用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GFxnS37g-1663239309450)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=NjIzOGE5ZmQ0ZWQ5NzAxMTE4NjAwNGVhMjdmMjQ5YWNfRjdGejAySVlSZExmT2xGcXZ6V1NrZ3E2bE5ic2p5Q0FfVG9rZW46Ym94Y24yWjNaWmxqaVZ4ekF5TG8wOUtNVllmXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

创建数据表

点击进入应用详情页面,在“数据表”页面可视化建表。

1.创建school表

在数据表页面,点击“新建数据表”,创建school表。school表主要记录学校信息,表结构字段如下:

名称类型描述
idint8主键,自增,唯一标识ID
schoolNametext学校名称(唯一)
updated_attimeatamptz修改时间

建表页面配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DTsBzoZF-1663239309450)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=MGZkNTg2NDcxOTE2Yzk1YjM0ZjU1NWQzZDZlZmE3ZmZfNlhlejdlakQ4Vkp4MzNOelo3RVowNUpNUGRTODJRUmtfVG9rZW46Ym94Y25WVDZ0NjJkRzc4R1p6TUdvV1JiZ2tnXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

数据表创建完后可在school表中手动插入几条学校信息数据 ,如下图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6UmLR4Y8-1663239309451)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=MjFhYzZhYTE0M2NmMGJkN2Q0NjkzZTYzYzVkNWZiYzRfTk95Y1M2N3NTNExqZWlSZXNYZzE0TUVaNjZZeDJQTkRfVG9rZW46Ym94Y25jUkc3c3JkNkc1TXd1VDJTcEJpOWNoXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

sql操作如下:

CREATE TABLE "public"."school" ( 
  "id" BIGINT NOT NULL,
  "updated_at" TIMESTAMP WITH TIME ZONE NOT NULL,
  "schoolName" TEXT NOT NULL,
  CONSTRAINT "school_pkey" PRIMARY KEY ("id"),
  CONSTRAINT "school_schoolName_key" UNIQUE ("schoolName")
);
INSERT INTO "public"."school" ("id", "updated_at", "schoolName") VALUES ('1', '2022-08-12 18:43:53.166+08', '武汉大学');
INSERT INTO "public"."school" ("id", "updated_at", "schoolName") VALUES ('2', '2022-08-22 11:01:19.088+08', '武汉科技大学');
INSERT INTO "public"."school" ("id", "updated_at", "schoolName") VALUES ('3', '2022-08-22 11:01:36.909+08', '华中师范大学');
INSERT INTO "public"."school" ("id", "updated_at", "schoolName") VALUES ('4', '2022-08-22 11:01:56.022+08', '武汉理工大学');

2.创建department表

在数据表页面,点击“新建数据表”,创建department表。department表主要记录学院信息,表结构字段如下:

名称类型描述
idint8主键,自增,唯一标识ID
departmentNametext学院名称,唯一
updated_attimeatamptz修改时间

建表页面配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-utIqrjua-1663239309452)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=ZTU3NjVmNjMwNDIzM2FlYWQxYjViMWIzYTk4YTgwMTFfbmxBRHJJY0ZMYmI0eVpINkxtelI2YmRhWkN3OEQwSHNfVG9rZW46Ym94Y254eE81WURscW1RamJqVmdBbTREcVlkXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

数据表创建完后可在department表中手动插入几条学院信息数据,如下图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pWiJr7fM-1663239309452)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=ZTYyODAwNTQ0NDU0MmViZjdlZmFkNWFmZjg4MGZiY2JfRWx3eW5qdVhPNkw3ZzJyWnRRSmw2b1Q1NkFQVFhtbjhfVG9rZW46Ym94Y25MVlQ2OGxCN3JOUGo0RUxCVGlacmpoXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

sql操作如下

CREATE TABLE "public"."department" ( 
  "id" BIGINT NOT NULL,
  "updated_at" TIMESTAMP WITH TIME ZONE NOT NULL,
  "departmentName" TEXT NOT NULL,
  CONSTRAINT "department_pkey" PRIMARY KEY ("id"),
  CONSTRAINT "department_departmentName_key" UNIQUE ("departmentName")
);

INSERT INTO "public"."department" ("id", "updated_at", "departmentName") VALUES ('1', '2022-08-12 18:44:14.7+08', '计算机学院');
INSERT INTO "public"."department" ("id", "updated_at", "departmentName") VALUES ('2', '2022-08-18 10:09:02.871+08', '体育学院');
INSERT INTO "public"."department" ("id", "updated_at", "departmentName") VALUES ('3', '2022-08-18 10:09:28.667+08', '商贸学院');
INSERT INTO "public"."department" ("id", "updated_at", "departmentName") VALUES ('4', '2022-08-18 10:09:47.602+08', '土木工程学院');

3.创建subject表

在数据表页面,点击“新建数据表”,创建subject表。subject表主要记录课程信息,表结构字段如下:

名称类型描述
idint8主键,自增,唯一标识ID
teacherNametext老师
adresstext上课地点
subjectNametext科目
updated_attimeatamptz修改时间

建表页面配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JByMzLCX-1663239309452)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=MjkyNzZiODE2YzVlZTYyMzNjMTRkYTU4ZDBlZWZhNGFfb3JwOWJrWE9BRnJGbGR3dHR1RmJxa0l6V3dkYXNza05fVG9rZW46Ym94Y24zTktja0lkbjNZWUNlTEltYkVLZUljXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

数据表创建完后可在subject表中手动插入几条课程信息数据,如下图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5u0mszZ3-1663239309453)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=MWNlZTM5YTQ1NmEwNmVlYzk3NWI3ODczMmE5M2E1M2Vfd1BGMmJ0Zmg1Z25Bb1BDSzdnUkk2YjJRUERXa2FKTTZfVG9rZW46Ym94Y25Kb0l3M0dhMHJWdEJYYW4wVDRKcjBCXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

sql操作如下

CREATE TABLE "public"."subject" ( 
  "id" BIGINT NOT NULL,
  "teacherName" TEXT NOT NULL,
  "updated_at" TIMESTAMP WITH TIME ZONE NOT NULL,
  "adress" TEXT NOT NULL,
  "subjectName" TEXT NOT NULL,
  CONSTRAINT "subject_pkey" PRIMARY KEY ("id")
);
INSERT INTO "public"."subject" ("id", "teacherName", "updated_at", "adress", "subjectName") VALUES ('1', '张珊', '2022-08-12 18:28:30.725+08', '计科楼2-1003', '数据库原理');
INSERT INTO "public"."subject" ("id", "teacherName", "updated_at", "adress", "subjectName") VALUES ('2', '李四', '2022-08-17 16:13:54.527+08', '重楼2-3112', '计算机基础');
INSERT INTO "public"."subject" ("id", "teacherName", "updated_at", "adress", "subjectName") VALUES ('3', '王五', '2022-08-17 17:28:49.603+08', '4教-101', '分布式数据库');
INSERT INTO "public"."subject" ("id", "teacherName", "updated_at", "adress", "subjectName") VALUES ('4', '王博', '2022-08-18 17:28:59.265+08', '综合楼4-401', '高等数学');
INSERT INTO "public"."subject" ("id", "teacherName", "updated_at", "adress", "subjectName") VALUES ('5', '肖战', '2022-08-18 17:29:41.462+08', '教4-401', '线性代数');

4.创建student表

在数据表页面,点击“新建数据表”,创建student表,student表主要记录学生信息,表结构字段如下:

名称类型描述
iduuid主键,自增,唯一标识ID,与auth.users表中的uuid外键关联
update_attimestampt创建时间
studentIdint8学号,唯一

建表页面配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fzytnZ5q-1663239309453)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=OTk2NWU3OWNiZGQ5NzliYThlZGM2NDlhNDNiYWYzMGJfQzRmQkY3U1NHNUUxc1FqMnpiZUF6MVBLaGNhSjltTTVfVG9rZW46Ym94Y251ZFM4QTlJT0xNSUVJeUM2TXZQN0plXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

说明:其中student表字段id和auth.users表中的uuid外键关联。

5.创建subject_student表

在数据表页面,点击“新建数据表”,创建subject_student表。subject_student表主要记录学生的课表信息,表结构字段如下:

名称类型描述
idint8主键,自增,唯一标识ID
studentIdint8学号
subjectIdint8与课程表的id关联
schoolIdint8与学校表的id关联
departmentIdint8与学院表的id关联
updated_attimestampt修改时间

建表页面配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5HlzML4E-1663239309453)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=ZjUwOGNmZTQyZjc5N2YzMjhjMDgyNmRlZTY0YjdmMTBfeHhLc0pFelhyQURscDlBbk80dTZVTUpibVBKUVJnTnlfVG9rZW46Ym94Y25SZ1c0WDR6T3BDOXM4bDQ2dDZZVGdkXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

说明:其中subjectId与subject表中的id外键关联,schoolId与school表中的id外键关联,departmentId与department表中的id外键关联。

数据表创建后可在subject_student表中手动插入几条信息数据,如下图。

其中subjectId、schoolId、departmentId需要对应数据表里的id。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lJda1DzC-1663239309454)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=MTdmYzBlYzRiYWJjZWFhYTczZTk5ZDhlN2VmMTUzYzlfUkk0aW5leW1jZVp3Smk2ZUF1MW9HbUxlZVJ2SDkxTXJfVG9rZW46Ym94Y25MREcyUnlBaDJxNVFjSmFrWlVqZ0ZmXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

sql操作

CREATE TABLE "public"."subject_student" ( 
  "id" BIGINT NOT NULL,
  "updated_at" TIMESTAMP WITH TIME ZONE NOT NULL,
  "studentId" BIGINT NOT NULL,
  "subjectId" BIGINT NOT NULL,
  "schoolId" BIGINT NULL,
  "departmentId" BIGINT NULL,
  CONSTRAINT "subject_student_pkey" PRIMARY KEY ("id")
);
ALTER TABLE "public"."subject_student" ADD CONSTRAINT "subject_student_departmentId_fkey" FOREIGN KEY ("departmentId") REFERENCES "public"."department" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE "public"."subject_student" ADD CONSTRAINT "subject_student_schoolId_fkey" FOREIGN KEY ("schoolId") REFERENCES "public"."school" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE "public"."subject_student" ADD CONSTRAINT "subject_student_subjectId_fkey" FOREIGN KEY ("subjectId") REFERENCES "public"."subject" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION;


INSERT INTO "public"."subject_student" ("id", "updated_at", "studentId", "subjectId", "schoolId", "departmentId") VALUES ('1', '2022-08-17 09:51:14.733+08', '20222202', '1', '1', '1');
INSERT INTO "public"."subject_student" ("id", "updated_at", "studentId", "subjectId", "schoolId", "departmentId") VALUES ('2', '2022-08-17 16:14:51.236+08', '20222202', '2', '1', '1');
INSERT INTO "public"."subject_student" ("id", "updated_at", "studentId", "subjectId", "schoolId", "departmentId") VALUES ('3', '2022-08-17 17:29:33.938+08', '20222202', '3', '1', '1');
INSERT INTO "public"."subject_student" ("id", "updated_at", "studentId", "subjectId", "schoolId", "departmentId") VALUES ('4', '2022-08-18 17:30:09.934+08', '20222202', '4', '1', '1');
INSERT INTO "public"."subject_student" ("id", "updated_at", "studentId", "subjectId", "schoolId", "departmentId") VALUES ('5', '2022-08-18 17:31:45.261+08', '20222202', '5', '1', '1');

6.创建subject_time表

在数据表页面,点击“新建数据表”,创建subject_time表。subject_time表主要记录学生的排课信息,表结构字段如下:

描述:通过关联的课程id去查询课程并合并数据

名称类型描述
idint8主键,自增,唯一标识ID
subjectIdint8与课程表的id关联
weekNumtext周数(例如:“[25,26,27,28]”)
timetext第几节课(例如:1到6中的任意一个数字)
weekDaytext周几上课(例如:“[1,2]“或”[1,3,5]”)
updated_attimestampt修改时间

建表页面配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7JOdDVLH-1663239309454)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=MWU5YTBjMTIxZTYwMzNmNTMwN2Y1NmVkMmE4NmFiMTZfOGg2NkFVT0dNd2VRSHdjUDRFR2cyUjgxT2ZtaU9BS0tfVG9rZW46Ym94Y25OdWw3NlY0SlM5Z3lqb0YwbUxCTkVnXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

数据表创建完成后可在subject_time表中手动插入几条信息数据,如下图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TRBw2xOz-1663239309454)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=YzgwMGFkZDhkNGEyZmJmM2QyNmQwYjA5ZjdmMTQ0MmZfbW81U0FiZTR4T3Z5eXpHYkpScHdCNTU1Z01kcjNoT2NfVG9rZW46Ym94Y25tYU51TmpibWh1dmpaNEhEd0xUT3RkXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

说明:其中subjectId与subject表中的id外键关联。

sql语法操作

CREATE TABLE "public"."subject_time" ( 
  "id" BIGINT NOT NULL,
  "updated_at" TIMESTAMP WITH TIME ZONE NOT NULL,
  "subjectId" BIGINT NOT NULL,
  "weekNum" TEXT NOT NULL,
  "time" TEXT NOT NULL,
  "weekDay" TEXT NOT NULL,
  CONSTRAINT "subject_time_pkey" PRIMARY KEY ("id"),
  CONSTRAINT "subject_time_subjectId_fkey" FOREIGN KEY ("subjectId") REFERENCES "public"."subject" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION
);

INSERT INTO "public"."subject_time" ("id", "updated_at", "subjectId", "weekNum", "time", "weekDay") VALUES ('1', '2022-08-12 18:29:01.828+08', '1', '[34,35,36,37,38]', '1', '[1,4,6]');
INSERT INTO "public"."subject_time" ("id", "updated_at", "subjectId", "weekNum", "time", "weekDay") VALUES ('2', '2022-08-17 16:25:48.757+08', '2', '[34,35,36,37,38]', '2', '[2,3,5]');
INSERT INTO "public"."subject_time" ("id", "updated_at", "subjectId", "weekNum", "time", "weekDay") VALUES ('3', '2022-08-17 17:29:54.301+08', '3', '[34,35,36,37,38]', '3', '[3,4,5,6,7]');
INSERT INTO "public"."subject_time" ("id", "updated_at", "subjectId", "weekNum", "time", "weekDay") VALUES ('4', '2022-08-18 17:30:59.789+08', '4', '[34,35,36,37,38,39,40]', '4', '[1,3,4,5]');
INSERT INTO "public"."subject_time" ("id", "updated_at", "subjectId", "weekNum", "time", "weekDay") VALUES ('5', '2022-08-18 17:32:20.801+08', '5', '[34,35,36,37,38,39,40]', '5', '[2,4,5]');

创建avatars存储桶

创建云存储的存储桶,用来存储用户的头像图片,涉及操作包括:

  1. 创建一个存储桶avatars

在该应用的云存储导航栏,点击“新建Bucket”按钮,创建存储桶avatars。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zkgc9qzy-1663239309454)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=ZDBlNDAwNTFkMzQ0MDhkY2E3MDI0ZTc4YWQ5N2E5MTBfRHUwTjhKaEFmVVp1ZU95bk9xRkFuMHBmVzBiYU9PVHNfVG9rZW46Ym94Y24xcUVveHF3QXBSamV6N3p2WTdTQXVoXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

  1. 允许每个用户可以查看存储桶avatars

选中存储桶avatars,切换到权限设置栏,点击“新规则”按钮,弹出策略编辑弹框,选择“自定义”,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vvrPZot8-1663239309455)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=YmNkMWE4ODQ1NGIxOTNjM2IwMzJlOGNlOTI1ZjIyY2NfOG0yV05wMHUyNEZaTWNSeXk0N2ZaRGdIME1zeE14c1BfVG9rZW46Ym94Y25nT1poQW1zTVB4MWVtaHhmSXhzRGZmXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

选择SELECT操作,输入策略名称,点击“生成策略”按钮,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vb50885Z-1663239309455)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=YWY3OTJlNzc4N2FjZmM5ZDQ3YzVmOTNlOWRiMDQ3ODVfRUV5TE91NUw5WnZBUW9wQVZ3MmcyUEUyQjBOTkRDaUpfVG9rZW46Ym94Y253d1d2WjNUeW9rNEcxajFyeFJWS0RoXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

  1. 允许用户上传存储桶avatars;

选中存储桶avatars,切换到权限设置栏,点击“新规则”按钮,弹出策略编辑弹框,选择“自定义”,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B8dBvD3J-1663239309455)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=Mjc1ZmY4OGMwNTFkOTg3OWZlOWRlNDUyZjNlZWYyMjdfRURjWFRwRzZVNkNVSjNMR3Bva1R2REV2UTFTVHZsTGtfVG9rZW46Ym94Y25TbGs1TnZmUXRyOWZxUmdzOTVoSTNlXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

选择INSERT操作,输入策略名称,点击“生成策略”按钮,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r7z7BMMQ-1663239309455)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=NWFhMzA4YjIwZmIzNTY3OTVmNzFkN2RhODhmMTBjNzRfSExDQkhNTkl2MUR5YXBpNndhWUhxckZ5aTlQT3U3emNfVG9rZW46Ym94Y25UbHhhV1RMM0FKdVF1UGs5QkNaTWFiXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

查看结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MAmnvLL0-1663239309456)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=NWE3Y2Q2Yjc5ZWQ0NDAyYmFiODZmNmM0ZWM3NzFiNWFfcXN2RFNXbDhzb2JaUGRqMk51ZERrVjZmNXRjcmhOS1lfVG9rZW46Ym94Y25IdHM5TXM5alBFNml6VmxPYXZLMHhkXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

注册小程序

以上是我们在MemFire Cloud上配置的全部步骤,接下来是在微信开发者工具上操作了。

如果您还未注册过小程序,请参考官方步骤注册小程序(只需要通过您的邮箱注册一个小程序获得一个appid,然后下载一个微信开发工具即可)

下载代码

https://github.com/LucaRao/subjectWechat.git

Node.js (>=14.x <=16.x) 。

用微信开发者工具点击导入项目

选择目录是下载好的小程序项目的目录,AppID为您在微信公众平台注册小程序获得的专属appid

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-edcHBDb4-1663239309456)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=MDA1NWFiZDQwNjFhNjQwYjAyNmQ4NTEwMWQ0NzJjNDhfR3laa0FLZ2ZEdmlSTG9kQXNuSGVOd0I3Z1RsUk81d0pfVG9rZW46Ym94Y25rNHhDOFFWSUtySWY2YjZ0NEFWaWlnXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

构建npm

在右侧详情里面的本地设置把“使用npm模块”和“不校验合法域名”勾上

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-stNoP0QP-1663239309456)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=OTA0Njk5NDY4NGIzNjMzZDc4Mzc3YTMyOWRhMDVhMjNfeE9vSll4STJLVFdva0VBZkRaR0NlS3o0RlZWOEhlS3pfVG9rZW46Ym94Y240Z0NFMDdzYU53cVRXdkdyNGNpWWxlXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

打开终端,在项目目录miniprogram下执行如下命令 。

npm init
npm install

接下来,下载小程序需要的Supabase 小程序客户端和ui组件包。

npm install supabase-wechat-stable
npm install @vant/weapp

点击开发者工具中的菜单栏:工具 /构建 npm

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zlTNVOPp-1663239309457)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=MDVmN2EyNzdhMGRjOTIzZGI1N2Q5NjY5NmM1ZmE4Y2NfZEJRWHoyT0U0amNxYUxhTzRCRXNGdWJISnl5VEIyVXNfVG9rZW46Ym94Y25hMzJZOVlhNXYwVW12cGs4SWNxOHRXXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]](https://img-blog.csdnimg.cn/398deed11371428d82dfec544c6fde0e.png

这一步npm就构建完成了,我们需要的依赖也已经下载好了,目录miniprogram下会多出两个文件,如下图。

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GzW0rX0e-1663239309457)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=Mjk4YWQ5Mjc3Y2YyNjJjZjliNWUwNDBmMGQyZjZlZTJfcU5UcU1qSmp6TjZ0akpYNm85VWtsUFRPSDlBbGxYSWxfVG9rZW46Ym94Y25YQWJnTmtORWZWWGROZXJuMWZZaWdjXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]](https://img-blog.csdnimg.cn/655a23ba716d4b96ae63ecfdecb4024c.png

获取 API密钥

我们需要创建一个可以访问应用程序数据的客户端,我们使用了Supabase 微信客户端,使用他生态里提供的功能(登录、注册、增删改查等)去进行交互。创建一个可以访问我们应用程序数据的客户端需要接口的地址(URL)和一个数据权限的令牌(ANON_KEY),我们需要去应用的概览里面去获取这两个参数然后配置到lib/supabase.ts里面去。

lib/supabase.ts

import { createClient } from 'supabase-wechat-stable'
const url = ""
const key = ""

export const supabase = createClient(url, key)

回到MemFire Cloud首页,在应用/概括页面,获取服务地址以及token信息,只需要从总览中获取URL接口地址和anon的密钥。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I86MVn1W-1663239309457)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=MWI1MmM4M2YyYzY5MTRlNTYxNjE3YzA1ZGE2YjFjZWJfTTFvRGR4RWxoSG16UWJqRWVYdmhDZlliVEpjdWRGdENfVG9rZW46Ym94Y25leGdXeGhiOTg0UGdRdlRoT21abUJkXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

Anon(公开)密钥是客户端API密钥。它允许“匿名访问”您的数据库,直到用户登录。登录后,密钥将切换到用户自己的登录令牌。这将为数据启用行级安全性。

注意:service_role密钥可以绕过任何安全策略完全访问您的数据。这些密钥必须保密,并且要在服务器环境中使用,绝不能在客户端或浏览器上使用。 在后续示例代码中,需要提供supabaseUrl和supabaseKey。

编译小程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8XatcY5V-1663239309458)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=OTFjNDJmOTZiYWNlYjFkY2ZlNThjOTQ2OTU2Y2NiMzRfU2E4UnhtNFFsV1NMRXZtcWl1TzlWcFVBWFVNQW02UEFfVG9rZW46Ym94Y25WWUpOcFNYc28xUXJja3pSSllVM3ZoXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

功能1:在没有登录绑定学号时,主页不会出现当日的课程情况,请先点击“绑定学号”去注册登录后才会有该学生今日的课表情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xq7IT5Fl-1663239309458)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=NWQ1NmQ5NTE4NDFiYWM0MmQ0Y2M0OWMyOTQyMTc0ODRfVWJNemlKMXZFb0d4dlNIZWo4STdhcVE5S2JSUTFZQXZfVG9rZW46Ym94Y25La2lCMTV5cm9XV1RiNFVEcTh4dHlkXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

功能2:点击班级课表,输入学校、学院及学号可以查看该学生本周的课程情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-odZ9yoCB-1663239309458)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=ZTdiNjk3NWI1MmU4Y2QwMmMzZWMzYzQ1MmU2NzQwMGFfUFdidnoxeUNncFZESERIR0hGRzh4Mzd0Y3p0RmM3QWhfVG9rZW46Ym94Y25xQVc3OUlZdkh2SnlMR2ZvUm5hSVNuXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

功能3:更换头像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hlb5Q8pg-1663239309459)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=N2JlYWZmYjliYmM5NjZmY2RlMzNkNDgxYTk1MWYyZmNfTE55dTVuYmwyZ1pUQk1yQThuSWEzNmpzaEpodlVmbk9fVG9rZW46Ym94Y25raEhRZnBvQTZuazFMZTU3NHIyWW5mXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

上传头像需要注意: 使用wx.chooseMedia来上传文件

推荐使用方法:

    wx.chooseMedia({
      count: 1,
      sizeType: ["original", "compressed"],
      sourceType: ["album", "camera"],
      async success(res) {
        const file = res.tempFiles[0]
        const fileExt = res.tempFiles[0].tempFilePath.split('.').pop()
        const fileName = `${Math.random()}.${fileExt}`
        const filePath = `${fileName}`
        let { error: uploadError } = await supabase.storage
          .from('avatars')
          .upload(filePath, file)
        if (uploadError) {
          throw uploadError
        }
      },
    });

功能4:清除缓存(会清除当前学生的所有账号及课表信息)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bo0rlPWB-1663239309459)(https://g8nb5c2xl3.feishu.cn/space/api/box/stream/download/asynccode/?code=NTczNzA2MmUwMTYwNzc4ZmRiYzJiZjQzOWM1YTU5ZjNfY0hnUjJyN1NubllBZFZpcFF5ZUdxTXpBcURTWVJLWFRfVG9rZW46Ym94Y25Wc0hxYzBPZFdEVEhwdlc5Y1hORDdnXzE2NjMyMzkyOTY6MTY2MzI0Mjg5Nl9WNA)]

以上就是使用微信小程序和 MemFire Cloud 构建的一个完整课表小程序的具体流程。一起来试试吧~

微信小程序卫生应急培训系统开发实战 在线教育平台在现代职业培训中扮演着重要角色,特别是在医疗卫生等专业领域。基于微信小程序的轻量化解决方案,结合Python+Django后端技术栈,能够有效解决传统培训中的报名管理、考试组织和效果追踪等痛点。双Token认证机制保障了系统安全性,WebSocket实时通信和Redis队列处理则优化了高并发场景下的用户体验。这种技术架构特别适合卫生应急等需要快速响应、严格规范的行业培训场景,实现了从报名、学习、考核到证书发放的全流程数字化管理。 阅读详情

相关推荐

微信小程序-微信小程序开发实践-课程表

wx-schedule > 微信小程序-课程表(demo) 涵盖学习内容: 小程序登录流程,包括获取用户敏感数据等 设置二级页面的原生tabbar 封装http请求,页面流程和布局设计 简单实现日历功能 引入WeUI等

校园课表微信小程序全栈项目

遇到的第一个问题关于npm start。

weixin_72647214的博客 1798

微信小程序原生实现课程表

微信小程序原生实现课程表

微信小程序实现课程表

微信小程序实现一个可爱的课程表

苏苏就是小苏苏的博客 1万+

零基础学习大气污染模式(WRF、WRF-chem、smoke、camx等)

零基础学习大气污染模式(WRF、WRF-chem、smoke、camx等)

weixin_56135535的博客 653

vue 插件vue-awesome-swiper实现 三张图片,左右两边显示一半的效果的示例

希望我的愚见能够帮助你哦~,若有不足之处,还望指出,你们有更好的解决方法,欢迎大家在评论区下方留言支持,大家一起相互学习参考呀~

weixin_50450473的博客 3245

小程序实现课程表(动态生成)(附代码)

小程序实现动态课程表

m0_63361829的博客 3725

紫光同创PGL50H开发板实战:盘古50KN网口板的高速通信与数据处理

本文详细介绍了紫光同创PGL50H开发板(盘古50KN网口板)在高速通信与数据处理领域的实战应用。文章从开箱、核心芯片解析、开发环境搭建入手,重点讲解了如何配置与测试其8路千兆以太网接口和SFP光纤接口,并深入探讨了FPGA与DDR3协同进行多路数据汇聚处理的系统架构与调试方法,为网络通信与高速数据处理系统开发提供了宝贵的实践经验。

weixin_28256233的博客 452

SUPER COLORIZER在微信小程序开发中的应用:老照片修复功能实现

本文介绍了如何在星图GPU平台上自动化部署🍄 SUPER COLORIZER: 奇幻上色大冒险镜像,并实现其核心应用。通过该平台,开发者可快速搭建AI图像处理服务,轻松将模型能力集成至微信小程序,实现老照片智能上色与修复功能,为用户提供便捷的影像修复体验。

weixin_28721743的博客 161

野火STM32F407(骄阳)+无刷直流驱动板+永磁同步电机控制学习记录(四)(基于HAL库)

以上内容都是参考别人资料自学的,很多地方都是凭感觉,因为理论部分不太会算,只要电机能转就行,其他性能指标都没考虑,因为不会,所以这纯属是学习记录帖。带宽在500时,电流波动小,但是响应很慢,就是堵转后不太容易恢复转动。速度环带宽设定小了,响应不够快,带宽设定大了波动比较大,电机感觉起来也震一点,而且,当带宽设到200的时候,启动直接就锁死了,应该是PI增益设定太大了。电流环带宽的试验:去掉速度环,让Iq_Set=2,Ud=0,此时电机是电流环闭环控制,用手堵转电机然后松开,看电流的波动以及响应情况。

XUEXIDEXIAOhai的博客 4553

刚入职,软件测试岗,有点迷茫不知道下一步怎么提升自己

软件测试前景和发展都是不错,已经入了软件测试这行业就坚挺下去

大白的博客 2217

SUPER COLORIZER在微信小程序开发中的应用:老照片修复与上色功能实现

本文介绍了如何利用星图GPU平台自动化部署🍄 SUPER COLORIZER: 奇幻上色大冒险镜像,快速构建AI老照片修复与上色能力。开发者可基于该平台轻松搭建后端服务,将智能上色功能集成至微信小程序,为用户提供便捷的黑白照片修复与色彩还原服务,让珍贵记忆焕发新生。

weixin_42527665的博客 244

OpenCV卡尺工具实战:5步搞定工业级圆与直线拟合(附完整C++源码)

本文详细介绍了使用OpenCV卡尺测量工具实现工业级圆与直线拟合的5个关键步骤,包括核心原理、环境配置、边缘点提取优化、鲁棒性几何拟合实现及QT集成技巧。通过模块化C++源码和实战案例,帮助开发者快速掌握高精度尺寸测量技术,适用于机械零件、PCB板等工业检测场景。

uran的专栏 842

SUPER COLORIZER 在微信小程序的应用:个人相册智能上色工具开发

本文介绍了如何利用星图GPU平台自动化部署“🍄 SUPER COLORIZER: 奇幻上色大冒险”镜像,快速构建AI上色服务。该方案将模型部署于云端,通过API为微信小程序提供后端支持,实现个人相册中黑白老照片与素描的智能、自动化上色,让珍贵记忆焕发新生。

weixin_33298352的博客 77

Multisim 14.0元件库下载权威指南:官方与社区资源

详解Multisim元件库下载的官方途径与可靠社区资源,帮助用户快速获取Multisim 14.0所需元件模型,提升电路仿真效率。

weixin_32925455的博客 747

YOLO26-seg分割优化:FPN涨点&轻量化篇 |多级特征融合金字塔(HS-FPN),助力小目标检测

​​​​​摘要:本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其关键架构改进及其在实时边缘目标检测中的性能基准测试。YOLO26于2025年9月发布,是YOLO系列最新、最先进的成员,专为在边缘及低功耗设备上实现高效、精确且易于部署的目标而构建。本文依次详述了YOLO26的架构创新,包括:移除了分布焦点损失(DFL);采用端到端的无NMS推理;集成了渐进损失(ProgLoss)与小目标感知标签分配(STAL);以及引入了用于稳定收敛的MuSGD优化器。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 280

SUPER COLORIZER与微信小程序结合:打造个人AI画师工具

本文介绍了如何利用星图GPU平台自动化部署“🍄 SUPER COLORIZER: 奇幻上色大冒险”镜像,快速搭建AI上色后端服务。通过该平台,开发者可便捷地将此AI能力与微信小程序结合,打造个人AI画师工具,实现一键为线稿、老照片等图片进行智能上色的核心应用场景。

weixin_42323064的博客 376

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SUPER COLORIZER集成微信小程序开发:打造在线动漫上色工具

本文介绍了如何利用星图GPU平台自动化部署🍄 SUPER COLORIZER: 奇幻上色大冒险镜像,快速构建AI驱动的在线动漫上色服务。该方案将模型部署于云端,通过微信小程序提供便捷前端,实现用户上传黑白线稿即可自动获得生动上色图片的核心应用场景,极大简化了动漫创作流程。

weixin_28736145的博客 36

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SUPER COLORIZER集成开发指南:在微信小程序中调用上色API

本文介绍了如何在星图GPU平台上自动化部署“🍄 SUPER COLORIZER: 奇幻上色大冒险”镜像,并将其AI能力集成至微信小程序。通过该方案,开发者可快速构建小程序应用,为用户提供便捷的AI上色服务,典型应用场景包括为黑白老照片或手绘线稿智能填充自然色彩,实现一键焕新。

weixin_30951515的博客 79

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SUPER COLORIZER 集成微信小程序开发:打造个人头像奇幻上色工具

本文介绍了如何利用星图GPU平台自动化部署“🍄 SUPER COLORIZER: 奇幻上色大冒险”镜像,快速构建AI上色服务。基于该服务,开发者可轻松集成微信小程序,为用户提供便捷的个人头像智能上色功能,将黑白或普通照片一键转化为色彩丰富的奇幻风格图像。

weixin_35045970的博客 264

SUPER COLORIZER与微信小程序结合:打造在线图片上色工具

本文介绍了如何利用星图GPU平台自动化部署“🍄 SUPER COLORIZER: 奇幻上色大冒险”镜像,并结合微信小程序构建在线图片上色工具。该方案将强大的AI上色能力封装为云端API,用户通过小程序即可便捷地为黑白老照片或线稿进行智能上色,轻松实现照片修复与创意设计。

weixin_42186015的博客 187

【CSS】创建上标文本,理解vertical-align: super的作用。(适用于商标符号®、数学指数和化学式等)

本文详解CSS属性vertical-align: super,用于实现上标效果。适用于行内元素,常见于数学公式(X²)、化学式(H₂O)、注册商标®等场景。

m0_73856514的博客 779

SUPER COLORIZER赋能微信小程序:打造个人专属头像上色工具

本文介绍了如何利用星图GPU平台自动化部署“🍄 SUPER COLORIZER: 奇幻上色大冒险”镜像,快速构建AI驱动的图像处理服务。该方案的核心是将该镜像部署为后端API,为微信小程序等应用提供智能黑白图片上色功能,典型应用于老照片修复、手绘线稿自动上色等场景,极大降低了用户创作彩色图像的门槛。

weixin_30356433的博客 68

SUPER COLORIZER集成至微信小程序:个人AI画师随身携带

本文介绍了如何将AI图像上色模型“🍄 SUPER COLORIZER: 奇幻上色大冒险”集成至微信小程序,打造个人AI画师。开发者可在星图GPU平台上自动化部署该镜像,快速构建后端服务。该镜像的核心应用场景是,用户上传黑白线稿后,可一键生成动漫、水彩等多种风格的彩色图片,极大简化了数字绘画的上色流程。

weixin_42613017的博客 36

微信小程序原生APP对比实战:从 5个维度分析选型与接口设计

本文深度对比微信小程序与原生APP在移动互联网开发中的五大核心维度,包括开发效率、性能体验、成本控制、生态能力和接口设计。通过实际案例和详细数据,提供科学选型建议,并分享RESTful接口设计实战方案,帮助开发者做出最优技术决策。

weixin_34389926的博客 481

微信小程序商城全栈开发:从架构到支付实战

微信小程序开发已成为移动电商的主流技术方案,其核心在于前后端分离架构与微信生态能力的深度整合。从技术原理看,小程序采用JavaScript+WXML/WXSS实现视图层,通过HTTP API与后端通信,而微信支付等原生能力则通过JS-SDK桥接。在工程实践中,全栈开发需要特别关注支付回调处理、库存管理等业务难点,其中事务处理与乐观锁机制是解决高并发场景的关键技术。典型的电商系统包含用户授权、商品展示、订单支付等模块,采用ThinkPHP+MySQL的技术组合可快速构建RESTful API服务。通过合理使用

weixin_30357231的博客 390
上一篇: 系统公告 | MemFire Cloud推出微信小程序SDK
下一篇: 应用实战|使用DBGate管理MemFireDB数据库
NimbleX_
博客等级 码龄6年 241粉丝 82原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值