微信小程序

一、微信小程序的基本概念

1、什么是微信小程序

  1. 微信里面app
  2. 16年推出
  3. 竞品:支付宝小程序,钉钉,美团,头条,抖音,qq小程序

2、优点

  1. 在微信中自由分享
  2. 不用下载app
  3. 能快速的开发,使用微信的接口

3、开发者

  • 内存,源码,图片,存储,接口与数据都有限制

4、官方网站

小程序简介 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/

二、项目的创建

1、新建项目

 

 特别注意

2、页面介绍

 3、项目的组成

 三、小程序的模板语法

小程序的模板语法约等于vue的模板语法

1、文本渲染

  1. {{msg}}
  2. 可以执行简单的js表达式
    • {{2+3}}
    • {{msg,length}}

2、条件渲染

  1. wx:if=""
  2. wx:elif=""
  3. wx:else

3、列表渲染

  • wx:for="{{list}}"
    wx:key="index"
    • {{item}}
    • {{index}}

4、自定义列表

  • 定义item与index的名称
  • wx:for="[[list)l"
    wx:for-item="myitem"
    wx:for-index="myidx"
  • {{myidx)}
    {{myitem}}

5、内置组件

  • text 组件行内组件
  • view组件块组件
  • wxsS
    • 默认单位是rpx
    • 75orpx 等于一个屏幕的宽
    • 375就是50%的宽

6、导入

  • import
    • 只能导入template内容
    • template/utils.wxml
      • <tempate is="usercart">
        用户名:{namel}
        <template>
    • home.wxml
      • <import src="/template/utils.wxml">
      • <tempate is="usercart" data="{..u1 }">
  • include
    • 只能导入非template内容
    • template/foot.wxml
      • <view>{{内容}}</view>
    • home.wxml
      • <include src="/template/foot.wxml">

四、事件及其传参

1、表单绑定

<view class="nav">表单绑定</view>
<input value="{{s1}}" class="inp" bindinput="inputHd"/>
<button type="warn">{{s1}}</button>

2、点击事件

<view class="nav">点击事件</view>
<button type="warn" size="mini" bindtap="tap">鸡汤来了</button>
<button type="warn" size="mini" bindtap="tap" disabled="false">鸡汤来了</button>

3、事件传参

<view class="nav">事件传参</view>
<button
data-msg="鸡汤来了"
 type="primary" bindtap="say" >事件传参A</button>
<button 
data-msg="大哥,喝"
type="warn"  bindtap="say" >事件传参B</button>

event.js

// pages/event/event.js
var app=getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    s1:'小程序很简单',  
  },
  inputHd(e){
    //获取表单的值
    var s1=e.detail.value;
    //更新data的值与视图
    this.setData({s1:s1})
  },
tap(e){
console.log(e);
// wx.showToast({
//   // title: '成功',
//   // icon:'success',
//   // title: '加载',
//   // icon:'loading',
//   title: '发生错误',
//   icon:'error',
//   duration:2000//延迟时间
// })

wx.showLoading({
  title: '加载中',
})
setTimeout(function () {
  wx.hideLoading()
}, 2000)
},
say(e){
console.log(e);
var msg=e.target.dataset.msg
wx.showToast({
  title: '哈哈'+msg,
})
},
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
this.setData({name:options.name,age:options.age})
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.setData({num:app.globalData.num})
  },
  addNum(){
    //更新本地
    this.setData({num:this.data.num+5})
    //更新全局
    app.globalData.num=this.data.num;
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})

bindinput 表单输入

bindconfirm 表单输入确认

bindtap 点击时候

五、页面切换及其传参

1、小程序内置跳转

<view>
  <navigator url="/pages/event/event">事件event</navigator>
</view>
<view>
  <navigator open-type="redirect" url="/pages/event/event">跳转并替换</navigator>
</view>
<view>
  <navigator open-type="reLaunch" url="/pages/event/event">重启</navigator>
</view>
<view>
  <navigator open-type="navigateBack" url="/pages/event/event">返回</navigator>
</view>

2、事件绑定跳转

<view style="padding: 30rpx;">
  <button size="mini" type="primary" bindtap="goEvent" data-type="navigate">跳转到event</button>
  <button size="mini" type="warn" bindtap="goEvent" data-type="redirect">跳转到event(替换)</button>
</view>

3、页面传参

<view>
  <navigator open-type="navigate" url="/pages/event/event?name=wang&age=18">事件event</navigator>
</view>
<view>
  <navigator open-type="navigate" url="/pages/event/event?name=王&age=20">跳转并替换</navigator>
</view>
goEvent(e){
  // 获取到传入的type参数
  var type = e.target.dataset.type;
  // 如果typpe值是redirect 替换跳转
  if(type=="redirect"){
    wx.redirectTo({
      url: '/pages/event/event',
    })
  }else{
    // 否则就普通跳转
    wx.navigateTo({
      url: '/pages/event/event',
    })
  }
},

4、全局传参

<view style="padding: 30rpx;">
  <button type="primary">全局:{{num}}</button>
</view>



App({
  globalData: {
    userInfo: null,
    num:5,
  }
})

5、tabBar底部导航栏

"tabBar": {
    "color": "#ccc",
    "selectedColor": "#55D1FB",
    "borderStyle": "white",
    "list": [
      {
        "selectedIconPath": "./pages/img/t1-h.png",
        "iconPath": "./pages/img/t1.png",
        "pagePath": "pages/nav/nav",
        "text": "首页"
      },
      {
        "selectedIconPath": "./pages/img/t2-h.png",
        "iconPath": "./pages/img/t2.png",
        "pagePath": "pages/jok/jok",
        "text": "笑话"
      },
      {
        "selectedIconPath": "./pages/img/t3-h.png",
        "iconPath": "./pages/img/t3.png",
        "pagePath": "pages/home/home",
        "text": "home"
      },
      {
        "selectedIconPath": "./pages/img/t4-h.png",
        "iconPath": "./pages/img/t4.png",
        "pagePath": "pages/yidian/yidian",
        "text": "一点"
      }
    ]
  },

视图

 六、封装request

   为什么封装request

            1.  定义baseURL
            2. 添加请求头
            3. 添加加载提示
            4. 同一错误处理

//基础的url
const URL={
  baseURL:"http://dida100.com"
}
function tansParams(obj){
  var str="";
  for(var k in obj){
    str+=k+"="+obj[k]+"&";
  }
  // 移出最后一行&
  return str.slice(0,-1);
}

function request(option){
  var url=option.url;
  // 01可以添加baseURL
  //是不是以http开头的,是用url 不是加上baseURL
  url=url.startsWith("http")?url:URL.baseURL+url;
  //选项里面有params
  if(option.params){
    //如果有参数,把参数转换为url编码形式传入
    url+="?"+tansParams(option.params);
  }

  //02可以添加请求头
  var header=option.header||{};
  header.Authorization="bearer "+wx.getStorageSync('token');

  //03 可以添加加载提示
  if(option.loading){
    wx.showToast({
      title: option.loading.title,
      icon:option.loading.icon,
    })
  }
  //返回一个promise
  return new Promise((resolve,reject)=>{
    wx.request({
      //请求的地址如果是http开头直接用url 不是http开头添加baseURL
      url: url,
      method:option.method||"GET",//请求的方法 默认get
      data:option.data,//post出入的参数
      header,
      success(res){
        //请求成功
        resolve(res.data);
      },
      fail(err){
        //04 对错误进行处理
        wx.showToast({title:"加载失败",icon:"none"})
        //请求失败
        reject(err);
      },
      complete(){
        //关闭加载提示
        wx.hideToast();
      }
    })
  })

} 
 //定义get简易方法
  request.get=(url,config)=>{
    return request({url,method:"get",...config})
  }
  //定义post简易方法
  request.post=(url,data,config)=>{
    return request({url,method:"post",data,...config})
  }
  //导入request
  module.exports={request}

七、小程序插件的使用

1、初始化项目

2、安装插件

3、app.json 删除v2

4、修改project.config.js

5、工具构建npm

6、导入组件

7、使用组件

八、内置api

//导入request
const {request}=require("../utils/request")
//定义api
//获取频道与分类
function GetCategory(){
  return request.get("/mi/cats.php")
}
//获取分类列表
function GetNewsList(data){
  return request.get("/mi/list.php",{params:data})
}
//获取新闻内容
function GetNewsContent(data){
  return request.get("/mi/content.php",{params:data,
  loading:{
    title:"n内容准备中...",
    icon:"loading"
  }})
}
module.exports={
  GetCategory,GetNewsList,GetNewsContent
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值