招协的大家貌似需要一个信息收集系统,考虑到便捷性最终决定使用微信小程序。性能需求估计不会要求太高,但是毕竟学了这么多优化,还是尽力多优化优化(
前言
考虑到招协应该不太可能部署实体服务器,规模不大加维护麻烦。云托管阿里腾讯也可以,但是考虑到既然是微信小程序,那就用小程序配套的设备就好了。交给微信有的云服务器貌似也是个不错的选择,其中优势真的很多,可以说省了很多事,具体不再赘述,如下面视频所示如下面视频所示:
有个点好,自动伸缩,即服务会更具实际占用来调整大小,并根据此收取相应的费用,这样看到服务器没活干就不会焦虑了(bushi,详细见特性 https://www.haruhi.fans/?p=40#serverless ,上课刚讲过就用上了
价格方面,我认为我们挺符合实例中活动类小程序(计算+数据库)
这一条的
业务特征
非活动时间段访问很少或无人访问;
活动开始时突发的集中高流量,随着活动进行逐渐降低,活动后期参与人数较少;
若是一次性活动,结束后资源需要及时释放。
对服务高可用要求高,无法接受服务器宕机。
资源使用量预估
假设一个月中每天举行一次活动,每次活动20:00~24:00持续4小时。其中前一小时为高峰,后三小时平缓。
实际上数据库存储数据量是不断累积增长的,费用按实时存储量收取。为计算简便,数据量取统一值,真实消耗量会更小。
云托管自带高可用能力,无需额外准备冗余资源。
按照预计,费用估计为28.3545元/月
- CPU:2.75 * 30= 82.5 (核小时)
- 内存:5.5 * 30 = 165 (GB * 小时)
- 数据库算力:1.75 * 30 = 52.5 (个小时)
- 数据库存储:4 * 30 = 120 (GB * 小时)
实际来说我们费用可能会在集中访问阶段大一点,但问题不大,费用也会在那一个月集中提高一下而已。相较于传统的已经很有优势了。
部署方式
这里他给了两种部署方式,一种是微信云开发,一种是微信云部署。
两者什么区别呢?简单来说,微信云开发前后端一体化,微信云部署只是个后端。前者使用起来方便些,对于小项目很友好,毕竟很快嘛,并且提供了很好的模板,开发起来应该会非常方便。
不过最后还是选择云部署,前后端解耦使得我的后端可以更加灵活的去写,可以使用我熟悉的java,而不是什么 WXS(WeiXin Script)
,WXML(WeiXin Markup Language)
这些莫名奇妙的东西。同时云开发也要收费,20/月,属于是额外的收费。这个价格并不算高,但是看到以前是免费的,22年突然涨价导致很多微型项目被套牢,要么乖乖给钱,要么重新开发,这还是令我后怕的。为了不埋下这个未知的大雷,还是用的云部署。
技术路线
综上所述,技术路线为
微信小程序前端,springboot后端,mysql数据库
开始开发
前端
项目目录
小程序项目有两个部分:主题文件、页面文件。
主题文件(全局文件),能够作用于整个小程序所有界面,必须放在根目录下
主题文件三部分,app.js(入口),app.json(全局配置文件),app.wxss(全区样式),这些都是必须的。
每个页面是一个文件夹,放在page下面,.js:页面逻辑 .wxml:页面结构 .wxss:页面样式 .json:小页面配置
全局配置
app.json
https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html
tabBar
下面的配置,设置图标,点击时效果,有无黑边等
https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#tabBar
界面配置优先于全局配置
配置文件和配置sass
projetc.config.json:项目配置文件,常用来进行公共配置
project.private.config.json:项目私有配置,常用来个人配置
https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html
可通过详情
显示的进行配置
sitemap.json
一般不需要配置,默认可以被索引
小程序样式组件
样式-尺寸单位
px是固定单位,推荐使用微信的rpx,类似于百分比绘制。
全局/局部样式
组件
view标签就相当于<div>,里面可以嵌套别的
Swiper
轮播图,具体效果参数可配置
https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html
Image
text
navigation
scroll-view
图标
使用方式:
挑选,把需要的加入到购物车,然后生成css样式的代码
点开css网址,复制里面的内容;
回到编辑器,创建iconfont文件夹,在里面创建scss文件,把内容复制进去。
最后,因为要全局引用,所以回到app.scss里面,
@import “./iconfont/iconfont”
背景图
使用background-image设置,注意不支持本地路径
事件处理
使用方法
事件分类
事件传参
如果要获取数据,在事件里面如下图找到绑定的数据即可
handler2(event){
console.log(event)
console.log(event.currentTarget.dataset.id)
}
另一种传参方式
备案!
有预感最难的就是备案了,还好有测试号,那就先开发好了
参考资料:
https://zhuanlan.zhihu.com/p/711850068?utm_psn=1846718651178307585