微信小程序-总结开发

2023-02-09  本文已影响0人  Miamin

1. 配置文件:路由

"pages":[

    "pages/index/index",

    "pages/class/class",

    "pages/show/show",

    "pages/message/message",

    "pages/home/home"

  ]

路由跳转:

wx:navigateTo({

    url:"pages/index/index"

})

2. 配置文件:window

"window":{

    "navigationBarBackgroundColor":"#ff0",

    "navigationBarTitleText":"我的小程序",

    "navigationBarTextStyle":"black"

  },

3. 路由跳转

wx.navigateTo 跳转后保留跳转记录

<buttonbindtap="jump">button</button>

  jump(){

    wx:wx.navigateTo({

      url: '/pages/home/home'

    })

  }

url 不能优后缀,self 是在当前小程序内打开

<navigator

target="self"

url="/pages/home/home"

open-type="navigate"

>

  <button>跳转</button>

</navigator>

路由返回:使用open-type="navigateBack"路由返回,使用delta="1"规定返回几层

<navigator

target="self"

open-type="navigateBack"

delta="1"

>

  <button>返回</button>

</navigator>

3.1 路由传参

使用 ?传参

<navigator

target="self"

url="/pages/home/home?id=001"

>

  <button>跳转</button>

</navigator>

跳转后的页面,接参时直接接收到传的 json 参数

onLoad: function (options) {

    console.log(options);

  },

获取 app中数据

var app = getApp()

4. 配置文件:导航栏

"tabBar":{

    "color": "#333333",                

    "selectedColor": "#00ff00",        

    "backgroundColor": "#eeeeee",    

    "list":[                        

      {

        "pagePath":"pages/index/index",                

        "text":"首页",                             

        "iconPath":"logo/shouye.png",                

        "selectedIconPath": "logo/shouye-ch.png"    

      },

      {

        "pagePath":"pages/class/class",

        "text":"分类",

        "iconPath":"logo/fenlei.png",

        "selectedIconPath": "logo/fenlei-ch.png"

      },

      {

        "pagePath":"pages/show/show",

        "text":"展示",

        "iconPath":"logo/zhanshi.png",

        "selectedIconPath": "logo/zhanshi-ch.png"

      },

      {

        "pagePath":"pages/message/message",

        "text":"消息",

        "iconPath":"logo/xiaoxi.png",

        "selectedIconPath": "logo/xiaoxi-ch.png"

      },

      {

        "pagePath":"pages/home/home",

        "text":"我的",

        "iconPath":"logo/home.png",

        "selectedIconPath": "logo/home-ch.png"

      }

    ]

  }

5. 数据绑定

<view> {{ message }} </view>

Page({

  data: {

    message: 'Hello world!'

  }

})

6. 条件渲染

wx:if 和 hidden

<view wx:if="{{index==n}}" >

    <text>{{item.msg}}</text>

</view>

<block></block>

7. 列表渲染

key 属性直接写,不用加 {{ }}

<view wx:for="{{list}}" wx:for-index="key" wx:for-item="val" wx:key="id" >

    <text>{{key}} - {{val.msg}}</text>

</view>

8. 绑定事件

一般点击事件用 bindtap

事件传参时不是直接传,需要用一个自定义属性

如 data-index="{{index}}"

事件函数中用 event.currentTarget.dataset.index 接收

需要 this.setData({ }) 引起页面自动渲染

<button bindtap="func" data-index="{{index}}">{{item.title}}</button>

func: function(ev){

    this.setData({

      n: ev.currentTarget.dataset.index

    })

  }

bind:绑定事件,事件可以冒泡

catch:绑定事件,事件不能冒泡(阻止事件冒泡)

9. 场景值

**场景值:**就是用户通过什么方式进入的小程序

var scene = wx.getLaunchOptionsSync().scene;

console.log(scene);

onLaunch(options){

    var scene = options.scene;

    console.log(scene);

}

10. 生命周期函数

Page({

  onload(){

    console.log("load");

  },

  onShow(){

    console.log("show");

  },

  onHide(){

    console.log("hide");

  },

  onPageNotFound(){

    console.log("404");

  },

  onPullDownRefresh(){

    console.log("下拉");

  },

  onReachBottom(){

    console.log("触底上拉");

  }

})

11. 模板

定义模板时需要写一个 name 属性

<templatename="nav">

  <view class="nav_box" wx:for="{{arr}}" wx:key="*this">

    <text>{{item}}</text>

  </view>

</template>

**data:**data里是传给模板的值

<import src="/template/nav.wxml" />

<template is="nav" data="{{arr}}"></template>

使用 @import 引入其他样式表

@import '/assets/nav.wxss'

12. 组件

1. view 视图容器

<view></view>                        

hover-class = "none"                

hover-stop-propagation = "false"    

hover-start-time = "50"                

hover-stay-time = "600"                

2. icon 图标

<icon></icon>                

type = "success"            

      "success_no_circle"

      "info"

      "warn"

      "waiting"

      "cancel"

      "download"

      "search"

      "clear"

size = "23"        

color            

3. text 文本

<text></text>            

selectable = "false"    

space                    

decode                    

4. rich-text 富文本

使用特殊文本标签:如h1~h6

<rich-textnodes="

hello

"></rich-text>

nodes                

space = "nbsp"        

5. image 图片

<image></image>            

src                        

mode = "scaleToFill"    

lazy-load = "false"        

13. 数据双向绑定

使用 model 双向绑定数据

<inputmodel:value="{{msg}}"></input>

表单数据:在 form 中绑定函数,获取表单数据。获取表单数据时必须使用 name 属性

<formbindsubmit="sub">

账号:<input name="name" value="{{user.name}}"></input>

密码:<input name="pass" value="{{user.pass}}"></input>

<button

form-type="submit"

>提交</button>

</form>

使用 ev.detail.value 获取表单数据

Page({

  data: {

    user:{

      name:"",

      pass:""

    }

  },

  sub(ev){

    console.log(ev.detail.value);

  }

})

14. 音频播放

使用 wx.createInnerAudioCOntext() api接口实现音频播放

<buttonbindtap="player">music</button>

player(){

    var music = wx.createInnerAudioCOntext();

    music.src = "/1.mp3";

    music.play();

}

15. 模块化

定义模块:common.js

两种打包方式

function sayHello(val){

  console.log(`hello ${val}`);

}

module.exports.sayHello = sayHello

exports.sayHello = sayHello

require :引入包才能使用

var comm = require('common.js')

Page({

  btnClick(){

    comm.sayHello("123")

  }

})

16. 数据请求

wx.request({

  url: 'url',

  method: 'get',

  data:{},

  header:{

    "content-type": "application/json"

  },

  success:(res)=>{

    console.log(res);

  },

  fail:(err)=>{

    console.log(err);

  }

})

封装

const ajax = (url,method,data)=>{

  return new Promise((res,rej)=>{

    wx.request({

      url,

      method,

      data,

      header:{

        "content-type": "application/json"

      },

      success:(data)=>{

        res(data)

      },

      fail:(err)=>{

        rej(err)

      }

    })

  })

}

export default ajax;

17. 本地存储

1. 存储

wx.setStorage({

  data: "hello world",

  key: 'title',

  success:(res)=>{

    console.log(res);

  },

  fail: (err)=>{

    console.log(err);

  }

})

wx.setStorageSync('name', "微信小程序")

2. 查询

wx.getStorage({

  key: 'title',

  success: (res)=>{

    console.log(res);

  },

  fail: (err)=>{

    console.log(err);

  }

})

wx.getStorageInfo({

  success (res) {

    console.log(res.keys)

    console.log(res.currentSize)

    console.log(res.limitSize)

  }

})

var res = wx.getStorageSync('name')

console.log(res);

try {

  const res = wx.getStorageInfoSync()

  console.log(res.keys)

  console.log(res.currentSize)

  console.log(res.limitSize)

} catch (e) {

}

3. 删除

wx.removeStorage({

  key: 'title',

  success: res=>{

    console.log(res);

  },

  fail: err=>{

    console.log(err);

  }

})

wx.removeStorageSync('name')

18. WEUI

安装

npm install weui-miniprogram

配置

工具 --> 构建npm

详情 --> 本地配置 --> 使用 npm 模块

引入 app.wxss

@import'/miniprogram_npm/weui-miniprogram/weui-wxss/dist/style/weui.wxss';

19. mpvue 框架

安装vue脚手架

创建项目

vue init mpvue/mpvue-quickstart my-project

安装包

npm install

启动

npm run dev

项目目录

index

    index.vue    //页面,组件

    main.js        //导出组件 (文件名固定)

    main.json    //配置文件 (文件名固定)

不支持的语法

v-html不支持

不支持过滤器

不支持在 template 内使用 methods 中的函数

不支持在组件上使用class style

列表渲染 需要索引 index

事件修饰符 .stop ,其他的都不支持

20. API

1. 动态设置当前页面标题

wx.setNavigationBarTitle({

  title: "title"

})

2. 跳转页面 (带参)

wx.navigateTo({

  url: "/pages/list/main?type="+data

});

21. Vue 小程序

document.title = "页面标题";

window.addEventListener([事件类型(click)], [调用的函数(函数名)], [冒泡还是捕获]);

window.removeEventListener();

* 问题

1. wx:key 报错:does not look like a valid key name

看起来不像一个有效的键名

直接写 wx:key=id,不用加 {{}}

2. does not have a method to handle event “tap”

没有方法来处理事件“tap”。

1.事件传参时不能直接传参

2.用自定义属性传参

3.事件函数中用event接收

如:

<button bindtap="func" data-index="{{index}}">{{item.title}}</button>

<script>

func:function(ev){

this.setData({

      n: ev.currentTarget.dataset.index

})

}

</script>

3. 根据 sitemap 的规则[0],当前页面 [pages/class/class] 将被索引

在小程序项目配置文件 project.config.json 的 setting 中加入

"checkSiteMap": false,

4. the server responded with a status of 500

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mM1nVl0p-1661839632797)(F:\Markdown\upload\20190820235806120.PNG)]

1.渲染层网络层错误

2.检查图片路径

5. Cannot set property ‘data’ of undefined

有时候使用

this

时会出现

 undefined 

的情况

data () {

  return {

    data:[]

  }

},

var app = getApp();    

app.globalData.data=[1,2];

console.log(app.globalData.data);

或者同步获取

上一篇下一篇

猜你喜欢

热点阅读