微信小程序1

1、小程序的目录结构

pages ---- 路由

index

index.js — 页面的js文件

index.json — 页面的配置文件

index.wxml — 页面的结构

index.wxss — 页面的样式

utils ---- 模块

app.js ---- 全局的js文件

app.json – 全局的配置文件

app.wxss – 全局的样式文件

project.config.json 项目配置文件

sitemap.json 小程序搜索的配置

小程序的启动页面就是pages选项的第一个页面 !!!

{
  // 页面路径列表
  "pages": [ // 小程序的路由,一个页面就是一个路由
    "pages/index/index",
    "pages/logs/logs"
  ],
  // 全局的默认窗口表现
  "window": {
    "backgroundTextStyle": "light", // 下拉页面后看到的微信的背景的字体样式
    "navigationBarBackgroundColor": "#fff", // 小程序头部背景
    "navigationBarTitleText": "WeChat", // 小程序的标题
    "navigationBarTextStyle": "white" // 标题的字体颜色 black / white
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

2/ 页面的配置 — pages/page/page.json

每一个小程序页面也可以使用 .json 文件来对本页面的窗口表现进行配置。页面中配置项在当前页面会覆盖 app.json 的 window 中相同的配置项

{
  "navigationBarBackgroundColor": "#f66",
  "navigationBarTitleText": "首页",
  "enablePullDownRefresh": true,
  "backgroundColor": "#00f",
  "usingComponents": {}
}

在这里插入图片描述

3、创建小程序的页面以及配置底部选项卡

1 编辑app.json全局配置文件中的 pages 选项,会自动生成各个页面

"pages": [
  "pages/home/home",
  "pages/kind/kind",
  "pages/cart/cart",
  "pages/user/user",
  "pages/index/index",
  "pages/logs/logs"
],

2 配置底部选项卡

"tabBar": {
  "color": "#333",
  "selectedColor": "#f66",
  "backgroundColor": "#fff",
  "borderStyle": "black", // 上边框颜色
  "position": "top", // 顶部的选项卡,图标自动失效
  "list": [
    {
      "text": "首页",
      "pagePath": "pages/home/home",
      "iconPath": "/resources/tabs/home.png", // 绝对路径
      "selectedIconPath": "/resources/tabs/home_active.png"
    },
    {
      "text": "分类",
      "pagePath": "pages/kind/kind",
      "iconPath": "/resources/tabs/kind.png",
      "selectedIconPath": "/resources/tabs/kind_active.png"
    },
    {
      "text": "购物车",
      "pagePath": "pages/cart/cart",
      "iconPath": "/resources/tabs/cart.png",
      "selectedIconPath": "/resources/tabs/cart_active.png"
    },
    {
      "text": "我的",
      "pagePath": "pages/user/user",
      "iconPath": "/resources/tabs/user.png",
      "selectedIconPath": "/resources/tabs/user_active.png"
    }
  ]
},

3 首页添加轮播图
home/home.js


import request from './../../utils/request.js'

data: {
	bannerlist: []
}

onLoad: function (options) {
    request.fetch('/banner').then(data => {
      console.log(data.data)
      this.setData({
        bannerlist: data.data
      })
    })
  },

home/home.json中注册组件

{
  "usingComponents": {
    "prolist": "/components/prolist/prolist"
  }
}

home/home.wxml

<swiper
  indicator-dots="{{true}}" autoplay="{{true}}" circular="{{true}}"
  interval="{{3000}}" duration="{{300}}">
  <block wx:for="{{bannerlist}}" wx:key="item.bannerid">
    <swiper-item>
      <image src="{{ 'http://47.92.152.70/' + item.img }}" />
    </swiper-item>
  </block>
</swiper>

这里使用了封装的request
utils/request.js

let baseUrl = "http://47.100.246.159";

export default {
  fetch(url, data, method) {
    data = data || {}
    method = method || 'get'
    return new Promise(resolve => {
      wx.request({
        url: baseUrl + url,
        data,
        method,
        success: (res) => {
          resolve(res.data)
        }
      })
    })
  }
}

4、引用

  • import
    我的附庸的附庸不是我的附庸

home/md.wxml
使用 name 属性,作为模板的名字。然后在内定义代码片段

<template name="md">
  <view>
    <text> {{index}}: {{msg}} </text>
    <text> Time: {{time}} </text>
  </view>
</template>

home/ home.wxml
使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入

<import src="md.wxml" />
<template is="md" data="{{...item}}"/>
<template is="md" data="{{...item1}}"/>
<template is="md" data="{{...item2}}"/>
  • include
    拷贝代码 但是不拷贝 模板以及wxs代码

5、小程序的生命周期

5.1 小程序App ---- app.js

https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html

属性 类型 默认值 必填 说明

onLaunch function 否 生命周期回调——监听小程序初始化。

onShow function 否 生命周期回调——监听小程序启动或切前台。

onHide function 否 生命周期回调——监听小程序切后台。

onError function 否 错误监听函数。

onPageNotFound function 否 页面不存在监听函数。

其他 any 否 开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问

可以在小程序 的任何位置 通过 getApp() 获取到小程序全局唯一的 App 实例。

可以在app.js中设置全局的对象 来管理需要的状态

// app.js
globalData: {
  userInfo: null,
  title: '小程序全局的实例'
},
state: {
  test: '1'
}

// home.js
let app = getApp()
console.log(app.globalData.title)
console.log(app.state.test)
app.state.test = 2
console.log(app.state.test)

5.2 页面 Page - 生命周期

属性 类型 默认值 必填 说明

data Object 页面的初始数据

onLoad function 生命周期回调—监听页面加载 ----ajax请求

onShow function 生命周期回调—监听页面显示 ---- vue activated

onReady function 生命周期回调—监听页面初次渲染完成

onHide function 生命周期回调—监听页面隐藏 ---- vue deactivated

onUnload function 生命周期回调—监听页面卸载

onPullDownRefresh function 监听用户下拉动作 ----需要page.json中开启下拉刷新

onReachBottom function 页面上拉触底事件的处理函数

onShareAppMessage function 用户点击右上角转发

onPageScroll function 页面滚动触发事件的处理函数

onResize function 页面尺寸改变时触发,详见 响应显示区域变化

onTabItemTap function 当前是 tab 页时,点击 tab 时触发

其他 any 开发者可以添加任意的函数或数据到 Object 参数中,在页面的函数中用 this 可以访问

getCurrentPages() 获取当前是哪一个页面

/**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    console.log(getCurrentPages())
  },

会打印出
在这里插入图片描述
6、生命周期钩子中请求数据

小程序的数据请求,必须使用wx.request()函数,而且接口必须是https协议,并且小程序的安全域名必须得配置

但是在开发时可以忽略 请求域名的配置 详情 -> 本地设置 -> 不检验合法域名,一定要记住在项目上线时去掉它

https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html

7、列表组件

1 创建组件 components/prolist/prolist

// prolist.wxml
<view class="ul prolist">
  <view class="li item">
    <view class="itemimg">
    </view>
    <view class="iteminfo">
    </view>
  </view>
</view>

// prolist.wxss
/* components/prolist/prolist.wxss */
.prolist .item{
  display: flex;
  height: 100px;
  border-bottom: 1px solid #ccc;
}

.prolist .item .itemimg {
  width: 90px;
  height: 90px;
  background: #f66;
  margin: 5px;
}
.prolist .item .iteminfo {
  flex: 1;
}

2 注册并且使用组件 — vue

// home.json
{
  "navigationBarTitleText": "首页",
  "usingComponents": {
    "prolist": "/components/prolist/prolist"
  }
}

3 使用组件

// home/home.wxml
<prolist />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值