开发飞书小程序积累下的经验与流程
发表时间:2023-10-17 18:10:34
文章来源:炫佑科技
浏览次数:184
菏泽炫佑科技 菏泽炫佑小程序开发 菏泽炫佑app制作 炫佑科技
开发飞书小程序积累下的经验与流程
*近,由于工作需要,首先在微信小程序开发平台上开发一套程序。 但由于微信小程序无法保证整个数据流在内网封闭,所以我决定改用飞书小程序,并集成到飞书小程序中。 所有功能已迁移至飞书小程序。 但飞书小程序上的开源博客相对较少,所以一开始上手还是比较痛苦的。 现在小程序整体开发已接近尾声,我想总结一下飞书小程序近期开发中积累的经验和过程。
开放文档和平台
飞书小程序提供了很多原生API和服务器支持功能,可以极大丰富小程序的能力。 因此,多参考文档对于程序的设计和开发会有很大的帮助(主要是飞书的小程序开源社区还不是很丰富,很多功能也没有博客讲解如何使用)
飞书小程序开发文档:
飞书开发工具:
微信小程序vs 飞书小程序
微信小程序的语法格式在很多场景下与飞书小程序是一致的。 如果遇到语法不确定的情况,可以直接参考微信小程序的语法。 如果这不起作用,请转到飞书开发文档。
微信小程序一键迁移
打开飞书开发工具,可以看到右上角有一个迁移工具按钮。 点击迁移工具,直接将微信小程序迁移到飞书小程序。 该工具可以自动将大部分微信小程序语法替换为飞书。 小程序语法,但不保证转换结果绝对正确。 可能仍然存在一些不正确的语法。 这个时候我们还是需要自己去调试程序,保证程序的可用性。
有关如何使用移动工具的更详细说明,请参阅:
移动工具介绍文档
使用移动工具的副作用
使用搬家工具后,并不意味着可以立即进入开发调试阶段。 这时,我们还需要面对另一个问题——微信小程序和飞书小程序在技术支持上的差异。
首先我们需要注意修改..json文件中的appid。 当我们迁移程序后,appid不会直接为我们改变。
//在开发后台创建应用后可以看到appid:开发后台链接
以后如果我们在微信小程序中使用了云函数和云数据库,可能会遇到麻烦,因为飞书小程序比较轻量级开发飞书小程序积累下的经验与流程,不支持云函数和云数据库。 这时候我们就可以寻找另一种数据存储的解决方案——多维表。 关于多维表的使用,下面我会介绍一下。
页面展示和页面陷阱
一页一页的构成了小程序的基本结构。 如果您想配置打开小程序默认界面,有两种选择:
在app.json中添加一个字段,该字段值对应的页面将被配置为入口页面。
"": "pages/index/index" 如果app.json中没有配置该字段,则默认为页面列表中的**项。
{
"pages":[
"pages/index/index"
]
}
一般来说,配置好页面中的内容后,就可以满足小程序
更多app.json全局配置选项参考文档
在pages文件夹中,一般我们会存放各个页面的文件夹
结构一般如下
├── 页数
│ │── 首页
│ │ ├── home.ttml
│ │ ├── home.js
│ │ ├── home.json
│ │ └── home.ttss
│ └── 用户
│ ├── 用户.ttml
│ └── user.js
值得一提的是,在所有的js文件中,无论是否使用数据对象,我们都需要声明数据对象,否则总会打印错误。
Page({
data:{
},
});
另外,所有的json文件也需要初始化。 即使没有数据,也需要写一对正负大括号。
获取用户信息
与微信小程序不同的是,飞书小程序获取用户信息时,还需要先调用login方法,然后再调用。
getUserProfile() {
// 用户登录
tt.login({
// 成功回调
success(res) {
console.log(JSON.stringify(res));
// 获取用户信息
tt.getUserInfo({
// 要求敏感信息
withCredentials: true,
success: function(res) {
console.log(JSON.stringify(res));
tt.setStorageSync('user', res);
app.globalData.userName = res.userInfo.nickName;
},
fail: function(res) {
console.log(`getUserInfo fail: ${JSON.stringify(res)}`);
}
});
},
fail(res) {
console.log(`login fail: ${JSON.stringify(res)}`);
}
})
},
更多登录信息请参考tt.login
欲了解更多信息,请参阅tt。
关于跳转页面堆栈的问题
当我们的小程序在不同页面之间跳转时,我们可能更习惯使用这种方法,但是每次使用该方法时,都会将当前页面压入堆栈,然后进行跳转操作。 每次向左滑动屏幕边缘返回某个页面时,该页面都会从页面堆栈中弹出。
例如,我们有两个页面:pageA 和 pageB。 我们在 pageA.js 文件中调用它们。
tt.navigateTo({url: '../pageB/pageB'});
这时,程序会先将pageA压入栈(stack),然后从pageA跳转到pageB; 注意,如果这里说的是页面必须成功入栈,才会执行跳转。 操作,如果页面推送失败,则不会进行后续的跳转操作。 如果此时用户在B页面向左滑动屏幕,就会弹出栈顶的A页面,并跳转到A页面。
不过值得注意的是,页栈的*大值为10,当页栈的大小达到10时,再次调用该操作将不再起作用,页栈不会发生变化,页面也不会跳转。
所以我们可以将它与以下内容结合使用:
tt.navigateTo({
"url": "../shotPhoto/shotPhoto",
success(res) {
console.log(JSON.stringify(res));
},
// 失败回调
fail(res) {
console.log(`navigateTo fail: ${JSON.stringify(res)}`);
tt.redirectTo({
"url": "../shotPhoto/shotPhoto",
success(res) {
console.log(JSON.stringify(res));
},
fail(res) {
console.log(`rediractTo fail: ${JSON.stringify(res)}`);
}
})
}
});
不过需要注意的一点是,只能跳转到非界面。 如果想跳转到某个界面,请使用该方法。
欲了解更多信息,请参阅
欲了解更多信息,请参阅
欲了解更多信息,请参阅
取得认证
在飞书小程序的开发中,有时我们在使用飞书服务器的某些功能时,可能会需要进行身份验证。 这时我们就可以通过小程序调用post请求来获取相关数据。
值得注意的是,认证信息2小时后过期,过期后可以重新申请。
tt.request({
url: 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal',
method: "post",
data: {
app_id: "appid",
app_secret: "secret"
},
header: {
'Content-Type': "application/json; charset=utf-8"
},
success: function(res) {
console.log("try to get accessToken success:" + res);
accessToken = res;
tt.setStorageSync("accessToken", res);
tt.setStorageSync("accessTime", new Date().getTime());
},
fail: function(res) {
console.log("try to get accessToken failed:" + res);
}
})
多维表? 简单的数据库配置!
多维表文档多维表
多维表可以看作是简化的关系型数据库,在飞书小程序不支持数据库的情况下可以作为数据库的替代品。
在对多维表添加操作时,我们需要先自己创建一个多维表,并获取它的and,
例如我们的多维表的URL是
? 表=&视图=
此时,是微信小程序开发书,是。
同时,我们还需要获得认证。 获得认证的方法如上所述。
这里我们只显示新数据:
tt.request({
url:'https://open.feishu.cn/open-apis/bitable/v1/apps/apptokenapptoken/tables/tableidtableid/records',
method: "post",
header: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + accessTokenString
},
data: {
'fields': {
"人力耗时": 64,
"人力评估": "8",
}
},
success: function(res) {
console.log("上传数据成功"+ res);
},
fail: function(res) {
console.log("上传数据失败" + res);
}
})
持续更新。 。 。
我是个新手,在网上被人殴打。 如果有任何错误,请指正。