微信小程序
借鉴小程序:苏体赛事,懂球帝
1. 介绍
- 不需要安装
- 微信小程序、支付宝小程序、百度小程序、抖音小程序等
2. 环境准备
注册账号
- 新申请了126的邮箱:mini1136233862@126.com,密码:同学信网
- 进入小程序注册页,密码与上同
获取APPID
- 左侧菜单栏 – 开发 – 开发管理 – 开发设置 :wx84899d034d4a1b31
开发工具
- 下载
- 可以有编码工具: ** 敲代码 + 开发者工具:预览 ** 的组合
3. 第一个微信小程序
- 初次登录 – 扫码
- 项目路径: 前往 / 个人 / WeChatProjects
- 创建项目,全部使用最基础的:
AppID:使用测试号(不使用云服务)-- 语言:JavaScript
4. 开发工具介绍
- 界面:
- 菜单栏:
5. 小程序结构目录
自己的原生框架 : mina
- 和传统web对比:多了一个配置层
- 文件夹pages:
- index文件夹:存放了首页的页面文件
- log文件夹:日志页面的文件
- 文件夹utils:帮助文档
- app.js
- 全局文件
- 入口文件
- app.json
- 全局的配置文件:标题名称等
- app.wxss
- 全局的样式文件
- project.config.json
- appID等的配置文件
- sitemap.json
- 只需要在发布时使用
6. 全局配置文件 : app.json
pages字段
- 当前页面中有哪些子页面,对应文件
- 书写时无后缀
- 在pages字段中加入新项,开发ide会自动帮你新建文件夹(vs code无此功能)
- 第一个项即是入口页面
window字段
- 小程序顶部
- 属性 - 查文档
tabbar字段
- 底部导航栏
- 自己加
- list数组中
每一页就是每一项,每一项之间用逗号- 每一页的路径:就是pages字段的一项
- 标题名称
- 未选中状态的图标 / 选中状态的图标 - 路径
- 别的属性,可查文档
7. 页面配置文件 - page.json
- 各个页面下的 局部配置文件的顶部导航栏(相当于window)
- 上拉下拉
- 可查文档
8. sitemap配置 - sitemap.json
是否允许被微信官方的爬虫查找,索引
9. 数据绑定前的代码编辑器技巧
- vs code + 微信开发者工具 :利用微信开发者工具的自动创文件功能
- wxml / html文件中 :
- text标签:相当于span。行内元素 - 不换行
- view标签:相当于div。默认换行
- 复选框:checkbox。激活属性:checked
- js文件:
- 初始时不是空白,不能删除
- 初始化的数据:data域
- 在vscode中安装插件 小程序开发助手
- 查看–扩展–“小程序开发助手”
10. 数据绑定
js文件和wxml/html文件。两个文件之间的联系
-
js文件
- data域,最初的数据
-
wxml/html文件
- 字符串 / 数字 / bool
- 两个{}中放js中的变量名 即: { {msg} }
- 对象类型object
- 具体属性。打点 即: { {person.name} }
- 在标签的属性中
- 要用引号包起来 即: “{ {msg} }”
- 在微信开发者工具控制台 的wxml中也可以看到数据
- 使用bool类型时,不要空格
- 字符串 / 数字 / bool
11.语法
格式
- 数组:wx:for=" " — ""中为数组或者对象
- wx:for=" {{list}} "
- 项:wx:for-item=" " — ""中为循环项的名称
- wx:for-item=" item "
- 索引:wx:for-index=" " — ""中为循环项的索引
- wx:for-index=" index "
(只有一层循环时,可以省略2.和3. )
(非循环数组时–循环对象时。改一下名字)
(多层循环不可以重名)
index为专有名词?
item为专有名词?
需要在外层接一个数组名,index和item就为数组的item和index。
列表渲染,提高性能—提供key属性
- 格式: wx:key=“”
- 字符串:只能是数组对象中的某个属性
- wx:key=“id” (id就是那个的属性)
- 固定写法:wx:key=“*this*”
- 表示item
- 字符串:只能是数组对象中的某个属性
12.block标签
写代码时能看见,渲染后看不到
- 加类名 class=“my_class”
- 循环时可以不用多加一层标签
13.条件渲染
wx:if
- wx:if={{true/false}},相当于判断语句 , 也可以wx:elif/wx:else是一样的
hidden
- hidden=“{{true}}”,可以隐藏标签
不频繁切换显示时,用if—本质是从页面直接移除
频繁切换时,用hidden—本质是添加样式
hidden不可与display一起使用,会覆盖掉hidden
14.事件绑定1(bind)
- 在输入框输入时,在下方标签同步显示输入的值
- 步骤:
- 预备
- 新建页面,利用工具自动生成文件
- 进入js文件,删除掉多余内容,只留下一个data
- 在data中写一个参数num
- 进入wxml中,写入一个input组件
- 写一个view组件
- 绑定
- 在wxml中的组件上,加入 bindinput=“函数”
- 在js中和data同一层级,写函数
- bindinput函数,每次input时都有响应。通过事件源对象
- 赋值给的num
- 不可以用"="直接赋值
- 用set函数
15.事件绑定2(bind)
- 通过"加号","减号"的button,控制输入框内容的+1和-1
- 预备
- <button> 标签
- 加入手机端的点击事件, bindtap=“函数名”
- 不能直接传实参数 — 传参数方式,data-operation=“{{1}}”
- 也可以通过控制台参数e,看到,值就是:operation
- const? 常量
- 不能确定时
- 通过控制台,使用参数e来看
- 控制和设置
- 获取通过this.来获取
- 设置时通过set方法
16.样式 wxss,相当于css+一些新增
- 尺寸单位:rpx 小程序独有的单位,能够自适应屏幕
- 屏幕中像素和px和rpx的换算计算,使用函数
- 导入 : @import “相对路径”
17.选择题和less
- 无通配符,不可选择全部
- vscode 扩展中。下载easyless
- 配置:
- 在vscode的设置中(setting.json)
- 左下角设置-设置-右上角:打开设置,加入配置
- {
“less.compile”: {
“compress”: true, // 是否删除多余空白字符
“sourceMap”: false, // 是否创建文件目录树,true的话会自动生成一个 .css.map 文件
“out”: “${workspaceRoot}\src\assets\css\”, // 输出css文件目录,false为不输出
}
}复制代码
- 配置:
18.组件
- view
- view相当于div + 新增
- 相当于button
- text
- decode
- image
- 图片统一用外网的图片(图片大小的原因)
- 土豆图床(目前已被封)/https://imgbb.com/
- 属性
- swiper
- 轮播组
- 必须要搭配swiper-item,嵌套进swiper中
- 修改swiper的尺寸:计算(比例计算),wxss中修改
- 属性(可以先全删掉)
- 自动轮播,在标签中写
- 设置轮播时间
- 循环轮播
- navigator
- 类似超链接标签。相当于块级元素,默认换行。
- 属性
- url 要跳转的路径:绝对/相对路径
- target 跳转到本小程序,还是别的小程序
- rich-text
- 1
- nodes属性 nodes=“{{ }}”
- 接受标签字符串
- 接受对象数组
- button的外观
- button的开放能力1
- button的开放能力2
- icon图标
- radio单选框
- checkbox复选框
19.自定义组件(tabs)
- 新建新的文件夹components。
- 新建文件夹tabs。右键,新建components(组件名称)。文件结构和pages相同
- 定义,以上
- 声明,某个page的json文件中
- 使用,直接使用声明时的标签
- 新的文件
- js:最外层是component了
- json:引用其他组件
- wxml:
- wxss:
20.使用自定义组件
- 初始化
- 声明,在所要使用它的页面的
json文件的usingComponents中声明:
“tabs”:“…/…/components/tabs/tabs” - 使用
在wxml中。直接<tabs>
- 声明,在所要使用它的页面的
- 自定义组件
- 进入自定义组件的wxml文件中
- 大的view中,放两层(用打点的方式)
- 样式,进入wxss文件中
- 改wxss数据为父向子传递
- 进入tabs.js(js文件)
- data块
- 进入wxml文件,用for循环来遍历
- 激活选中
- 在view的属性中绑定一个点击事件,名为handleItemTap
- 在js文件的methods块中写
- 给所有的选项都设为false,然后给当前的设为true
- 获取索引:console.log(e),然后点击,看控制台
- 拿到“索引”,用forEach方法
- 严谨写法
- 父向子传递数据
- 把标题的内容都写死了
- 防止别的页面用到这个组件
- 页面向组件传递数据,通过标签属性的方式
- 子向父传递数据
- 点击事件时,数据只是复制了一遍,但是另外的数据没改变
- slot(插槽)
- 点击不同的标题显示不同的内容,相当于占位符
- 在子页面中加入点击事件
- 组件的其他知识
- 文档
- 应用生命周期
- 1
21.
MyMiniProgram
选一个模板
nba 还行
赛事窗 还行
参考 教程后面
1.准备工作
无关代码删去
- 全局文件中
- app.json中
- pages中只留下index
- 改掉小程序标题
- pages文件夹。
- 删掉logs
- app.js
- 全删掉
- 输入 wx-app。
- app.json中
- index文件夹
- wxml中全删掉,加一个 <view>首页 </view>
- wxss 全删掉
- js文件全删掉,加一个 wx-page
- 加小标题:index.json文件夹中。将app.json中文件夹加入
- 删掉utils
- 新增文件夹
- styles:存放公共样式
- components:存放组件
- lib:存放第三方库
- utils:自己的帮助库
- request:自己的接口帮助库
- 新增文件夹
- 新的页面—即是需要用到的页面
- 在app.json,pages中
- pages/名字/index
- 字体图标
- 阿里巴巴矢量图标库 iconfont
- 加入项目,通过类的方式,使用:fontclass
- 查看在线链接。打开网址,全选,复制
- 在styles文件夹新建wxss文件:iconfont.wxss
- 粘贴
- 使用
- <text class=“类名”>
2.tabbar
- 新增文件夹icons
- 在app.json中新增 tabbar
- list数组
- pagePath:在Pages中复制
- text:文字
- iconPath:icons文件夹中的图片的相对路径
- selectedIconPath:icons文件夹中的图片
- 别的属性
- color:灰色
- selectedColor:和logo一个颜色
- backgroundColor:背景颜色,白色
- list数组
3.全局样式
- 不能识别通配符 * {}。只能通过一个一个名字来手写
- 最外层:page,里面可以放很多别的标签
- 主题颜色,
- 提前定义一个变量(less中知识/原生的变量)
- 定义:–变量名:颜色
- 使用:
- 进入某个子页面的css文件中
- color:var(–变量名)
- 定义统一的字体大小
- font-size:28rpx;
- 主题颜色,
- 小程序标题的背景颜色(app.json文件)
- window字段
- navigationBarTextStyle
- 首页的页面效果
-
搜索框
- component文件夹下新建searchInput文件夹,然后右键,新建component
- 多了四个文件
- 使用/引入
- 声明:在要用该组件的子页面的json文件中声明
- 写法留意一下()
- 使用,在wxml中直接加标签
- 样式
- wxss后缀改为less
- 在less文件中写代码
- 会自动生成一个wxss文件
- 点击跳转的效果
-
图片轮播(如何用自己的服务器做图片的api,get/等)
- 图片。使用WebService来获取:api
- swiper在view标签内
- 图片地址:暂时用本地图片代替
- 发送异步请求
- 回调函数
- 把获取到的东西,渲染成图片
- swiper+swiper-item
- 样式
- 看原图的尺寸:1024 × 683
- 让高度自适应,宽度100%
- 图片标签的mode属性
- 进入less
- 1
- 让swpier标签等于图片大小(固定值)
- swiper标签内部
- 自动轮播:autoplay
- 指示器:indicator-dots=“true”
- 循环轮播:circular=“true”
- 指示器颜色
-
4.优化http请求
5.分类导航
6.楼层(json数组)
7.分类页面
8.列表页面
- 静态页面
- 问题,套太多层view。导致布局动不了奇怪
- 动态页面
- 下拉刷新
- 上拉加载下一页
- 列表页面