小程序(一)

一、创建项目

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('删除成功')

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容