微信小程序入门开发超详细笔记(一)

1 引入

1.1 小程序的应用

在这里插入图片描述

  • 支付宝

  • 头条

  • qq

  • 百度

  • 字节跳动

  • 微信

1.2 小程序的介绍

  • 运行在某个APP里面,比如微信:没有跨平台限制
  • 微信小程序
    • Wechat Mini Program 是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一搜即可使用

1.3 市场分类

在这里插入图片描述

1 小程序

  • 运行在某个APP里面,比如微信

2 webapp

  • 运行在浏览器上,没有跨平台限制

3 混合app

  • 运行在终端上,有跨平台限制,内部运行的是webapp

4 原生app

  • 运行在终端上,有跨平台限制,内部运行的是机器码01
1 ios
  • object-c
  • js
2 android
3 react-native
  • 一套代码开发两套的应用
  • taro

2 开发

2.1 准备

1 官网注册登录

2 工具下载

  • 在个人主页中点击文档
  • 进入新页面后点击工具,点击微信开发者工具
  • 选择与自己电脑合适的版本进行下载
    在这里插入图片描述
  • 进入新的页面
    在这里插入图片描述
  • 进行下载
    在这里插入图片描述

2.2 入门小程序

1 创建

在这里插入图片描述

2 创建成功

在这里插入图片描述

3 开发

在这里插入图片描述

项目结构

在这里插入图片描述

与vue对比
序号差异vue框架微信小程序
1样式style标签.wxss文件
2行为script标签.js文件
< wxs >标签
3结构template标签.wxml文件
4盒子divview
5文本spantext
6属性绑定<span :title='lay'></span><text title='{{msg}}'></text>
7流程分支v-forwx:for
8判断v-if()=''/v-elsewx:if='{{}}'/wx:else
9显示隐藏v-show=''hidden='{{}}'
10生命周期8种应用3种+页面5种+组件6种
11编程式路由v-show=''hidden='{{}}'
12组件式路由<router-link to='地址'></router-link><navigator url="地址"></navigator>
13路由参数<router-link to='地址?id=1'></router-link><navigator url="地址?id=1"></navigator>
14网络请求axioswx.request()
15绑定事件@clickbindtop=''
16双向绑定v-model=''bindinput=''
17获取data数据this.msgthis.data.msg
18设置data数据this.msg=''this.setdata({msg:''})
19创建方法methods:{test(){}}与data同级直接创建

4 基本创建结构

创建

  • app.js中新增一个页面(全局配置) ,会自动创建
  • 默认打开第一个位置的页面
    在这里插入图片描述
  • 页面的结构
    在这里插入图片描述

5 基本使用

  • 插值表达式(小胡子语法)的使用
  • 属性绑定
  • 事件使用
  • 流程语句
  • 循环语句
  • 显示隐藏语句
  • 属性的设置和获取
  • 路由的使用
  • tabbar的使用
  • 请求的使用和封装
  • 生命周期的使用

1 插值表达式

在这里插入图片描述

2 属性绑定

在这里插入图片描述

3 事件使用

  • 与vue中事件基本相同,没有参数时默认是event

点击事件

在这里插入图片描述

输入框事件

  • 输入框默认边框为白色,需要自己设置home.wxss
    在这里插入图片描述

4 流程语句

  • wx:if
  • wx:else
    在这里插入图片描述

5 显示和隐藏

在这里插入图片描述

6 循环语句

  • wx:for
  • wx:for-index
  • wx:for-item
  • wx:key
    在这里插入图片描述

7 属性设置和获取

  • 设置:this.setData()
  • 获取属性:this.data.flag
    在这里插入图片描述

8 tabbar使用

  • 可参考官网的API文档设置tabber
    在这里插入图片描述
  • 代码
  "tabBar": {
    "color": "#dddddd",
    "selectedColor": "#16f2e7",
    "backgroundColor": "#fff",
    "borderStyle": "black",
    "list": [
      {
        "pagePath": "pages/home/home",
        "text": "主页",
        "iconPath": "tabs/home.png",
        "selectedIconPath": "tabs/home-active.png"
      },
      {
        "pagePath": "pages/index/index",
        "text": "消息",
        "iconPath": "tabs/message.png",
        "selectedIconPath": "tabs/message-active.png"
      }
    ]
  },

9 路由的使用

组件式路由

  • 使用navigater
1 可返回

在这里插入图片描述
在这里插入图片描述

2 不能返回

在这里插入图片描述

3 路由传参

在这里插入图片描述

编程式路由

  • 只能跳转非tabbar 有返回 wx.navigateTo({url: '/pages/test/test'})
  • 只能跳转非tabbar 无返回wx.redirectTo({url: '/pages/test/test'})
  • 能跳转所有页面 无返回 关闭当前页面wx.switchTab({url: '/pages/index/index'})
  • 能跳转所有页面 无返回 关闭所有页面wx.reLaunch({url: '/pages/index/index'})
    在这里插入图片描述
  • 传参
    在这里插入图片描述

10 请求的使用

  • wx:request
  • 无跨域问题

请求成功时

在这里插入图片描述

请求失败时

在这里插入图片描述

11 请求的三种封装

  • 封装属于工具类,存放到utils文件夹下

1 简单式封装

  • base.js
const baseUrl='http://jsonplaceholder.typicode.com/'
module.exports=(url,data,method)=>{
   return new Promise((resolve,reject)=>{
     wx.showLoading({
       title: 'loading',
       mask: true,
       success: (res) => {},
       fail: (res) => {},
       complete: (res) => {
         wx.hideLoading()
       },
     })
     wx.request({
       url: baseUrl+url,
       data: data,
       method,
       success:resolve,
       fail:reject,
       complete: (res) => {},
     })
   })
}

在这里插入图片描述

2 完全式封装

  • 有加载的效果

  const app = getApp()
  const request = (url, options) => {
     // 请求之前提示加载中
    wx.showLoading({title: '加载中...'})
    return new Promise((resolve, reject) => {
      wx.request({
        url: `${app.globalData.baseURL}${url}`,
        // url: host + url,
        method: options.method,
        data: options.method === 'GET' ? options.data : JSON.stringify(options.data),
        header: {
          'Content-Type': 'application/json; charset=UTF-8',
          'x-token': 'x-token'  // 看自己是否需要
        },
        success: resolve,
        fail: reject,
        // success(request) {
        //   // console.log(request)
        //   if (request.statusCode === 200) {
        //     resolve(request.data)
        //   } else {
        //     reject(request.data)
        //   }
        // },
        // fail(error) {
        //   reject(error.data)
        // }
        complete() {
        	wx.hideLoading()
      	}
      })
    })
  }

  const get = (url, options = {}) => {
    return request(url, { method: 'GET', data: options })
  }

  const post = (url, options) => {
    return request(url, { method: 'POST', data: options })
  }

  const put = (url, options) => {
    return request(url, { method: 'PUT', data: options })
  }

  // 不能声明DELETE(关键字)
  const remove = (url, options) => {
    return request(url, { method: 'DELETE', data: options })
  }

  module.exports = {
    get,
    post,
    put,
    remove
  }

在这里插入图片描述

3 外部式封装

  • 第一步:在pages安装flyionpm i flyio -S
  • 第二步:将node_modules/flyio 复制到项目工程目录下
  • 第三步:严格按照前两步操作否则出现模块找不到错误
  • 封装文件如下:
import Fly from '../flyio/dist/npm/wx'
const fly = new Fly()
const host = 'http://jsonplaceholder.typicode.com/'
// 添加请求拦截器
fly.interceptors.request.use(
  (request) => {
    wx.showLoading({
      title: '加载中',
      mask: true
    })
    console.log(request)
    // request.headers["X-Tag"] = "flyio";
    // request.headers['content-type']= 'application/json';
    request.headers = {
      'X-Tag': 'flyio',
      'content-type': 'application/json'
    }
    let authParams = {
    // 公共参数
      'categoryType': 'SaleGoodsType@sim',
      'streamNo': 'wxapp153570682909641893',
      'reqSource': 'MALL_H5',
      'appid': 'string',
      'timestamp': new Date().getTime(),
      'sign': 'string'
    }

    request.body && Object.keys(request.body).forEach((val) => {
      if (request.body[val] === '') {
        delete request.body[val]
      };
    })
    request.body = {
      ...request.body,
      ...authParams
    }
    return request
  })

// 添加响应拦截器
fly.interceptors.response.use((response) => {
  wx.hideLoading()
  return response.data// 请求成功之后将返回值返回
},
(err) => {
  // 请求出错,根据返回状态码判断出错原因
  console.log(err)
  wx.hideLoading()
  if (err) {
    return '请求失败'
  };
}
)

fly.config.baseURL = host

export default fly
常规写法

在这里插入图片描述

ES7写法

在这里插入图片描述

11 wxs使用

  • 类似< script >标签
  • 使用较少
  • 缺点:
    • 不易操作
    • 不能在里面写注释
    • 语法过于严谨
      在这里插入图片描述

12 组件的抽离

在这里插入图片描述

11 生命周期

总结

参考

源码地址

  • 码云地址: https://gitee.com/lakerzhang/wx.git
  • 16
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值