加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

微信小程序——基础知识

发布时间:2020-12-14 19:05:05 所属栏目:资源 来源:网络整理
导读:目录结构介绍 一个小程序至少由俩个文件组成? app.js ?和? app.json ?1.? app.js ?小程序逻辑 2.? app.json ?小程序全局配置 3.? app.wxss ?小程序公共样式表 4.? project.config.json ?开发项目时工具配置文件。 一个小程序页面由四个文件组成 传统web 小程

目录结构介绍

一个小程序至少由俩个文件组成?app.js?和?app.json?1.?app.js?小程序逻辑 2.?app.json?小程序全局配置 3.?app.wxss?小程序公共样式表 4.?project.config.json?开发项目时工具配置文件。

一个小程序页面由四个文件组成

传统web 小程序
结构 HTML 样式表 wxss
逻辑 js
配置 json

初始化页面的俩个警告:warning:

:warning:根据 sitemap 的规则[0],当前页面 [pages/index/index] 将被索引?解决方案:小程序项目配置文件?project.config.json?的 setting 中配置字段?"checkSiteMap": false
"setting": {
    "checkSiteMap": false
},复制代码

:warning:获取 wx.getUserInfo 接口后续将不再出现授权弹窗,请注意升级解决方案:清空?App.js

全局配置路由、导航栏和tabBar

小程序根目录下的?app.json?文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。

路由 Pages

路由 Pages | 微信开放文档

项目开发目录为:

├── app.js
├── .json
├── .wxss
├── pages
│   │── index
│   │   ├── index.wxml
│   │   ├── .js
│   │   ├── .json
│   │   └── .wxss
│   └── logs
│       ├── logs.wxml
│       └── .js
└── utils
复制代码

则需要在?app.json?中写

{
    "pages": [
        "pages/index/index","pages/logs/logs"
    ],}
复制代码

顶部导航 window

顶部导航 window | 微信开放文档

用于设置小程序的状态栏、导航条、标题、窗口背景色。

window属性说明文档

属性 描述
下拉 loading 的样式,仅支持 dark / light
导航栏背景颜色,如 #000000
导航栏标题文字内容`
导航栏标题颜色,仅支持 black / white
enablePullDownRefresh 是否开启当前页面的下拉刷新 true / false

代码实例

如何设置某个单页面的导航栏?

自定义顶部栏,文字、背景色,在该单页面的?json

里添加如下:

{
	"usingComponents": {},0);">"课程列表",0);">"white"
}
复制代码

隐藏顶部栏,在该单页面的?json?里添加如下:

底部 tabBar

底部 tabBar | 微信开放文档?小程序是一个多 tab 应用,可以通过 tabBar 配置项指定 tab 栏的表现,及切换时显示的对应页面。

tabBar属性说明文档

color
tab 上的文字默认颜色,仅支持十六进制颜色
tab 上的文字选中时的颜色,仅支持十六进制颜色
tab 的背景色,仅支持十六进制颜色
tabbar上边框的颜色, 仅支持 black / white
自定义 tabBar,见?详情
tab 的列表,详见 list 属性说明

list 数组,包含 tab?最少 2 个、最多 5 个

list属性 路由:跳转到指定页面
底部导航文字
底部导航图标、未选中状态
底部导航图标、选中状态

基础组件

view 视图容器

text 文本

<text>纯文本</text>?组件之间只能包含纯文本,在text中写其他标签,将会被忽略掉

<text 
    class="info" 
    id="zbc" 
    style="" 
    bindtap="_fun" 点击事件
    hidden="true" 显示隐藏[微信小程序--hidden不生效原因及解决方案?]
    data-user="user" 自定义组件
>
    hello world
</text>
复制代码

image 图片

微信小程序 Image 图片实现宽度100%,高度自适应?mode="widthFix"

<image class="img" src="../../images/hello.png" mode="widthFix">

.img{width: 100vw;}
复制代码

Flex 布局

Flex 布局兼容性

Flex 布局属性

要使用弹性布局,通过?display: flex?或者?display: inline-flex?来将此元素定义为弹性容器。

  1. flex-direction?决定元素的排列方向

    row
    column
    
  2. flex-wrap?决定元素如何换行

    justify-content?定义主轴为水平方向,分布方式。

    flex-start
    flex-end
    center
    space-between
    space-around
    
  3. align-items?定义主轴为垂直方向,分布方式。

    flex: 1?权重,分配主轴上剩余的空间(有图)

<view style="display:flex;">
    <view class="A" style="width: 140rpx;height: 80rpx; flex: 1;"></view>
    <"B" style="width: 140rpx;height: 80rpx;"></"C" style="D" style=view>
</view>
复制代码

数据绑定

数据绑定 | 微信开放文档

简单绑定

<view> {{ message }} </view>
复制代码
Page({
  data: {
    message: 'Hello MINA!'
  }
})
复制代码

三元运算

算数运算
<view> {{a + b}} + {{c}} + d </view>
复制代码
view中的内容为 3 + 3 + d。

是否同意该协议表单按钮

特别注意:不要直接写??checked="false"?,其计算结果是一个字符串,转成 boolean 类型后代表真值。

列表渲染wx:for

列表渲染 | 微信开放文档

在组件上使用?wx:for?控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。 默认数组的当前项的下标变量名默认为?index?,数组当前项的变量名默认为?item?数据绑定使用?{{}}?将变量包起来,可以作用于:

轮播图wx:for

Page({
    data: {
        banner: [{
            img: '../../images/swiper-1.jpeg',{
            img: '../../images/swiper-2.jpeg',}]
    }
})
复制代码

上述代码的简略版

wx:for-item?和?wx:for-index

使用 wx:for-item 可以指定数组当前元素的变量名, 使用 wx:for-index 可以指定数组当前下标的变量名:

wx:key

wx:key?是列表中唯一的字符串或数字,且不能动态改变。例如:

data: {
        objectArray: [
            { id: '时间',unique: 'unique_5' },{ id: '速度',0);">'unique_4' },0);">'路程',0);">'unique_3' },51); font-weight: 700;">id: 'unique_2' },],})
复制代码

小鹿咖啡的菜单【实例】

Page({
    data: {
        "foodList": [
            {
                "id": "title": "大师咖啡",0);">"food": [
                    {
                        "img": "http://r.photo.store.qq.com/psb?/V12jhopW1tjEiY/SvHL13tH2g5UKUmVrbCjAPs4sLNBvAo7fhdJGpEU1.s!/r/dFQBAAAAAAAA",0);">"name": "摩卡",0);">"enname": "Mocha",0);">"price": "27",0);">"tip": "买2增1"
                    },]
            },0);">"小鹿茶",0);">"http://r.photo.store.qq.com/psb?/V12jhopW1tjEiY/VoBwYjGp2dIkV1owMWjVr4rm6Tp3wl8H1Gsa7n5hh08!/r/dFQBAAAAAAAA",0);">"活力柠檬红宝石茶",0);">"Lemon Ruby Tea",0);">"24",{
                        "http://r.photo.store.qq.com/psb?/V12jhopW1tjEiY/o7p7XoYAGaeMH6EtQNPVbU8tHFnKZitOcl9RarOcqNA!/r/dAgBAAAAAAAA",0);">"桃桃山雾乌龙茶",0);">"White & Yellow Peach Oolong Tea",0);">"24"
                    }
                ]
            }
        ]
    },})
复制代码

条件渲染wx:if

条件渲染 | 微信开放文档

wx:if使用方法

wx:if="{{false}}"?,?wx:if="{{true}}"

在小程序里面识别boolean值时,只要属性的值 不为空时,boolean就判断为真,就算里面随便几个字符,例如 wx:if="11223" ,也判断为真, 如果需要为false,就必须采用数据绑定的方式{{false}},才能被小程序解析为假。

在框架中,使用?wx:if=""?来判断是否需要渲染该代码块: 也可以用??wx:elif?和??wx:else?来添加一个 else 块:

data: {
        length: 61,}
})
复制代码

结果:及格

的使用

注意:?<block/>?并不是一个组件,它仅仅是一个包装元素,将多个组件包装起来,不会在页面中做任何渲染,只接受控制属性。?wx:if?和?wx:for?含有?<block/>?的写法

block wx:if={{modalToggle}}">
    	<"modalWrap">
        	<"modal"></view>
    	</view>
	</block>

复制代码

不含有?<view "modalWrap" wx:if="{{modalToggle}}"> <view "modal"></view> </view> 复制代码

教育Top10收藏列表【实例】

页面描述:当有数据时,显示左侧列表。当没有数据时,则显示右侧内容

list: ['月落乌啼霜满天',0);">'江枫渔火对愁眠']
    },249); border: 0px; font-size: 14px;'>wx:if?vs??hidden

1.?wx:if?在初始渲染条件为??false?,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。所以当??wx:if?的条件值切换时,框架有一个局部渲染的过程,确保条件块在切换时销毁或重新渲染。 2.?hidden?就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。

总结:?wx:if?有更高的切换消耗,而??hidden?有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用??hidden

hidden不生效原因及解决方案?

你会发现?hidden?没生效。经我实验发现?hidden?元素对块状布局才生效,所以这段代码里导致?hidden?没生效的罪魁祸首是?display:flex?。把这个去掉就可以了。

如果一定要用flex布局怎么办?

其实这里想用?hidden?无非就是想影藏这个布局,?display:none?也能做到隐藏。这里可以用一个取巧的方法,动态设置?display?属性,示例如下:

};">
    <view>
复制代码

这里的?hideview?是在对应的?js?里是一个变量,由?js?来动态控制。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读