【微信小程序开发】模板与配置

news2024/11/16 11:28:22

在这里插入图片描述

文章目录

  • 前言
  • 1. WXML 模板语法
    • 1.1 数据绑定
    • 1.2 事件绑定
      • 1.2.1 bindtap 事件
      • 1.2.2 bindinput 事件
    • 1.3 条件渲染
    • 1.4 列表渲染
  • 2. WXSS 模板样式
    • 2.1 什么是 rpx 尺寸单位
    • 2.2 什么是样式导入
    • 2.3 全局样式和局部样式
      • 2.3.1 全局配置
        • 2.3.1.1 window 节点常用的配置项:
        • 2.3.1.2 tabBar
  • 3. 网络数据请求

前言

前面我们学习了微信小程序的环境介绍和一些基本的使用,而今天这篇文章我将为大家介绍微信小程序开发的详细使用,今天介绍的是微信小程序开发的模板与配置。

1. WXML 模板语法

1.1 数据绑定

数据绑定用于将逻辑层的数据呈现到界面上,在微信小程序中,页面分别由四个文件组成,其中之一就是逻辑处理文件(.js文件),负责页面逻辑内容的处理。数据绑定将逻辑层的数据与视觉层进行通信,实现数据的动态更新和双向传递。

数据绑定是单向的,从逻辑层到视觉层。在微信小程序中,数据必须要放在一个固定的地方,即该页面的逻辑层的data属性中。页面的逻辑层就是该页面的 .js 文件中的data对象,该对象中的所有属性都可以在界面中访问到。

在微信小程序中实现数据绑定,首先需要在 .js 文件的 data 中定义数据,然后在 WXML 中通过 Mustache 语法获取到 .js 中的数据。

在 .js 文件的 data 中定义数据:

Page({

  /**
   * 页面的初始数据
   */
  data: {
    info: "数据绑定"
  }
|

在 .WXML 文件中使用 Mustache语法: {{变量名}} 来获取到指定数据:

<text>{{info}}</text>

在这里插入图片描述
Mustache 语法主要运用于下面的场景:

  • 绑定内容
  • 绑定属性
  • 运算(三元运算、算术运算等)

(❁´◡`❁)动态绑定数据

为什么需要数据绑定呢?因为有些时候的数据是动态的,不是规定死的,通过 Mustache 的数据绑定可以获取到动态变化的数据。

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 根据需要更改需要的图片的位置
    imagePath: "/images/1.jpg"
  },
},
<image src="{{imagePath}}" mode="widthFix"/>

在这里插入图片描述
(❁´◡`❁)三目运算

Page({

  /**
   * 页面的初始数据
   */
  data: {
    randomNum: Math.random() * 10 //生成10以内的随机数
  },
},
<text>{{randNum > 5 ? '大于5的数字' : '小于5的数字'}}</text>

在这里插入图片描述

(❁´◡`❁)算术运算

Page({

  /**
   * 页面的初始数据
   */
  data: {
    info: Math.random().toFixed(2) //生成0-1之间的两位小数
  },
},
<text>'生成的0-100之间的随机整数'{{info * 100}}</text>

在这里插入图片描述

1.2 事件绑定

什么是事件?

事件是视图层到逻辑层的通讯方式。它可以将用户的行为反馈到逻辑层进行处理,同时绑定在组件上。当达到触发事件的条件时,就会执行逻辑层中对应的事件处理函数。事件可以携带额外信息,如id、dataset、touches等。事件还是连同WXML组件和JavaScript的桥梁。通过事件,开发者可以处理用户操作、小程序状态等场景。

小程序中常见的事件类型有三种:

类型绑定方式事件描述
tapbindtap 或 bind:tap手指触摸后马上离开,类似于 HTML 中的 click 事件
inputbindinput 或 bind:input文本框的输入事件
changebindchange 或 bind:change状态改变时触发

事件对象的属性列表:

属性类型说明
typeString事件类型
timeStampInteger页面打开到触发事件所经过的毫秒数
targetObject触发事件的组件的一些属性值集合
currentTargetObject当前组件的一些属性值集合
detailObject额外的信息
touchesArray触摸事件,当前停留在屏幕中的触摸点信息的数组
changedTouchesArray触摸事件,当前变化的触摸点信息的数组

上面属性中:target 和 detail 是使用很多的两个属性。

target 和 currentTarget 的区别:

  1. target:这个属性指的是触发事件的元素,也就是用户与界面上的某个元素发生的交互行为所对应的元素。例如,如果用户点击了一个按钮,那么这个按钮就是target。
  2. currentTarget:这个属性指的是当前正在触发事件的元素,也就是事件绑定所在的元素。例如,如果在一个按钮的点击事件中,点击了按钮的父元素,那么 currentTarget 就是按钮的父元素。

target 是触发该事件的源头组件,而 currentTarget 则是当前事件所绑定的组件。

target和currentTarget的区别在于,target是指向触发事件的元素,而currentTarget是指向当前正在触发事件的元素。

<view class="outer-view" bind:tap="outerHandler">
  <button type="primary">按钮</button>
</view>

点击内部的按钮时,点击事件以冒泡的方式向外扩散,也会触发外层 view 的 tap 事件处理函数。
此时,对于外层的 view 来说:

  • e.target 指向的是触发事件的源头组件,因此,e.target 是内部的按钮组件
  • e.currentTarget 指向的是当前正在触发事件的那个组件,因此,e.currentTarget 是当前的 view 组件

1.2.1 bindtap 事件

在小程序中,不存在 HTML 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为,通过 bind:tap 或者 bindtap,可以为组件绑定 tap 触摸事件,语法如下:

<button type="primary" bind:tap="btnTapHandler">按钮</button>

在页面的 .js 文件中定义对应的事件处理函数,事件参数通过形参 event(一般简写成 e) 来接收:

和 .js 文件中 data 平级定义事件:

btnTapHandler(e) {
    console.log(e)
  },

当我们点击按钮的时候就会触发 btdTapHandler 事件:

在这里插入图片描述

上面示例中的事件处理的是简单的事件,在事件处理函数中还可以为 data 中的数据赋值,在事件函数中国需要调用 this.setData(Object) 方法 来给页面的 data 数据赋值。

首先我们在 data 中定义数据 count,初始值为 0:

count: 0

然后在 bindtap 事件处理函数中,为 data 数据赋值:

// 当发生该事件的时候会将count+1
btnTapHandler(e) {
    this.setData({
      count: this.data.count + 1
    })
  },

在这里插入图片描述

当然这些值都是比较死的,我们也可以将渲染层传来的参数赋值给 data 中的数据中,而要想拿到渲染层传来的参数,需要通过 event.target.dataSet.参数名 来获取到渲染层传来的指定参数的值,并且在渲染层传递参数也有点区别,不能直接 函数名(参数) 来调用函数,如果这样来调用函数的话,函数名(参数名) 则会被认为是函数名,在微信小程序的渲染层传递参数需要通过 data-参数名=“” 来进行传参。

btnTapHandler(e) {
    this.setData({
      count: e.target.dataset.count
    })
  },

渲染层传参:

<button bind:tap="btnTapHandler" type="primary" data-count="3">按钮</button>

在这里插入图片描述
但是这里有个问题,就是我们查看 data 中的 count 的类型的时候,可以发现这个 count 是 string 类型的,为什么呢?

在这里插入图片描述

因为我们 data-count=“3” “3” 是一个字符串,所以渲染层接收到的参数的类型就是 string 类的,那么如何传参才能使得渲染曾传递的参数的类型是 Integer 类型的呢?

需要借助 Mustache 语法来传递 Integer 类型的参数:

<button bind:tap="btnTapHandler" type="primary" data-count="{{3}}">按钮</button>

1.2.2 bindinput 事件

<input type="text" bindinput="inputHandler"/>
input {
  /* 设置输入框的边框宽度为1像素,样式为实线,颜色为浅灰色(#eee) */
  border: 1px solid #eee;
  /* 设置输入框的外边距(周围的空间)为5像素。这使得输入框与其周围的元素之间有5像素的间距 */
  margin: 5px;
  /* 设置输入框的内边距(框与内容之间的空间)为5像素。这确保了输入框的内容与其边框之间有5像素的距离 */
  padding: 5px;
  /* 设置边框的圆角为3像素。这使得输入框的四个角看起来是圆形的,而不是完全的直角 */
  border-radius: 3px;
}
inputHandler(e) {
    console.log(e.detail.value)
  },

在这里插入图片描述
每当输入框中的数据有更新,event.detail.value 中的值就会更新。

根据上面的事件传参,通过 input 事件也可以根据输入框中的值为 data 中的数据赋值:

先在 data 中定义 message 数据,并进行初始化。

message: '你好'

渲染层使用 Mustache 语法获取到 data 中的数据:

<input type="text" value="{{message}}" bindinput="inputHandler"/>

在 js 中将输入框中的数据赋值给 data 中的数据:

inputHandler(e) {
    this.setData({
      message: e.detail.value
    })
  },

启动之后,输入框会获取到 message 中的值:

在这里插入图片描述

然后我们修改输入框的值看能否赋值给 data 中的 message 数据。

在这里插入图片描述

change 事件后面再为大家介绍。

1.3 条件渲染

在微信小程序中可以使用 wx:if / wx:elif / wx:else 来实现条件渲染。

<view wx:if="{{condition}}">True</view>
condition: true

在这里插入图片描述

condition: false

在这里插入图片描述

如果要一次性控制多个组件的展示与隐藏,可以使用一个 <block></block> 标签将多个组件包装起来,并在<block> 标签上使用 wx:if 控制属性:

<block wx:if="{{condition}}">
  <view>view1</view>
  <view>view2</view>
</block>

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

注意: 并不是一个组件,它只是一个包裹性质的容器,不会在页面中做任何渲染。

在这里插入图片描述

在小程序中,直接使用 hidden=“{{ condition }}” 也能控制元素的显示与隐藏:

<view hidden="{{condition}}">条件为true隐藏,条件为false显示</view>

在这里插入图片描述

wx:if 与 hidden 的对比:

  1. 运行方式不同
  • wx:if 以动态创建和移除元素的方式,控制元素的展示与隐藏
  • hidden 以切换样式的方式(display: none/block;),控制元素的显示与隐藏
  1. 使用建议
  • 频繁切换时,建议使用 hidden
  • 控制条件复杂时,建议使用 wx:if 搭配 wx:elif、wx:else 进行展示与隐藏的切换

1.4 列表渲染

在微信小程序中可以使用 wx;for 根据指定的数组,循环渲染重复的组件结构:

首先在 data 中定义一个数组:

array: [
      '小美',
      '小帅',
      '壮壮'
    ]

默认情况下,当前循环项的索引用 index 表示;当前循环项用 item 表示。

<view wx:for="{{array}}">
  索引是:{{index}},当前项是:{{item}}
</view>

在这里插入图片描述

index 和 item 是默认的索引和循环项,我们也可以自定义索引和循环项:

  • 使用 wx:for-index 可以指定当前循环项的索引的变量名
  • 使用 wx:for-item 可以指定当前项的变量名
<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
  索引是:{{idx}},当前项是:{{itemName}}
</view>

在这里插入图片描述

类似于 Vue 列表渲染中的 :key,小程序在实现列表渲染时,也建议为渲染出来的列表项指定唯一的 key 值,从而提高渲染的效率:

array: [
      {id: 1, name: '小美'},
      {id: 2, name: '小帅'},
      {id: 3, name: '壮壮'}
    ]
<view wx:for="{{array}}" wx:key="id">
  索引是:{{index}},当前项是:{{item.name}}
</view>

在这里插入图片描述

对于我们上面的示例,没有适合的可以指定的 key 值,所以可以将索引 index 作为 key 值。

2. WXSS 模板样式

什么是 WXSS?

WXSS(WeiXin Style Sheets)是一套样式语言,用于描述WXML的组件样式。WXSS用于决定WXML的组件应该怎么显示,类似于网页开发中的CSS。为了适应广大的前端开发者,WXSS具有CSS大部分特性。同时,为了更适合开发微信小程序,WXSS对CSS进行了扩充以及修改。与CSS相比,WXSS扩展的特性有尺寸单位和样式导入等。

与 CSS 相比,WXSS 扩展的特性有:

  • rpx 尺寸单位
  • @import 样式导入

2.1 什么是 rpx 尺寸单位

rpx是微信小程序独有的、解决屏幕自适应的尺寸单位,可以根据屏幕宽度进行自适应,不论屏幕大小,规定屏幕宽为750rpx。通过rpx设置元素和字体的大小,小程序在不同尺寸的屏幕上,可以实现自动适配。

rpx与px之间的换算以iPhone6为例,iPhone6的屏幕宽度为375px,共有750个物理像素,则750rpx=375px=750物理像素,也就是1rpx=0.5px=1物理像素,因为设计师的图一般是二倍图,所以在iPhone6下直接使用测量出来的值来设置rpx就可以了。

正是因为这,官方建议:开发微信小程序时,设计师可以用 iPhone6 作为视觉稿的标准。

2.2 什么是样式导入

在微信小程序开发中,样式导入是一种使用WXSS提供的@import语法来导入外部样式表的方法。通过样式导入,可以将样式代码分离到单独的样式表中,以便更好地组织和管理代码。

使用@import语法,可以在WXSS文件中导入其他WXSS文件的样式。例如,可以在app.wxss文件中导入common.wxss文件中的样式,以便在整个小程序中共享和重用这些样式。

在样式导入时,需要指定需要导入的样式表的相对路径。例如,如果common.wxss文件位于与app.wxss文件同一目录下,可以使用@import "common.wxss"来导入该文件中的样式。

通过样式导入,可以提高代码的可维护性和可重用性,同时也有助于减少代码冗余和降低样式冲突的可能性。

2.3 全局样式和局部样式

全局样式:微信小程序中的全局样式是指在app.wxss文件中定义的样式。这些样式对小程序中的每个页面都有效,可以用来设置全局的样式风格,例如字体、颜色、布局等。通过在app.wxss文件中定义样式,可以让整个小程序的样式风格保持一致,提高了用户体验。

局部样式:微信小程序中的局部样式是指在页面级别的WXSS文件中定义的样式。这些样式只作用于对应的页面,不会影响其他页面。通过在页面级别的WXSS文件中定义样式,可以实现页面的个性化定制,使每个页面的样式都符合特定的需求和设计风格。

  • 当局部样式和全局样式冲突时,根据就近原则,局部样式会覆盖全局样式
  • 当局部样式的权重大于或等于全局样式的权重时,才会覆盖全局的样式

我们将鼠标放在对应的 CSS 样式中就会显示出权重。

在这里插入图片描述

2.3.1 全局配置

全局配置文件的常用配置项:

  1. pages:记录当前小程序所有页面的存放路径
  2. window:全局设置小程序窗口的外观
  3. tabBar:设置小程序底部的 tabBar 效果
  4. style:是否启用新版的组件样式(v2表示启用)

小程序窗口组成部分:

在这里插入图片描述

2.3.1.1 window 节点常用的配置项:
属性名类型默认值说明
navigationBarTitleTextString字符串导航栏标题文字内容
navigationBarBackgroundColorHexColor#000000导航栏背景颜色,如 #000000
navigationBarTextStyleStringwhite导航栏标题颜色,仅支持 black / white
backgroundColorHexColor#ffffff窗口的背景色
backgroundTextStyleStringdark下拉 loading 的样式,仅支持 dark / light
enablePullDownRefreshBooleanfalse是否全局开启下拉刷新
onReachBottomDistanceNumber50页面上拉触底事件触发时距页面底部距离,单位为px
"window": {
  "navigationBarTitleText": "WeChat",
  "navigationBarBackgroundColor": "#FFFFFF",
  "navigationBarTextStyle": "black",
  "backgroundColor": "#efefef",
  "backgroundTextStyle":"dark",
  "enablePullDownRefresh":true,
  "onReachBottomDistance": 100
}

在这里插入图片描述

注意:上拉触底默认距离为50px,如果没有特殊需求,建议使用默认值即可。

2.3.1.2 tabBar

微信小程序中的tabBar是指位于小程序底部或者顶部的一组固定导航按钮,通常包含 2-5个按钮,用于快速切换小程序的不同页面。这些按钮是固定的,不会随着页面滚动而消失。通过点击不同的tabBar按钮,用户可以快速切换到对应的功能页面。

在微信小程序中,tabBar是全局配置,即每个页面都会显示这个tabBar。开发者可以在微信小程序的app.json文件中配置tabBar,包括设置tabBar的标题、图标、背景色等样式,以及指定每个tab页面的路径。

通过合理地使用tabBar,可以为用户提供更好的导航和切换体验,提升小程序的用户满意度。在设计tabBar时,需要注意颜色、大小、字体等因素的统一,以保持小程序的整体风格的一致性。同时,需要考虑用户的使用习惯和逻辑,使tabBar符合用户的心理预期和使用习惯。

注意:

  • tabBar中只能配置最少 2 个、最多 5 个 tab 页签
  • 当渲染顶部 tabBar 时,不显示 icon,只显示文本

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

tabBar 的组成部分:

在这里插入图片描述

tabBar 节点的配置项:

属性类型是否必填默认值描述
positionStringbottomtabBar 的位置,仅支持 bottom/top
borderStyleStringblacktabBar 上边框的颜色,仅支持 black/white
colorHexColortab 上文字的默认(未选中)颜色
selectedColorHexColortab 上的文字选中时的颜色
backgroundColorHexColortabBar 的背景色
listArraytab 页签的列表,最少 2 个、最多 5 个 tab

每个 tab 项的配置选项:

属性类型是否必填描述
pagePathString页面路径,页面必须在 pages 中预先定义
textStringtab 上显示的文字
iconPathString未选中时的图标路径;当 postion 为 top 时,不显示 icon
selectedIconPathString选中时的图标路径;当 postion 为 top 时,不显示 icon

注意:如果存在 tabBar,那么在 app.json 的 pages 选项中,需要将 tab 页面放在前面,否则这些 tabBar 是无法渲染出来的。

3. 网络数据请求

既然是小程序,肯定不可避免的需要向其他网站发送网络请求。但是处于安全考虑,小程序官方对数据接口的请求做出了限制:

  1. 只能请求 HTTPS 类型的接口
  2. 必须将接口的域名添加到信任列表

在这里插入图片描述

配置域名在微信小程序管理后台中配置:

在这里插入图片描述
在这里插入图片描述
微信小程序向网站发送请求,需要调用微信小程序提供的 wx.request() 方法,通过这个方法可以发送 GET 或者 POST等其他请求类型的请求。

GET 请求:

wx.request({
      url: 'https://www.baidu.com',
      method: "GET",
      success: (res) => {
        console.log(res)
      }
    })

POST 请求:

wx.request({
      url: 'https://www.baidu.com',
      method: "POST",
      data: {
        name: 'zhangsan',
        password: '123456'
      },
      success: (res) => {
        console.log(res)
      }
    })

在很多情况下,我们需要在页面刚加载的时候,自动请求一些初始化的数据。此时需要在页面的 onLoad 事件中调用获取数据的函数:

在这里插入图片描述
如果后端程序员仅仅提供了 http 协议的接口、暂时没有提供 https 协议的接口,此时为了不耽误开发的进度,我们可以在微信开发者工具中,临时开启「开发环境不校验请求域名、TLS 版本及 HTTPS 证书」选项,跳过 request 合法域名的校验

在这里插入图片描述

注意:跳过 request 合法域名校验的选项,仅限在开发与调试阶段使用.

跨域问题只存在于基于浏览器的 Web 开发中。由于小程序的宿主环境不是浏览器,而是微信客户端,所以小程序中不存在跨域的问题。

Ajax 技术的核心是依赖于浏览器中的 XMLHttpRequest 这个对象,由于小程序的宿主环境是微信客户端,所以小程序中不能叫做“发起 Ajax 请求”,而是叫做“发起网络数据请求”。

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

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

相关文章

反函数

一、反函数的定义 对每个y∈f(D)&#xff0c;都有唯一的x∈D&#xff0c;使得f(x)y。即一个y对应一个x 举例 求得反函数的方法也比较简单&#xff1a; 在y f(x)中将y与x互换&#xff1b;重新整理为用x的表达式表示y的格式 。 二、反函数的图像性质 一个函数和反函数之间…

SpringBoot中阿里云OSS的使用

目录 1 登录/注册阿里云并进入控制台 2 进入OSS控制台 3 创建bucket 4 查看bucket 5 获取AccessKey 6 查看帮助文档 7 添加Maven依赖 8 获取示例代码并改造成工具类 9 测试 1 登录/注册阿里云并进入控制台 2 进入OSS控制台 3 创建bucket 4 查看bucket 5 获取AccessKe…

Unity MonoBehaviour 生成dll

dllllllllllllll&#x1f953; &#x1f959;vs创建类库项目&#x1f9c0;添加UnityEngine、UnityEditor引用&#x1f355;添加MonoBehaviour类&#x1f9aa;设置dll生成路径&#x1f37f;生成dll&#x1f354;使用dll中的Mono类 &#x1f959;vs创建类库项目 &#x1f9c0;添加…

Kotlin快速入门系列3

Kotlin条件、循环控制 IF条件控制 与Java类似&#xff0c;一个if语句可包含布尔表达式和一条或多条语句。 fun compare(a:Int,b:Int) : Int{//常规传统用法var max aif (b>a) max breturn max//使用elsevar mMax : Intif(a>b){mMax a}else{mMax b}return mMax//使…

【游戏客户端开发的进阶路线】

*** 游戏客户端开发的进阶路线 春招的脚步越来越近&#xff0c;我们注意到越来越多的同学们都在积极学习游戏开发&#xff0c;希望能在这个充满活力的行业中大展拳脚。 当我们思考如何成为游戏开发领域的佼佼者时&#xff0c;关键在于如何有效规划学习路径。 &#x1f914; 我…

【学网攻】 第(9)节 -- 路由器使用以及原理

系列文章目录 目录 系列文章目录 文章目录 前言 一、路由器是什么&#xff1f; 二、实验 1.引入 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节 -- 交换机划分Vlan…

代码随想录算法训练营第32天 | 122.买卖股票的最佳时机II + 55. 跳跃游戏 + 45.跳跃游戏II

今日任务 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II 122.买卖股票的最佳时机II - Medium 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i…

高中数学:集合

一、基本概念与关系 1、元素 2、集合 集合中元素的特性 1、确定性。2、无序性。3、互异性。 3、空集&#xff0c;用∅符号表示 4、元素与集合的关系是属于关系&#xff0c;用∈符号表示 5、集合与集合的关系是包含关系。用⊆或者⊊符号表示 子集与真子集。 A⊊B > A⊆B 反之…

HCIP复习课(bgp实验)

1、ip配置&#xff1a; R1&#xff1a; R2&#xff1a; R3&#xff1a; R4&#xff1a; R5&#xff1a; R6&#xff1a; R7&#xff1a; R8&#xff1a; 2、bgp配置&#xff1a; R1&#xff1a; R2&#xff1a; R3&#xff1a; R4&#xff1a; R5&#xff1a; R6&#xff1a;…

Apache Flink连载(二十六):TaskSlot任务槽-(1)-TaskSlotSlotSharingGroup

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 提交到集群中的Flink程序最终会转换成一个个的Subtask,Subtask是Flink任务调度的基本单元,这些t…

LaTeX基础使用【系列一】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;LaTeX基础使用 &#x1f30f;1 LaTeX基本结构&#x1f349;1.1 基本结构&#x1f349;1.2 小tip1.2.1 注释的写法1.2.2 数学公式 &#x1f30f;2 LaTeX中文的处理&#x1f951;2.1 前提工作…

C++ 重点内容:友元

目录 友元函数&#xff1a; 友元成员函数&#xff1a; 友元类&#xff1a; 友元是否有悖于OOP? 总结&#xff1a; 类因为具有封装和信息隐藏的特性&#xff08;类外函数无法访问类的私有、保护成员&#xff09;&#xff0c;C提出友元解决特定的编程需要&#xff1b;友元分…

第八篇 交叉编译华为云Iot SDK到Orangepi3B

本篇主要内容&#xff1a; 一、交叉编译华为云Iot SDK依赖1.宿主机安装交叉编译工具链&#xff08;1&#xff09;选择下载交叉编译工具链&#xff08;2&#xff09;解压、添加环境变量、重启2.交叉编译依赖库&#xff08;0&#xff09; 准备工作&#xff08;1&#xff09; 交叉…

Ant Design Mini - 支付宝小程序官方推出的免费开源 UI 组件库,新增支持微信小程序,实用性大大增加

支付宝小程序官方的 UI 组件库开始支持运行在微信小程序上了&#xff0c;如果要开发这两家小程序平台&#xff0c;这套组件很合适。 Ant Design Mini 也简称 antd-mini &#xff0c;是一套运行在支付宝小程序的 UI 组件库&#xff0c;UI 设计遵循 Ant Design 规范&#xff0c;…

【PyTorch】使用PyTorch创建卷积神经网络并在CIFAR-10数据集上进行分类

前言 在深度学习的世界中&#xff0c;图像分类任务是一个经典的问题&#xff0c;它涉及到识别给定图像中的对象类别。CIFAR-10数据集是一个常用的基准数据集&#xff0c;包含了10个类别的60000张32x32彩色图像。在本博客中&#xff0c;我们将探讨如何使用PyTorch框架创建一个简…

TensorFlow2实战-系列教程2:神经网络分类任务

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 1、Mnist数据集 下载mnist数据集&#xff1a; %matplotlib inline from pathlib imp…

vs2019报错MSB4019 找不到导入的项目“BuildCustomizations\CUDA 9.2.props”

在VS中执行生成&#xff0c;报错如下&#xff1a;严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB4019 找不到导入的项目“D:\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations\CUDA 9.2.props”。请确认 Import 声明“D:\Microso…

在autodl训练yolov8时卡在下载字体

1.问题 在autodl训练yolov8到这一步之后会卡住很久 2. 解决办法 Ctric中断后发现是下载Arial字体卡住了&#xff0c;这个字体需要从外网中下载 先手动从链接中下载https://ultralytics.com/assets/Arial.ttf &#xff0c;然后上传到autodl。然后将这个文件移动到/root/.config/…

机电制造ERP软件有哪些品牌?哪家的机电制造ERP系统比较好

机电制造过程比较复杂&#xff0c;涵盖零配件、采购、图纸设计、工艺派工、生产计划、物料需求计划、委外加工等诸多环节。而供应链涉及供应商的选择、材料采购价格波动分析、材料交货、品质检验等过程&#xff0c;其中某个环节出现问题都可能会影响产品交期和经营效益。 近些…

一文速通Python添加、修改和删除字典元素

添加、修改和删除字典元素是 Python 中使用字典时常见的操作。字典是一种无序、可变的数据结构&#xff0c;用于存储键值对。在 Python 中&#xff0c;对字典元素进行添加、修改和删除操作可以帮助我们动态地管理数据&#xff0c;方便地根据需求对字典进行更新和维护。 一、添…