【微信小程序的开发】初步认识
目录
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 ...
随机推荐
- 为HttpClient开启HTTP/2
.Net Core在调用其他服务时,调用通常使用HttpClient,而HttpClient默认使用HTTP/1.1 . 配置 HttpClient 以使用 HTTP/2 h2 连接 自 .NET C ...
- MQTT-保留消息和遗嘱消息
保留消息 为什么需要保留消息 如果不考虑持久会话的因素,那么MQTT订阅只有在客户端连接之后才能创建,所以服务端不能提前预知某个主题会被哪些服务端订阅或者某个客户端会订阅哪些主题,所以当消息到达服 ...
- 代码打包的可视化数据分析图: webpack-bundle-analyzer 的使用
先看webpack-bundle-analyzer的效果图(官方效果图): 通过使用webpack-bundle-analyzer可以看到项目各模块的大小,可以按需优化 1.先安装 npm insta ...
- 2022-11-22:小美将要期中考试,有n道题,对于第i道题, 小美有pi的几率做对,获得ai的分值,还有(1-pi)的概率做错,得0分。 小美总分是每道题获得的分数。 小美不甘于此,决定突击复习,
2022-11-22:小美将要期中考试,有n道题,对于第i道题, 小美有pi的几率做对,获得ai的分值,还有(1-pi)的概率做错,得0分. 小美总分是每道题获得的分数. 小美不甘于此,决定突击复习, ...
- 2022-10-24:以下go语言代码输出什么?A:3 3;B:3 4;C:0 0;D:0 1。 package main func main() { m := make(map[int]int
2022-10-24:以下go语言代码输出什么?A:3 3:B:3 4:C:0 0:D:0 1. package main func main() { m := make(map[int]int, 3 ...
- 2022-06-17:给定一个数组arr,含有n个数字,可能有正、有负、有0, 给定一个正数k。 返回所有子序列中,累加和最大的前k个子序列累加和。 假设K不大,怎么算最快? 来自Amazon。
2022-06-17:给定一个数组arr,含有n个数字,可能有正.有负.有0, 给定一个正数k. 返回所有子序列中,累加和最大的前k个子序列累加和. 假设K不大,怎么算最快? 来自Amazon. 答案 ...
- 2021-11-05:摆动排序 II。给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。你可以假设所有输入数组都可以
2021-11-05:摆动排序 II.给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]- 的顺序.你可以假设所有 ...
- 图数据库 NebulaGraph 的内存管理实践之 Memory Tracker
数据库的内存管理是数据库内核设计中的重要模块,内存的可度量.可管控是数据库稳定性的重要保障.同样的,内存管理对图数据库 NebulaGraph 也至关重要. 图数据库的多度关联查询特性,往往使图数据库 ...
- 不要轻易尝试 weexplus open as
昨日使用 weexplust publish android 编译apk, 出现了一大堆错 FAILURE: Build failed with an exception. * What went w ...
- 客户线上反馈:从信息搜集到疑难 bug 排查全流程经验分享
写在前面:本文是我在前端团队的第三次分享,应该很少会有开发者写客户反馈处理流程以及 bug 排查的心得技巧,全文比较长,写了一个多星期大概1W多字(也是我曾经2年工作的总结),如果你有耐心阅读,我相信 ...