黑马微信小程序学习笔记

news2024/12/23 14:06:03

小程序和普通网页的区别
1、运行环境不同
网页运行在浏览器环境中
小程序运行在微信环境中
2、API不同
由于运行环境的不同,在小程序中无法调用DOM和BOM 的API(因为这两个API是浏览器暴露出来的,微信环境没有)
但是可以调用微信提供的定位、扫码、支付等API
3、开发模式不同
网页只需浏览器和代码编辑器即可
小程序需要申请小程序账号,安装小程序开发者工具,创建和配置小程序项目

下面这个出自官网:
1、网页开发渲染线程和脚本线程是互斥的,长时间的脚本运行可能会导致页面失去响应;
在小程序中,二者是分开的,分别运行在不同的线程中;
2、网页开发者可以使用到各种浏览器暴露出来的 DOM API,进行 DOM 选中和操作;
小程序的逻辑层和渲染层是分开的,小程序的框架分为视图层(Webview)和逻辑层
( App Service),逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而缺少相
关 的DOM API和BOM API;
3、PC 端需要面对 IE、Chrome、QQ浏览器;
移动端需要面对Safari、Chrome以及 iOS、Android 系统中的各式 WebView ;
小程序开发过程中需要面对的是两大操作系统 iOS 和 Android 的微信客户端,
以及用于 辅助开发的小程序开发者工具;

进入微信公众平台注册小程序开发账号

官网指南

了解微信开发者工具
1、快速创建小程序项目
2、代码的查看和编辑
3、对小程序功能进行调试
4、小程序的预览和发布

创建一个小程序项目
点击+号,选中目录和模板

如何预览项目效果
点击编译、或者点击预览扫码真机体验

小程序项目的基本构成
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

WXML 和 HTML 的区别
在这里插入图片描述

在这里插入图片描述
WXSS 和 CSS 的区别
在这里插入图片描述
在这里插入图片描述
小程序中的JS文件
在这里插入图片描述
在这里插入图片描述
小程序的宿主环境
在这里插入图片描述
在这里插入图片描述
小程序的渲染层和逻辑层分别由2个线程管理:渲染层的界面使用了WebView 进行渲染;逻辑层采用JsCore线程运行JS脚本。一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端(下文中也会采用Native来代指微信客户端)做中转,逻辑层发送网络请求也经由Native转发,小程序的通信模型下图所示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小程序中组件的分类
在这里插入图片描述
小程序API的三大分类

在这里插入图片描述
小程序的协同开发
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小程序中的版本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
事件绑定

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有时事件绑定的元素和事件触发的元素是同一个,而target只得就是触发事件的元素

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
条件渲染

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
列表渲染
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
WXSS模版样式

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

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

小程序中的页面配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置tabbar注意事项:在app.json的pages数组下首页必须是tabbar页面,否则不生效

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小程序中的网络请求

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小程序中的页面跳转

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
路由传参和参数的接收

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:wx.switchTab: url 不支持 queryString

对上拉触底事件进行节流处理

在这里插入图片描述
在这里插入图片描述
小程序的生命周期
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
WXS 介绍
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
WXS 基础语法
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
WXS 和JS 的区别

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

自定义组件

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

组件样式隔离

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

组件中的数据方法

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

组件中的数据监听

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
纯数字字段
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
组件的生命周期函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
插槽
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自定义组件父子组件之间的通信

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
自定义组件中的behaviors
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在小程序中使用vant组件库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为什么在小程序中使用npm安装第三方包,需要构建npm才能使用❓

默认情况下,在小程序内安装的第三方的包,是安装在node_module目录内的,且安装完包后也是不能马上使用的,因为小程序比较特殊,它是无法直接读取node_module软件包的,那小程序该如何使用安装的包呢?解决办法就是需要通过点击开发者工具菜单栏里的“ 工具 ” - “构建npm”的方式,把安装的包迁移到miniprogram_npm目录(构建npm时自动生成该目录)中,然后就可以使用该目录下的第三方包了。需要注意的是:每安装一个新包,就需要重新构建npm一次,且在构建之前,为了防止出现一些不必要的未知错误,可以先把之前安装包后构建生成的miniprogram_npm目录删除,然后再点击构建npm重新生成;如果不删的话,有可能,只是有可能会导致构建失败。
新版本的微信开发者工具已经默认支持npm了,不需要再手动配置修改选项了。

小程序API的promise化

在这里插入图片描述
在这里插入图片描述
npm install --save miniprogram-api-promise@1.0.4
在这里插入图片描述

在这里插入图片描述
如果没有使用await,那么接收的结果就是一个promise

小程序中共享全局数据

在这里插入图片描述
在这里插入图片描述
npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小程序中的分包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如何在小程序中使用普通分包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如何使用独立分包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小程序中的分包预下载

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

如何实现自定义tabbar
添加如下配置,就会在根目录中找custom-tab-bar 组件,这个名称是约定好的。
需要注意的是tabbar页面的url必须写在非tabbar页面的前面。

"tabBar": {
    "custom": true,
 }

内网穿透

内网设备和内网设备之间无法互相访问;
内网可以访问外网,外网不能访问内网;

内网穿透可以让我们通过公网访问内网中的设备或服务,原理就是将内网中的服务映射到公网上,让公网用户可以访问到这些服务,通常需要一个中转的服务器来完成(也叫穿透服务器)
穿透服务器提供一个公网地址,用户访问这个地址,穿透服务器就会把请求转发到目标的内网服务器上,这样就实现了公网用户访问内网服务的目的。

目前常用的内网穿透有两种:
1、端口映射
2、域名映射

项目实践:
安装 utools 搜索内网穿透插件 ,然后将请求的地址替换成公网地址(这个工具已经没有内网穿透功能了)
手机调试小程序,预览生成的二维码在部分手机上没有发请求,点击真机调试编译并生产二维码,然后在手机上打开调试
使用工具花生壳,但是不支持web格式访问(需要付费)

封装公共请求方法

// 封装一个公共的请求方法
const request = (url,data={},method='GET') => {
  // 一旦new Promise 状态就是pending,需要手动resolve,reject
 return new Promise((resolve,reject)=>{
    wx.request({
      url: host + url,
      method,
      data,
      success:(res) => {
        resolve(res.data);
      },
      fail:(err) => {
        reject(err);
      }
    });
  })
}

移动端开发前置知识
物理(设备)像素:真实存在的,物理硬件屏幕上的最小显示单元,屏幕的分辨率,像素越高越清晰
css像素:虚拟像素,css中使用的逻辑单位,用于浏览器渲染web页面,通常情况下,一个css像素等于一个设备独立像素
设备独立像素:是一种基于css像素的视觉单位,与设备的物理性质无关,是浏览器和操作系统用来确定在各种分辨率和尺寸的设备上如何呈现web页面的重要因素
DPR:设备像素与设备独立像素之间的比率,表示屏幕上一个css像素对应几个设备像素
PPI:每英寸的像素点数量,通常用于描述屏幕的分辨率,越高屏幕的分辨率越高

在移动开发中,我们通常通过控制css像素和设备像素之间的比率来实现高清屏幕的适配。

移动端适配方案
1、meta
2、rem

实现输入账号密码登录功能
输入框input和onchange的区别
input 会实时触发,onchange只会在失焦时触发

event事件对象中target和currentTarget的区别
target绑定事件的元素不一定是触发事件的元素
Current target要求绑定事件的元素一定是触发事件的元素

如何实时收集表单数据
首先在data中定义账号和密码,两个input绑定相同的事件处理方法,通过event.target.detail如何区分两个字段?
第一种办法,给input传id,在event.target.id 中可以拿到(id只能有一个)
第二种办法,通过data-xx 传递type参数作区分(但参数可以定义很多)
昨天看到文档上是可以使用双向数据绑定的,这样更简单了

<input model:value="{{value}}" />

如何保存用户信息?
将登陆信息以json格式存到storage中,在页面unload的时候获取用户信息
我们使用switchTab 方法跳转到登录页面,在登录页面获取到用户信息后回调的时候原页面并没关闭不会再次触发unload事件,导致我们无法获取登录信息。
使用wx.reLanuch 进行跳转,会关闭当前页面打开新页面,解决上面的问题






**课后问题:**
1、在小程序中,rpx是如何换算的
他就是将屏幕分成750份,然后将rpx转为对应px
2、wxss中什么选择器是不支持的
属性选择器、并集选择器、交集选择器、后代选择器、相邻兄弟选择器、伪类选择器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1271857.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华清远见嵌入式学习——C++——作业3

作业要求&#xff1a; 代码&#xff1a; #include <iostream>using namespace std;class Per { private:string name;int age;double *high;double *weight; public://有参构造函数Per(string n,int a,double h,double w):name(n),age(a),high(new double(h)),weight(ne…

统信UOS和vue.js的一个兼容问题

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 这事到现在说起还很奇怪&#xff0c;在UOS20&#xff08;硬件为华为鲲鹏服务器&#xff0c;arm架构&#xff0c;g8.3&#xff09;上部署uve.js&#xff0…

利润大增,MAU膝斩,谋求转型的新氧头顶“荆棘王冠”

撰稿|行星 来源|贝多财经 近日&#xff0c;医疗美容服务平台新氧科技&#xff08;NASDAQ:SY&#xff0c;下称“新氧”&#xff09;发布了2023年第三季度未经审计的财务业绩报告。 财报显示&#xff0c;新氧于2023年第三季度实现收入3.85亿元&#xff0c;同比增长19.2%&#x…

SS8844T四通道 1/2 H 桥驱动芯片发,替代A4979,DRV8844,L6288,MP6527

SS8844T 提供四个可独立控制的 1/2 H 桥启 动器。 它可被用于驱动两个 DC 电机、一个步进 电机、四个螺线管或者其它负载。 针对每个通道 的输出驱动器通道由在一个 1/2 H 桥配置中进行配 置的 N 通道功率 MOSFET 组成。 SS8844T 在每个桥的通道上提供高达 2.5A 峰…

继承中的析构函数的权限的深入了解

如果一个父类中的析构函数如果设置为 private 权限 &#xff0c;一个子类public继承了这个父类&#xff0c;那么 这个父类可以创建对象吗&#xff1f; 答案是 不可以 看看下面的代码 class A { public:private:~A() {} };class B :public A {A a; // 这个地方编译不报错&…

零基础搭建本地Nextcloud私有云结合内网穿透实现远程访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;摘要一. 环境搭建二. 测试局域网访问三. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建…

JavaScript WebApi 一(详讲)

基础知识在前面的部分已经讲过了&#xff0c;大家如果没有学习过JavaScript的可以去看一下 1.DOM 引入 在JavaScript中&#xff0c;DOM&#xff08;文档对象模型&#xff09;提供了一种表示和操作HTML文档的方式。在DOM中&#xff0c;文档被表示为一个由节点组成的树形结构。…

IC修真院 | 芯片嵌入式课程重磅上线!

万物互联的时代&#xff0c;离不开嵌入式。 从传统的家用电器到工业控制&#xff0c;从汽车电子到医疗保健&#xff0c;从军事应用到物联网&#xff0c;嵌入式系统无处不在。 我们的后台也经常能收到大家关于“嵌入式”的咨询&#xff0c;也了解到了大家对于嵌入式课程的迫切…

探索前端设计的新境界——介绍IVueUI工具助力Vue页面设计

在快速发展的前端领域&#xff0c;Vue.js作为一款渐进式JavaScript框架&#xff0c;一直备受开发者喜爱。然而&#xff0c;在Vue前端开发的旅程中&#xff0c;页面设计常常是一个不可避免的挑战。今天&#xff0c;我要向大家介绍一款令Vue前端开发者受益匪浅的工具——www.ivue…

selenium+python

selenium 八大查找元素 from selenium import webdriver from selenium.webdriver.common.by import By# 创建一个 WebDriver 实例 driver webdriver.Chrome()# 打开网页 driver.get("https://www.baidu.com/")# 使用 find_element 方法查找元素 element driver.…

【UE】透视效果

效果 步骤 1. 新建一个空白工程 2. 添加一个第三人称游戏和初学者内容包到内容浏览器 3. 新建一个材质&#xff0c;这里命名为“M_Perspective” 打开“M_Perspective”&#xff0c;设置材质域为后期处理 添加三个“SceneTexture”节点&#xff0c;场景纹理ID选项分别设置为“…

如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件

某讯的手游保护系统用的都是一套&#xff0c;在其官宣的手游加固功能中有一项宣传是对比较热门的Unity3d引擎的手游保护方案&#xff0c;其中对Dll文件的保护介绍如下&#xff0c; “Dll加固混淆针对Unity游戏&#xff0c;对Dll模块的变量名、函数名、类名进行加密混淆处理&…

力扣刷题-122买卖股票的最佳时机

题目要求如上&#xff0c;这里可以有两种解题思路&#xff0c;一种是利用动态规划去求解&#xff0c;一种是用贪心去求解。 首先看下动态规划的方法。 用动归去解决 动态规划最重要的就是要想出来递推公式&#xff08;这个真的很难&#xff09;&#xff0c;但是一旦想清楚递推…

BootStrap完整页面尝试(感兴趣的同学可以做)

试采用BootStrap技术或者htmlcss&#xff0c;完成以下页面。 题目为选做&#xff0c;有兴趣的同学可以尝试。

货代FOB条款卖方必备的知识:发货人都要承担哪些费用呢?

据统计&#xff0c;中国出口中以FOB成交的占到70%&#xff0c;但专家指出&#xff1a;FOB对出口商的风险更大&#xff0c;有可能造成货、款两空的结局。 目前我国出口合同以FOB价格条款成交的比例越来越大&#xff0c;而且收货人指定船公司的少&#xff0c;指定境外货代的多&am…

从原理和公式出发:python实现One_Way_ANOVA

文章目录 目的&#xff1a;python实现one way ANOVA 单因素方差分析1. 代码流程2. python代码实现0 主要的函数1 加载数据2 查看数据统计结果3 数据处理及可视化4 方差分析4.1 模型拟合4.2 单因素方差分析 5 Post Hoc t-test组间比较分析6 根据定义自行分解计算对比调用函数的结…

Docker容器镜像、Docker运行时用户空间和Linux内核之间的关系介绍

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 我们都知道&#xff0c;运行的容器就是一个独立的Linux进程&#xff0c;当通过docker run 指令运行一个Docker容器时&#xff0c;首先找到镜像文件&#xff0c;然后根据镜像的配置信息&#xff0c…

Python协程技术:从Greenlet到async/await的异步编程探索

协程&#xff1a; ​ 协程&#xff0c;在Python中&#xff0c;协程是一种轻量级的并发编程方式&#xff0c;它允许在单个线程内实现多个独立的执行流。协程可以在不同的执行点之间进行切换&#xff0c;而无需依赖于操作系统的线程切换。这使得协程成为处理高并发和异步任务的有…

大语言模型新升级:亚马逊云科技2023芯片创新日

在这个充满活力的2023年芯片创新日&#xff0c;Amazon EC2 的副总裁 Dave Brown 与观众分享了他与 EC2 的15年漫长旅程。他的眼中闪烁着对技术的热情&#xff0c;他描述了自己如何与一个才华横溢的团队合作&#xff0c;在这大语言模型与生成式AI的元年中致力于为客户提供最佳的…

Python基础语法之学习字符串快速格式化

Python基础语法之学习字符串快速格式化 一、代码二、效果 一、代码 # 通过f"{占位}"控制字符串快速格式化,不做精度控制 name "张三" age 13 money 12.5 text f"姓名是{name},年龄是{age},钱是{money}" print(text)二、效果 每一天都是一个…