【微信小程序的开发】初步认识
目录
app.json
实例
标签名称
属性结点
模块语法
rpx尺寸单位
css选择器
小程序宿主环境
通信主体
通信模型
运行机制
视图容器
表单组件
其他常用组件
API
项目结构 top
pages:放页面utils:放模块app.js:小程序入口文件app.json:小程序全局配置app.wxss:全局样式project.config.json:项目配置文件sitemap.json:配置小程序及其页面是否允许被微信索引
页面组成 top
.js:【页面脚本文件】 存放页面数据,事件处理函数.json:【当前页面配置文件】 配置窗口外观。表现.wxml:【页面模块结构文件】wxss:【当前页面的样式文件】
json 配置文件 top
app.json
全局配置 所有页面路径、窗口外观、界面表现、底部tap等
pages:记录所有小程序路径window:全局定义小程序所有页面背景色、文字颜色等style:全局定义小程序组件所使用的样式版本sitemaplocation:指明stiemap.json的位置
project.config.json
对开发者工具的个性化配置
setting:保存编译器相关配置projectname:保存项目名称appid:保存小程序的账号id
sitemap.json
小程序页面是否允许被微信搜索
每个页面的.json
此页面的配置文件,会覆盖全局配置文件
实例
优雅地新建页面
当前有两个页面:index和logs,接下来新建一个list页面

操作方法:在app.json的pages数组中添加list项,并保存

保存后,pages目录下会多一个list文件

一点说明:仔细观察你的 编译器调试窗口,你会发现list页面似乎被覆盖了,如果你和我一样,将list页面写在pages数组的第一行,那编译器目前显示的就是index页面。就是说,页面的显示顺序和路径在pages数组的位置有关。
wxml top
标签语言,构建小程序页面结构
标签名称
view:实现布局text:文本元素image:图像元素navigator:导航跳转
属性结点
<navigator url = "pages/home/home"></navigator>
模版语法
- 数据绑定
- 列表渲染
- 条件渲染
wxss top
样式语言
支持rpx尺寸单位
在不同大小的屏幕上自动单位换算
提供全局样式和局部样式
app.json是全局样式
页面的.json是局部样式
仅支持部分css选择器
.class和#idelement- 并集选择器、后代选择器
::after和::before等伪类选择器
js文件 top
app.js:小程序项目入口,通过调用App()方法启动整个小程序- 页面的js文件:页面的入口文件,通过调用
Page()方法创建并允许此页面 - 普通的js文件:功能模块文件,封装公共函数或属性
宿主环境 top
程序运行所必须依赖的环境

所以微信是小程序的宿主环境
小程序宿主环境
- 通信模型
- 运行机制
- 组件
- API
通信主体
通信的主体的渲染层和逻辑层

通信模型
1、逻辑层和渲染层
2、逻辑层和第三方渲染器

均由微信客户端进行转发
运行机制
启动过程
- 把小程序的代码包下载到本地
- 解析
app.json全局配置文件 - 执行
app.js小程序入口文件,调用APP()创建小程序实例 - 渲染小程序首页
- 小程序启动完成
页面渲染过程
- 加载解析页面的
.json配置文件 - 加载页面的
wxml模版和wxss样式 - 执行页面的
.js文件,调用Page()创建页面实例 - 页面渲染完成
组件 top
由宿主环境提供
常用组件
- 视图容器
- 基础内容
- 表单组件
- 导航组件
常见视图容器
view:普通视图容器,块级元素,实现布局效果scroll-view:实现滚动的列表视图swiper和swiper-item:轮播图容器组件和轮播图项目组件
实例1
实现如下效果

首先要将list设置为首页,方法之前提过
修改list.wxml
<!--pages/list/list.wxml-->
<!--view 默认占满一行-->
<view class = "container1">
<view>A</view>
<view>B</view>
<view>C</view>
</view>
修改list.wxss文件
/* 设置container的格式*/
.container1 view{
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
/* 设置子container1的颜色*/
.container1 view:nth-child(1){
background-color: lightblue;
}
.container1 view:nth-child(2){
background-color: lightgreen;
}
.container1 view:nth-child(3){
background-color: lightyellow;
}
.container1 {
/* 横向放置*/
display: flex;
/* 分散对齐*/
justify-content: space-around
}
实例2
实现如下滚动效果:

修改list.wxml
<!--轮播图区域-->
<!--indicator-dots 属性:显示面板指示点-->
<!--使用纵向滚动时,必须给scroll-view一个固定高度-->
<swiper class = "swiper-container" indicator-dots>
<!--第一项-->
<swiper-item>
<view class="item">A</view>
</swiper-item>
<!--第二项-->
<swiper-item>
<view class="item">B</view>
</swiper-item>
<!--第三项-->
<swiper-item>
<view class="item">C</view>
</swiper-item>
</swiper>
修改list.wxss文件
/* 设置container的格式*/
.swiper-container{
height: 150px; /* 设置轮播图容器高度*/
}
/* 设置item样式*/
.item {
height: 100%;
line-height: 150px;
text-align: center;
}
/* item添加背景色*/
/* nth-child(1) .item 中间有一个空格,表示逗号*/
swiper-item:nth-child(1) .item{
background-color: lightblue;
}
swiper-item:nth-child(2) .item{
background-color: lightyellow;
}
swiper-item:nth-child(3) .item{
background-color: lightgreen;
}
注意看和实例1的不同之处
实例3
实现轮播图效果:
修改list.wxml
<!--scroll-x属性:允许横向滚动-->
<!--scroll-y属性:允许纵向滚动-->
<!--使用纵向滚动时,必须给scroll-view一个固定高度-->
<scroll-view class = "container1" scroll-y>
<view>A</view>
<view>B</view>
<view>C</view>
</scroll-view>
修改list.wxss文件
/* 设置container的格式*/
.container1 view{
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
/* 设置子container1的颜色*/
.container1 view:nth-child(1){
background-color: lightblue;
}
.container1 view:nth-child(2){
background-color: lightgreen;
}
.container1 view:nth-child(3){
background-color: lightyellow;
}
.container1 {
border: 1px solid red;
/* 给scroll-view固定高度*/
height: 120px;
width: 100px;
}
swiper组件的常用属性

表单组件
text文本组件,行内元素rich-text富文本组件把html字符串渲染为wxml结构
实例
实现如下效果:

修改list.wxml
<!-- text 和 rich-text 的用法-->
<view>
手机支持长按选中的效果
<text user-select>985211</text>
</view>
<rich-text nodes="<h1 style = 'color: red;'>标题</h1>"></rich-text>
使用rich-text的场景:当得到html文件时,需要渲染为wxml文件
注:手机的长按选中效果要在真机上测试
点预览:

其他常用组件
button:按钮组件image:图片组件,默认宽300px,高240pxnavigator:页面导航组件
button实例
效果如下:

修改list.json:
<view> ~~~~~~~~~通过type指定类型~~~~~~~ </view>
<button>默认按钮</button>
<button type="primary">原始按钮</button>
<button type="warn">警告按键</button>
<view> ~~~~~~~~~~size = "mini"~~~~~~~~~~ </view>
<button size="mini">小按钮</button>
<button type="warn" size="mini">小warn</button>
<view> ~~~~~~~~~~plain镂空效果~~~~~~~~~~ </view>
<button plain>镂空</button>
image组件
先来个实例:

修改list.wxml:
<!--渲染空图片-->
<image></image>
<!--使用src指定图片位置-->
<image src="/pages/images/a.jpg" mode="widthFix"></image>
修改list.wxss:
image {
border: lightblue 1px solid;
}
mode属性
scaleToFill:默认值,使图片拉伸填充至整个image元素(不按比例缩放aspectFit:完整显示长边aspectFill:完整显示短边widthFix:宽度同image元素,高度自动变化heightFix:高度同image元素,宽度自动变化
我的思考:除非image元素和图片的比例一样,不然都是要缩放的图片的长宽、image元素的长宽及image元素的比例共五个标准,对应上面五个属性。
API
官方分为三大类
- 事件监听API:以
on开头,监听某些事件的触发 - 同步API:以
Sync结尾,结果是函数返回值或异常 - 异步API:需要通过
success,fail,complete接收结果
【微信小程序的开发】初步认识的更多相关文章
- 《微信小程序商城开发实战》笔者的新书,欢迎各位粉丝上京东购买
作者图书京东链接,请点击------>>> **微信小程序商城开发实战** 附京东真实评价截图: 编辑推荐 在当今移动互联网大潮中,微信应用凭借其庞大的用户基数和极强的用户黏性 ...
- 微信小程序如何开发制作
微信小程序如何开发制作 微容SMO是一款微信小程序的免费在线制作工具,用户在微容平台上无需编辑代码,可通过拖拽式操作即可完成小程序的制作,真正意义上实现了小程序零代码免费制作! 消除技术门槛:无需代码 ...
- 【推荐】开源项目minapp-重新定义微信小程序的开发
minapp 重新定义微信小程序的开发 官网:https://qiu8310.github.io/minapp/ 作者:Mora minapp 重新定义微信小程序的开发 使用 用 npm 安装命令行工 ...
- 微信小程序快速开发上手
微信小程序快速开发上手 介绍: 从实战开发角度,完整系统地介绍了小程序的开发环境.小程序的结构.小程序的组件与小程序的API,并提供了多个开发实例帮助读者快速掌握小程序的开发技能,并能自己动手开发出小 ...
- 微信小程序wepy开发循环wx:for需要注意
微信小程序wepy开发循环wx:for需要注意 item index值必须在wx:for之后使用 <view wx:for="{{tablist}}" class=" ...
- Mac上微信小程序官方开发工具卡死的问题
Mac上微信小程序官方开发工具打开后卡死,无法操作,也关不掉,解决方案: 三步: 1.在应用中删除“微信web开发者工具” 2.删除一下几个配置和缓存文件: 1.-/Library/Applicati ...
- 技本功丨收藏!斜杠青年与你共探微信小程序云开发(下篇)
2019年2月26日,人们为了一个杯子疯了一天. 星巴克猫爪杯,一场已经与猫无关了的“圣杯战争“.网上的倒卖价格,已炒至近千元! 求而不得,舍而不能,得而不惜.这是人最大的悲哀... 所以,请珍惜以下 ...
- 微信小程序-云开发(手记)
微信小程序-云开发(手记) 1.创建data.json文件 注意以下几点要求: 入门示例: init方法的env:默认环境配置,传入字符串形式的环境 ID(理解为数据库)可以指定所有服务的默认环境(意 ...
- 微信小程序快速开发
微信小程序快速开发 一.注册小程序账号,下载IDE 1.官网注册https://mp.weixin.qq.com/,并下载IDE. 2.官方文档一向都是最好的学习资料. 注意:1)注册账号之后会有一个 ...
- 第六章 “我要点爆”微信小程序云开发实例之爆文详情页制作
爆文详情页制作 从首页中数据列表打开相应详情页面的方法: 给数据列表中每个数据项加一个点击事件,同时将当前数据项的id暂时记录在本地,然后跳转到详情页面detail goopen: function ...
随机推荐
- HMS Core 6.10.0版本发布公告
分析服务 ◆ 事件分析下新增商品订阅分析报告,帮助开发者了解应用内用户付费订阅概况,评估订阅付费价值: ◆ 营销分析.用户质量.转化分析以及过滤器中,新增广告系列/广告任务通过ID进行搜索的功能,通过 ...
- Centos环境下部分中间件“rabbitmq、rocketmq、clickhouse”部署
部分中间件部署 目录 部分中间件部署 docker部署rabbitmq docker部署rocketmq 单机部署clickhouse docker部署rabbitmq # 拉镜像 docker pu ...
- Vue拖拽排序
转载至https://www.crazyming.com/note/757/ 使用拖拽功能来实现排序. 需要先学习w3cschool 关于拖拽的教程:http://www.w3school.com.c ...
- 2023-04-14:n对情侣坐在连续排列的 2n 个座位上,想要牵到对方的手, 人和座位由一个整数数组 row 表示,其中 row[i] 是坐在第 i 个座位上的人的ID, 情侣们按顺序编号,第一对
2023-04-14:n对情侣坐在连续排列的 2n 个座位上,想要牵到对方的手, 人和座位由一个整数数组 row 表示,其中 row[i] 是坐在第 i 个座位上的人的ID, 情侣们按顺序编号,第一对 ...
- 2023-04-05:做甜点需要购买配料,目前共有n种基料和m种配料可供选购。 制作甜点需要遵循以下几条规则: 必须选择1种基料;可以添加0种、1种或多种配料,每种类型的配料最多添加2份, 给定长度为
2023-04-05:做甜点需要购买配料,目前共有n种基料和m种配料可供选购. 制作甜点需要遵循以下几条规则: 必须选择1种基料:可以添加0种.1种或多种配料,每种类型的配料最多添加2份, 给定长度为 ...
- 2022-10-03:给定一个正数n,比如6 表示数轴上有 0,1,2,3,4,5,6 <0 或者 >6 的位置认为无法到达 给定两个数字x和y,0<= x,y <= n 表示小人一开始在x的位置,它
2022-10-03:给定一个正数n,比如6 表示数轴上有 0,1,2,3,4,5,6 <0 或者 >6 的位置认为无法到达 给定两个数字x和y,0<= x,y <= n 表示 ...
- OCR -- 文本识别 -- 理论篇
文本识别的应用场景很多,有文档识别.路标识别.车牌识别.工业编号识别等等,根据实际场景可以把文本识别任务分为两个大类:规则文本识别和不规则文本识别. 规则文本识别:主要指印刷字体.扫描文本等,认为文本 ...
- ggplot2 调整绘图区域大小
熟悉 R 绘图的朋友肯定知道,在普通绘图中,图片的大小可以直接在 png() 和 pdf() 中指定,而绘图区大小则可以用 par() 中的 mar 或 mai 来指定.但是在 ggplot2 中,图 ...
- OpenAI发布ChatGPT函数调用和API更新
2023年6月13日,OpenAI针对开发者调用的API做了重大更新,包括更易操控的 API模型.函数调用功能.更长的上下文和更低的价格. 在今年早些时候发布gpt-3.5-turbo,gpt-4在短 ...
- 淘宝召回模型MGDSPR-学习笔记
一 简介 本文是论文Embedding-based Product Retrieval in Taobao Search的学习笔记 1 整体概览 电商无处不在,从大规模语料库里面检索出兼顾相关性和用户 ...