IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序(原生) -> 正文阅读

[移动开发]微信小程序(原生)

1.小程序注册及开发工具的使用

第一步: 注册 ,点击下方连接前往注册页面

小程序

主要为了拿到AppID(小程序ID)

第二步: 开发工具下载

稳定版 Stable Build | 微信开放文档

下载微信开发者工具(安装一直下一步即可)

创建项目:

?

.json 是配置信息?

? ? ? ? pages 为页面 ,windows为配置属性信息,tabbar配置导航条

.wxml 是html结构

.wxss 是css样式

.js 是逻辑?

2.项目介绍

珠峰课堂

3.导航条配置

小程序配置官方文档:全局配置 | 微信开放文档

app.json中的配置信息:

{
  "pages": [
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window": {
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "123",
    "navigationBarTextStyle": "black"
  },
  "tabBar": {
    "color": "#333",
    "selectedColor": "#71d4cb",
    "borderStyle": "black",
    "list": [{
        "pagePath": "pages/index/index",
        "text": "首页",
        "iconPath": "img/爱心.png",
        "selectedIconPath": "img/成功.png"
      },
      {
        "pagePath": "pages/logs/logs",
        "text": "日志",
        "iconPath": "img/爱心.png",
        "selectedIconPath": "img/成功.png"
      }
    ]
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

?4.小程序钩子函数

App(Object object) | 微信开放文档

框架->框架接口->小程序->App

小程序生命周期钩子函数
属性类型默认值必填说明
onLaunchfunction生命周期回调——监听小程序初始化。
onShowfunction生命周期回调——监听小程序启动或切前台。
onHidefunction生命周期回调——监听小程序切后台。
onErrorfunction错误监听函数。
onPageNotFoundfunction页面不存在监听函数。1.9.90
onUnhandledRejectionfunction未处理的 Promise 拒绝事件监听函数。2.10.0
onThemeChangefunction监听系统主题变化2.11.0
其他any开发者可以添加任意的函数或数据变量到?Object?参数中,用?this?可以访问

框架->框架接口->小程序->getApp

getApp可以拿到实例

5.基本组件

组件官方文档?视图容器 | 微信开放文档

<view> 相当于 <div>

在小程序中单位使用rpx,1 rpx相当于1 px的一半

6.基本用法

基础语法官方文档:数据绑定 | 微信开放文档

7.事件

bind存在事件冒泡, catch不存在事件冒泡

?8.常用全局函数及ajax请求

路由官方链接:

wx.navigateTo(Object object) | 微信开放文档

?全局事件:

API->界面

wx.showModal(Object object) | 微信开放文档

?

参考:在定义的方法中粘贴过来官网复制的代码?

?

小程序接口(ajax):

wx:request

API->网络?

ajax请求官方文档地址:

?RequestTask | 微信开放文档

?自己编写的后台

?

?小程序:

?

?返回结果:

?刘琪老师

小程序基本配置及常用组件

基础 | 微信开放文档 (qq.com)

自定义组件及传参

组件注册(这里已demo举例):?

第一步:在component 里新建demo组件 ,demo.json中的component为true

?第二步: 在index.json中使用,usingComponents demo为自定义的名字 值为路径

?第三步: 最后在index.wxml中当标签使用:

?父传子,传参举例(和vue类似)

第一步: 这里给demo 组件传递一个a 的值是123

??<demo?a='123'></demo>

?第二步:在demo.js中的?properties 对象中 设置传递过来的a 的类型(type)和默认值(value)

?第三步:在demo.wxml中用 双大括号语法使用a

子组件给父组件传参:

第一步:自定义方法,使用bind绑定一个自定义的方法值为在js文件中定义的方法(这里是father),并且可以接受子组件传过来的参数(这里为b)

第二步:在子组件中编写一个方法来触发父组件传递过来的方法

使用 this.gritterEvent方法来接收自定义事件,和向父组件传参?

?

?生命周期

触发顺序:先触发 onLaunch ->onShow-> oninit->onLoad->onShow->onReady

?监听事件的生命周期

?

?常用API:

setData

this.setData({

'xxx':值,
'xxx':值,
})

?getApp

拿到实例
const app = this.getApp()

页面跳转:

?request请求:

wx:request(类似于jquery的写法)

?简单封装:

?消息提示框:?

小程序里的数据缓存:?

?从手机相册中上传视频或图片:

wx.chooseMedia(Object object) | 微信开放文档 (qq.com)

wx.chooseMedia({
  count: 9,
  mediaType: ['image','video'],
  sourceType: ['album', 'camera'],
  maxDuration: 30,
  camera: 'back',
  success(res) {
    console.log(res.tempFiles.tempFilePath)
    console.log(res.tempFiles.size)
  }
})

?在小程序中获取元素:

SelectorQuery | 微信开放文档 (qq.com)

wx.createSelectorQuery()

?小米有品项目实战:

向程序常用框架:?

创建项目:?

尚硅谷(微信小程序)

一、小程序

2017年1月9日0点小程序发布 。(?作者: 张小龙

小程序刚发布体积不能超过1M,2017年4月做了改进,1M变为2M

二、小程序的作用

1.同App进行互补,提供同app类型的功能,比app使用方便简介

2.通过扫一扫或者在微信搜索即可下载

3. 用户频率不高,但又不得不用的功能软件,目前看来小程序是首选

4.连接线上线下

5.开发门槛低, 成本低

三、小程序开发资料

1.官方网站:https://developers.weixin.qq.com/miniprogram/dev/framework/

2.微信开发工具:稳定版 Stable Build 更新日志 | 微信开放文档

3.小程序注册,在官方注册:小程序

?小程序发布

四、小程序知识储备

1.flex布局

flex 布局的基本概念 - CSS(层叠样式表) | MDN

2.移动端相关知识

物理像素:屏幕的分辨率

设备独立像素&css独立像素:?虚拟像素,比方说css像素

dpr比&DPI&PPI:?

? ? ? ? dpr:设备像素比,物理像素 / 设备独立像素 = dpr, 一般以iPhone的dpr为准 dpr=2

? ? ? ? PPI:一英寸显示屏上的像素点个数

? ? ? ? DPI:最早指的是打印机在单位面积上打印的墨点数,墨点越多越清晰

3.移动端适配

?viewport适配

? ? ? ? 1. 为什么做viewport适配

? ? ? ? ? ? 手机厂商在生产手机的时候大部分手机默认页面宽度为980px

? ? ? ? ? ? 手机实际视口宽度都要小于980px, 如:iPhone6为365px

? ? ? ? ? ? ?开发需求:需要将980的页面完全显示在手机屏幕上且没有滚动条

? ? ? ? 2. 实现:

? ? ? ?<meta name="viewport" content="width=device-width,initial-scale=1.0">

rem适配

? ? ? ? 1. 为什么做rem适配

? ? ? ? ? ? 机型太多,不同机型屏幕大小不一致

? ? ? ? ? ? 需求:一套设计稿的内容在不同的机型上呈现的效果一致,根据屏幕大小不同的变化,页面中的内容也相应的变化

? ? ? ? 2.实现:
function remRefresh () {

? ? let clientWidth= document.documentElement.clientWidth
? ??
? ? // 将屏幕等分10份
? ? let rem = clientWidth / 10;
? ? document.documentElement.style.fontSize= rem + 'px'
? ? document.body.style.fontSize='12px'
? ??

}

window.addEventListener('pageshow',() => {

? ? remRefresh()
})

// 函数防抖

let timeoutId
window.addEventListener('resize',()=>{
? ? timeoutId &&clearTimeout( timeoutId )
? ? timeoutId = setTImeout(()=>{
? ? ? ? remRefresh()
},300)
})

? ? ? ? 3. 第三方库

????????lib-flexible + px2rem-loader

? ? ? ? 4. 扩展内容

视网膜屏幕是分辨率超过人眼识别极限的高分辨率屏幕,由苹果公司在2010年在iPhone4发布会上首次退出营销术语

? ? ? ? IPhone4的dpr =2 ;人类肉眼分辨率的极限

? ? ? ? 问题: iPhone6 的dpr为多少? iPhone6Pluse 比 iPhone显示图像清晰吗?

五、小程序配置?

5.1.小程序特点概述

1. 没有DOM(什么是DOM,为什么要有DOM,DOM作用是什么?)

2.组件化开发

3.体积小,单个压缩包体积不能超过2M,否则无法上线

4.小程序的四个重要的文件(每个页面都有)? ?

????????*.js

? ? ? ? *.wxml --> view结构 --> html

? ? ? ? *.wxss --> view样式 --> css

? ? ? ? *.json --> view数据 -->json文件 --主要是做配置

5. 小程序适配方案:rpx(responseve pixel响应式像素单位) width:2rpx = 1px

? ? ? ? 小程序适配单位: rpx

? ? ? ? 规定屏幕宽度为 750rpx

? ? ? ? iPhone6 下:1rpx = 1物理像素 =0.5css

?5.2 小程序配置

全局配置:? ? app.json

页面配置: 页面名称.json

// Page(对象) ? Page--函数 ?---函数调用 ?Page--函数对象

// Page(配置对象) 调用表示的是什么意思

// 注册小程序中的一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等

// 产生了一个页面的实例对象,

?

? // onLoad: function (options) {

? // 想要访问msg属性的值

? // this----当前这个页面的实例对象

? // 因为this中没有msg,js本身一门动态类型的语言,对象中没有这个属性,点了,该对象中就有了msg这个属性,但是msg从来赋值,又根据原型的技术,来进行查找,仍然没有找到,所以结果是undefined

? // console.log(this.msg) // undefined

? // console.log(this.data.msg) // 有结果

? // 结论:小程序中没有数据代理,vue中有数据代理

数据代理:通过一个对象访问另一个对象的数据?

?

  // 通过手写代码的方式实现数据代理?
  myProxyData() {
    // 目标对象
    const myData = {
      name: '佐助',
      age: 20
    }
    // 代理对象
    const myProxy = {}
    for (let key in myData) {
      // 把key中存储的属性添加到代理对象上
      Object.defineProperty(myProxy, key, {
        get() {
          console.log('get执行了')
          return myData[key]
        },
        set(val) {
          console.log('set执行了')
          myData[key] = val
        }
      })
    }
    // 通过代理对象可以访问或者设置目标对象中的属性,即可---实现了数据代理
    // console.log(myProxy.name)
    myProxy.name = '鸣人'
    console.log(myProxy.name)

小程序中的事件:

冒泡事件和非冒泡事件

事件 | 微信开放文档

?wx.navigateTo(Object object) | 微信开放文档

?路由跳转↑

    // 保留当前页面,跳转到应用内的某个页面
    wx.navigateTo({
      url:'/pages/log/log'
    })

    // 关闭当前页面,跳转到应用内的某个页面。
    // wx.redirectTo({
    //   url:'/pages/log/log'
    // })

    // 关闭所有页面,打开到应用内的某个页面
    // wx.reLaunch({
    //   url:'/pages/log/log'
    // })

页面的生命周期

生命周期 | 微信开放文档

? ? 页面的生命周期 5个

? ? onLoad ?监听页面加载--页面创建的时候触发

? ? onShow ?监听页面显示 --页面出现在前台时触发 ? ? ? ?默认会执行一次, 页面由隐藏到显示的时候

? ? onReady 监听页面初次渲染完成--页面已经画完了


?

? ? onHide ? ? ? ? ? ? ? ? ? ? ?如果页面隐藏

? ? onUnload ? ? ? ? ? ? ? ? ? ? ?页面卸载

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log('onLoad======监听页面加载')
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    console.log('onReady======监听页面初次渲染完成')
  },

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

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    console.log('onHide======监听页面隐藏')
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    console.log('onUnload======监听页面卸载')
  },

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

  },

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

  },

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

  }

获取用户信息

wx.getUserProfile()

wx.getUserProfile(Object object) | 微信开放文档

?<!--?头像?-->

??<image?class="avatarUrl"?src="{{userInfo.avatarUrl?userInfo.avatarUrl:'../../static/images/lyml.jpg'}}"?mode="scaleToFill"></image>

??<button?class="btn"?bindtap="getUserInfo">?获取信息?</button>

??<!--?昵称?-->

??<text?class="userName">{{userInfo.nickName?userInfo.nickName:'年少不知富婆好'}}</text>

data: {
    msg:'123',
    userInfo: {} // 存储用户信息
  },
  getUserInfo() {
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        const userInfo = res.userInfo
        console.log(res);
        this.setData({
          userInfo
        })
      }
    })
  },

网易云项目(小程序)

单行文本溢出和多行文本溢出

/* 单行文本溢出,使用省略号 */
  font-size: 26rpx;
  /* white-space: nowrap;
  display: block;
  text-overflow: ellipsis; */

  /* 多行文本溢出,使用省略号 */
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical; /* 设置纵向对齐方式 */
  -webkit-line-clamp: 2;

小程序中封装组件:

自定义组件 | 微信开放文档

缓动效果:

操作css样式,使用js表达式的形式在data中定义,在事件中执行

?js部分

let startY = 0
// 移动的纵坐标
let moveY = 0
// 移动的距离
let distanceY = 0
Page({
  // 手指按下事件
  handlerStart(e) {
    // 获取按下的坐标点
    startY = e.touches[0].clientY
    this.setData({
      convertTransition: ''
    })
  },
  // 手指移动事件
  handlerMove(e) {
    // 获取移动中的坐标点
    moveY = e.touches[0].clientY
    distanceY = moveY - startY
    // 限制最小和最大的移动距离
    if (distanceY < 0) {
      distanceY = 0
      return
    }
    if (distanceY >= 80) {
      distanceY = 80
    }
    this.setData({
      covertTransform: `translateY(${distanceY}rpx)`

    })
  },
  // 手指离开事件
  handlerEnd() {
    this.setData({
      covertTransform: `translateY(0rpx)`,
      convertTransition: 'transform 1s linear'
    })
  },

  data: {
    // JS表达式的形式 
    covertTransform: `translateY(0rpx)`,
    convertTransition: ''
  },

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:17:25  更:2022-08-19 19:19:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 4:44:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码