小程序(一)

一、创建项目

1. 准备工作

注册开发者账号

安装小程序开发工具

创建项目

2. 认识项目目录

pages 是存放所有视图的目录

utils 是存放工具类库的目录

app.js 是小程序的全局入口文件

app.json 是小程序的全局配置文件

app.wxss 是小程序的全局样式文件

project.config.json 是项目的配置文件

sitemap.json 是小程序的SEO优化文件,方便用户搜索到该小程序

3. app.json

pages里面注册的是视图

window 是全局窗口配置

backgroundTextStyle 设置文本样式

navigationBarBackgroundColor 设置导航栏背景

navigationBarTitleText 设置导航栏文本

navigationBarTextStyle 设置导航栏文本样式

style 设置样式级别,默认是v2

sitemapLocation 指明 sitemap.json 的位置;默认为 'sitemap.json' 即在 app.json 同级目录下名字的 sitemap.json 文件

4. app.wxss

是小程序的全局样式文件,其实就是css文件

5. project.config.json

setting 里面的配置,也可以通过:详情-本地设置

6. 页面组成

xxx.wxml 是页面,相当于html文件,但是它里面不能写原生的html标签,只能写微信自己的组件。

xxx.wxss 是样式,相当于css文件。

xxx.js 是js文件,书写页面逻辑程序。

xxx.json 是配置文件,配置当前页面信息。

7. xxx.wxml

view组件,相当于html中的div标签。

text组件,相当于html中span标签。

swiper是滑块视图组件,它里面只能放swiper-item组件。

image是图片组件,注意:小程序里面的图片最好全部采用网络图片,因为单个小程序打包后的代码总体积不能超过2MB。

<swiperindicator-dotsindicator-color="#ffffff"indicator-active-color="#248067"autoplaycircularinterval="{{3000}}"><swiper-item><imagesrc="图片地址"></image></swiper-item></swiper>

通过插值表达式{{}},可以执行显示data里面的数据。

wx:for指令用于循环数组数据,生成组件。

item就是循环出来的每一项,index是每一项对应的索引。

item和index可以重命名,方式是wx:for-item="XXX" wx:for-index="XXX"。

wx:key="index",设置每一项唯一的标识。

bindtap是点击事件,组件通过data-xxx传递数据。


<viewclass="item flex j-s a-c"wx:for="{{goodsList}}"wx:for-item="goods"wx:for-index="i"wx:key="index"><!-- {{index}}-{{item}} --><view>{{i}}--{{goods}}</view><!-- bindtap是点击事件,组件通过data-xxx传递数据 --><buttondata-name="{{goods}}"data-i="{{i}}"size="mini"bindtap="del">删除</button></view>

8. xxx.wxss

微信为了让页面里面的内容在各种设备上能够正常显示,提供了一种响应式单位rpx。

在iphone6尺寸中,1px==2rpx。

9. xxx.js

其实每个微信页面,就是一个Page()函数。该函数的参数是一个对象。

在Page()函数中添加页面的数据,方法等等。

页面中的数据,全部放到data中。

定义方法:

del(e){//获取组件传递的参数i(i是索引)leti=e.currentTarget.dataset.i//根据指定的索引,从数组中,删除对应的数据this.data.goodsList.splice(i,1)//数组中的数据删除后,还要触发页面更新this.setData({//将最新的数据,传递给页面显示goodsList:this.data.goodsList})}//this指向当前页面对象。//setData()方法,触发页面更新哪些数据。

10. xxx.json

配置当前页面信息,用法根app.json一样。

二、tabBar&跳转

1. 条件判断

wx:if wx:elif wx:else 指令用于判断条件,满足条件显示上面的组件。

wx:if 是惰性的,如果在初始渲染条件为 false,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。

相比之下,hidden 就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。

<view hidden="{{flag ? true : false}}"> Hidden </view>

一般来说,wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好。

直接在组件上绑定表达式:

<view class="item {{i%2===0?'blue':''}}" style="color:{{i%2===0?'red':''}}">

2. tabBar

在app.json文件中添加tabBar节点。

color:tab上的文字默认颜色,仅支持十六进制颜色。

selectedColor:tab上的文字选中时的颜色,仅支持十六进制颜色。

backgroundColor:tab的背景色,仅支持十六进制颜色。

borderStyle:tabbar上边框的颜色, 仅支持 black / white。

position:tabBar的位置,仅支持 bottom / top。

custom:自定义tabBar。

list:tab的列表。

list 接受一个数组,只能配置最少 2 个、最多 5 个 tab。

pagePath:页面路径,必须在 pages 中先定义。

text:tab 上按钮文字。

iconPath:图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,不支持网络图片。

当 position 为 top 时,不显示 icon。

selectedIconPath:选中时的图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,不支持网络图片。

当 position 为 top 时,不显示 icon。

3. 跳转

navigator组件,用于页面链接,默认只能跳转普通页面。

如果要跳转tabBar页面,需要设置open-type="switchTab"。

<navigatorurl="/pages/details/details">详情</navigator><navigatoropen-type="switchTab"url="/pages/menu/menu">菜单</navigator>

代码跳转:

跳转到普通页面

wx.navigateTo({url:'/pages/details/details',})

跳转到tabBar页面

wx.switchTab({url:'/pages/menu/menu',})

使用方法跳转页面的好处是:在跳转之前可能需要做其他事情,比如:验证权限等等。

4. 确认框和消息框

确认框:

wx.showModal({

title:”标题”,

success:res=>{}

})

消息框:

wx.showToast({

title:”标题”,

duration:1000

})

5. 封装方法

确认框方法:

function$confirm(title){returnnewPromise((resolve,reject)=>{//确认框wx.showModal({title,success:({confirm})=>{if(confirm)resolve()}})})}

消息框方法:

function$msg(title,duration=1000,icon='success'){//弹出消息框wx.showToast({title,duration,icon})}

获取事件参数的方法:

function$key(e){returne.currentTarget.dataset}

export 是ES6的导出语句。

将封装的方法放到util.js文件中

//确认框方法exportlet$confirm=function(title){returnnewPromise((resolve,reject)=>{//确认框wx.showModal({title,success:({confirm})=>{if(confirm)resolve()}})})}//消息框方法exportlet$msg=function(title,duration=1000,icon='success'){//弹出消息框wx.showToast({title,duration,icon})}//获取事件参数的方法exportlet$key=function(e){returne.target.dataset}

import是ES6的导入语句。

import {confirm,confirm,key,$msg} from '../../utils/util'。

将这些工具方法注册给wx对象

wx对象是微信小程序的全局对象,在任何地方都可以使用。

wx.msg=msg=msg

wx.confirm=confirm=confirm

wx.key=key=key

在app.js入口文件中导入

import './utils/util'

awaitwx.$confirm('确定删除吗')//获取组件传递的参数i(i是索引)let{i}=wx.$key(e)//根据指定的索引,从数组中,删除对应的数据this.data.goodsList.splice(i,1)//数组中的数据删除后,还要触发页面更新this.setData({//将最新的数据,传递给页面显示goodsList:this.data.goodsList})//消息框wx.$msg('删除成功')

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容