uniapp——第2篇:编写vue语法

前提,建议先学会前端几大基础:HTML、CSS、JS、Ajax,还有一定要会Vue!(Vue2\Vue3)都要会!!!不然不好懂

一、去哪写?

就在【pages】的你的人一个页面文件夹里的【.vue】文件里的【<script> </script>】开始写

注意:

如果你用的是基于vue3版本语法,那么就不用uniapp自带的模板,把export default { ... }删掉,在<script>加上setup,然后再写

如果你还是用vue2版本的语法,那么就按uniapp模板自带的,在有export default { ... }包起来的区域,在这里面写

二、利用插值表达式把vue的数据渲染到HTML部分

插值表达式就是双花括号:{{ }}

然后插值表达式可以是变量、可以是函数(别忘了小括号( ))、可以是三元运算表达式、可以是对象表达式

三、利用ref定义响应式数据变量

首先回顾一下,在vue2里出现过这个ref,是用来获取具体某个组件内的DOM元素的(也就是比document.querySelector( )更精确 )

用法就是在DOM元素里加上【ref=" xxx "】,然后在vue语法区域写【this.$refs.xxx】就可绑定成功(注意,vue里的$refs后面必须跟DOM里的ref名字一样)

那么现在回到vue3,这里的ref是作为响应式数据的一个对象

当他用来绑定获取DOM元素的时候,语法差不多,只不过:

1、ref需要用import引入

2、用一个变量=ref()就行,但是这变量要和DOM元素的ref名字一样

3、要在【生命周期的挂载时期里用】(后面讲)

当他用来渲染响应式数据时:

我们都知道如果你直接在HTML部分用{{  }}绑定了vue的一个变量,但是这个变量不是在data里写的话,它在vue里面变化的时候HTML部分并不会跟着变化

那么使用data挂在数据去返回的方法是vue2版本的语法

如果不用vue2的话,那么vue3语法里可以用ref,ref可以把vue里变量变化——HTML那里也跟着变化

第一步:引入ref对象

第二步:用变量等于ref,ref对象括号( )里传入值

注意:此时这个变量还不是值,只是一个包含该值的对象!!!

那么要用值,只需要写成【对象.value】就行了

但是这里注意区分一个误区

1、在HTML部分的{{ }}直接绑定变量名字就行!

比如:<view> {{ num }} </view>

2、但是在script区域vue代码里,“变量名”是一个对象,要用“变量名.value”才行!

比如:let num = ref(1)

           console.log( num.value )

普通变量也行、字符串也行、对象也行

至于底层原理先不讲,我们也用不不到

四、vue的v指令

其实学习uniapp之前就应该学完了或者多多少少学一半vue了,那么这一块也会尽量简单讲一下,不多说

1、v-bind指令改变标签的属性、类名、样式

写法:

【v-bind:属性 = "xxx"】这就是改变标签属性

比如:v-bind:title = "xxx"、v-bind:value = "xxx"......

还可以简写,去掉v-bind,直接写【:属性 = "xxx"】

比如::title = "xxx"、:value = "xxx"......

稍微提一下两个要注意的:

(1)利用v-bind搭配动态获取image的图片路径

前面说了要动态获取image的src图片路径的话,就需要用v-bind,注意!!!只能用v-bind!!!以前习惯vue语法的可能会习惯用插值表达式:<image scr="{{ item.src }}">,错!直接报错!!只能用v-bind来获取:<image :scr=" item.src ">

然后图片路径那边除了用require( )装起来,也可以用ref( ),根据自己喜好来,反正就是不能直接拿图片路径:

(2)要利用v-bind来修改标签的属性

v-bind可以修改属性,比如控制输入框至少输入1个字符的时候,按钮才可以点

那么要注意true和false这两个布尔值,不能直接当成“属性值”来写。比如我们前面学的像button的属性:loading、disabled,你只是写上去一个单词的形式,就默认是这样:loading = "true"、disabled = "true"

但其实我们要是真这样写是不对的,比如我们要是想改成false,系统会把false当成一个“字符串”而不是一个“布尔值”!!要用v-bind来把它变成布尔值

(3)利用v-bind添加类名样式

假设定义一个样式类名叫active

那么我们可以静态写死一个标签获取这个样式

也可以用v-bind获取

但是注意!!不能直接写v-bind:class="类名",会报错

要用''单引号把类名包起来,这样才是一个字符串形式

错!

对!

但是这还是写死的,要想动态判断获不获取这个类名,就要用【对象表达式】或【三元表达式】

对象表达式那意思就是:判断isActive变量是true还是false,true就获得active,false就不获得active类名

三元运算表达式就是:直接判断"?"前面是true还是false,true就获得active类名,false就获得“空字符串”也就是啥也没有

(4)v-bind修改样式

你想用v-bind修改style样式可不能直接:【v-bind:style = "width:100px"】

记住只要用了【v-bind】,“ ”双引号里的语法就应该写成js代码,那么我们修改样式就应该写成一个对象形式:【v-bind:style = "{ width: '100px' }",别忘了值要写成字符串!那么就要用' '单引号包起来!!

另外带“-”的样式属性需要想JS一样遵循“小驼峰”原则:

2、v-on指令(@时间指令)

我不多说了,v-on事件指令  =  @事件指令,怎么用我也不多说了

就简单讲一下跟vue不太一样的一些注意点

原先我们学习JS知道了一些事件的名称,但是学习微信小程序的时候发现不一样,比如:

【click点击事件】在微信小程序里是【tap事件】(而且要带上bind,完整写法bindtap)

【mouseenter鼠标移入事件】对应的是【touchstart触摸开始事件】(bindtouchstart)

【mouseleave鼠标移出事件】对应的是【touchmove移动触摸点】(bindtouchmove)

还有一些:触摸结束(bindtouchend)以及长按事件(bindlongtap)......

不过tap事件和click事件,在uniapp里已经都归为click事件,他会自己转化成tap,因此你用@tap、@click都是可以的

下面是一些uniapp移动端事件对应的名字:

// 事件映射表,左侧为 WEB 事件,右侧为 ``uni-app`` 对应事件
	{
		click: 'tap',//点击事件
		touchstart: 'touchstart',//手指移入
		touchmove: 'touchmove',//手指移出
		touchcancel: 'touchcancel',//停止跟踪触摸时触发,不常用可以不记
		touchend: 'touchend',//触摸结束
		tap: 'tap',//也是点击事件
		longtap: 'longtap', //手指长按事件  //推荐使用longpress代替
		input: 'input',//输入事件
		change: 'change',//输入内容、表单元素改变事件,不会连续触发,只有当全部修改完成时才会触发
		submit: 'submit',//发生在表单对象<form>上,提交表单所有数据时的事件
		blur: 'blur',//失焦事件
		focus: 'focus',//聚焦事件
		reset: 'reset',//发生在表单对象<form>上,当表单重置(所有表单成员变回默认值)时触发
		confirm: 'confirm',
		columnchange: 'columnchange',
		linechange: 'linechange',         //后面这些不常用,自己可以查查
		error: 'error',
		scrolltoupper: 'scrolltoupper',//屏幕向上滚动
		scrolltolower: 'scrolltolower',//屏幕向下滚动
		scroll: 'scroll'//屏幕滚动事件
	}

另外不同组件有对应着不同的事件,比如你<checkbox>复选框sumbit开关选择器(这些组件可以去官方文档自己看组件使用的入门教程 | uni-app官网)肯定对应的只有@change改变事件了,你总不能让他两触发@click或者@scroll事件吧?人家没有这种事件啊......

也还是一样,去官方文档组件使用的入门教程 | uni-app官网,看每一个组件的【属性】,最底下会有对应的,比如:

swipper组件

from组件

input组件

多的不说了,自己去查

另外注意,绑定空参函数的时候" "双引号直接写函数名,传参的时候" "双引号里写函数名+( )

然后跟JS一样,每触发一个事件就会返回一个event事件对象,那么就可以根据这个事件对象获取有用的值进行一些操作,比如:

<!-- 给swith开关绑定一个改变事件 -->
<switch @change="onChange"></switch>

<script setup>
    //当swith开关组件改变开或关的状态时,会执行这个函数
    function onChange(e){
        //会返回一个事件对象e,然后e.detail.value,就是代表swith的change事件的状态
        console.log(e.detail.value)
    }
</script>

那么甚至可以根据一个组件的事件去影响另一个组件

套路就是:

1、在触发第一个组件事件的函数里传入事件对象,用一个变量去获取事件对象里的信息(别忘了让这个变量成为响应式变量,要么用data挂载,要么用ref( ) )

2、然后再让第二个组件通过【v-bind指令】通过这个变量去改变自己的属性

3、v-if、v-show指令,判断条件渲染组件

语法不用多说,它两是一个东西,跟if-else语句一样,自己看看就行

有一点v-if和v-show不一样,就是隐藏组件元素的方式不一样:

可以发现前者是完全隐藏,而后者会把资源加载过来,通过dispaly:none来决定它出现还是消失,那么如果有图片的话,v-show会把图片资源加载过来,会耗用一点资源,但是更换频繁的时候用它速度更快;而v-if则适合使用频率少的

最后补充:要让一块消失、出现,除了用view容器包起来,还可以用<template>结构容器,<template>的好处就是他不会作为一个实体的父容器,他只是一个结构,在网页检查可以看到他根本不存在

template的好处还有,在ul里包裹li的如果是别的容器,就会破坏ul它的结构导致出错,而用template包裹就没事了,就可以控制每个li的出现、隐藏

4、v-for循环遍历数组

这个更简单我也不打算说了,反正用它你就不用写一堆同样的元素

比如:几千几万条评论,你不看可能真的写几千几万个“评论区的HTML盒子代码吧”

只需设置一个“HTML评论盒子代码”,然后直接根据vue的data返回的动态数据,有获得的数组里几个评论,就遍历显示几个“HTML评论盒子”就行了

然后记住要用到数组下标的话就要写成【v-for=" (item, index) in 数组 "】,item在前index在后,别搞混了;另外一定要带上【v:key="索引"】(如果返回的是对象数组,里面有id索引就用id索引,没有就用v-for自带的index,不然会报错,具体原因学习数据库就知道了)

数据的数组你用ref也行(下面只是两个不相关的ref和data的形式例子)

用data也行

那么这里讲一下一些网站的“删除盒子、元素”功能是怎么实现的,添加和删除DOM元素本质就是【对数组进行添加、删除】,那么利用【数组.push( )】或【数组.splice( )】就能实现了

记住了数组添加用push(),删除用solice(),用ref的变量记得带上【变量.value】形式再用这两个函数

当然前面我说了:key可以设置为index,但是这是针对不报错的做法,index毕竟是一个会变得变量;那么假设我的需求是当我进行增删操作的时候,始终是选中一个元素,比如下面这个例子:我想在选中一个元素之后,不管我删了哪几个元素,√都一直选中刚刚我选的那个元素

这样的话,假若我选了index为1的元素(也就是第2个),当我删了index为0的元素(第1个),那么刚刚index为1得元素就会到第一位,index变为0

但是因为刚刚我传的index是1,:key="index"认为被选中打√的元素是index为1的,所以此时“√”会跑到刚刚被打“√”的下一位,说得可能你们都懵逼了,看一下例子

只有这样绑定了自定义每个元素的id,这样才是对的

5、最后最简单的v指令:v-model数据双向流通

在【表单元素】加入之后,表单元素更改、输入这些操作,都能把表单元素的【值】给到vue,而同时vue里对数据的更改也能传给表单元素,实在没什么好细说的,不会的真要去学一下vue再来看uniapp

五、一些API函数、属性

1、computed计算属性

在Vue脚手架开发里应该学过computed计算属性,可以去我这篇文章看一下:Vue全家桶:vue2+vue3全部搞懂:第四篇,Vue的计算属性,高效执行运算-CSDN博客,不过这是针对vue2版本语法的解释

这里再讲一次,针对vue3版本,下面有几点要注意:

第一、computed计算属性是一个属性!所以要在HTML的{{ }}绑定的时候直接用computed计算属性的变量名,不用像函数那样带( )

第二、computed计算属性里是一个函数,这个函数就是return回一个计算结果,以作为这个计算属性的值。(用ref的变量计算的时候,别忘了写.value

第三、跟vue2不一样的是,vue3语法里必须要import { computed } from "vue"才能用

当然用函数方法也可以实现它的功能(函数别忘了带( ))

那么普通函数和computed计算属性有什么区别?

computed只会执行一次,他会把值加载好保留,下次用的时候直接给结果,而不是再次执行运算

普通方法函数则是你调用几次,他就执行几次函数运算

简单结合案例巩固一下理解

例子:几个商品复选框,选中谁就依次累加商品的价格

这里注意一个点:checkbox必须设置value值,不然的话获取不到对应的数据值

而且value必须是String字符串类型

修改后

然后接下来把@change事件绑定的函数里,把获取到checkbox的事件对象的value给到一个空数组里

然后通过计算属性获得数组长度,就完成了统计个数的这一步

(或者简单点直接在{{ 写selectGroup.length }}就行)

接下来给每个对象数据多添加一个属性,来标记这个checkbox复选框有没有被选中

然后这里的逻辑是在@change事件的函数里遍历整个原数组

然后判断在被选中的checkbox复选框中有没有当前这个成员(例子里的selectGroup.value就是指已经被选中的checkbox复选框的value组成的一个数组),通过includes( )函数判断有就true,没有就false;

然后就能让每一个成员的checked这个“标记属性”的值去等于判断的结果,也就是标记每个成员当前是被选中了还是没被选中

如果没懂给这些函数的可以去看我这一篇:JS的一些方便遍历数组的API函数-CSDN博客

最后根据被选中的来计算商品价格总数:

展开来是这样:

也就是通过filter( )函数过滤了原数组里没有被选中的checkbox的值,然后装到一个新数组,在对这个数组使用reduce( )函数统计总数,最后通过computed计算属性给到HTML

2、watch监听函数

这个我也在Vue脚手架项目开发里讲过:Vue全家桶:vue2+vue3全部搞懂:第五篇,Vue的watch监视器_vue2 监视器-CSDN博客,这是针对vue2版本的写法

可以去看看,这里借用一下我那篇文章的截图:

他就是监听一个元素的变化,有点像在表单元素的v-model,但是它是具体针对某一个变量、一个元素的变化的监听

现在讲一下针对vue3版本的用法:

watch( )对一个普通元素的监听:watch(参数1,参数2),参数1就是要监听的元素变量名,参数二是一个回调函数

这个参数2回调函数有两种形式:

1、回调函数(参数1,参数2)

这样的话会自动获取【这次改变的值】和【上一次的值】,参数1就是【这一次改变了的值】,参数2反之

2、回调函数(参数)

一个参数就是自动获取实时更新的值(上一个写法了解就行,没人用)

watch( )对对象的内部值变化的监听:

当我们对一个对象的内部值监听的时候,是不能直接把第一个参数写成【对象.属性】的

第一种方法:第一个参数写成回调函数,return【对象.value.属性】

第二种方法:开启深度监听!多加一个第三个参数,第三个参数是:{ deep:true }

这第三个对象参数就是一个用了加配置项的参数

那么watch不会立即自动监听,只有元素发生改变了才会监听;

如果想要一进页面就自动监听,在第三个参数里再加一个配置项:{ immediate: true }

当然还有一个了解一下,用的不多:watchEffect( )

它可以直接监听所有元素的变化

六、Vue3的生命周期和八大钩子函数

我之前的某篇文章里讲过vue2的生命周期和八大钩子函数,不了解的可以去看一下回顾:

Vue全家桶:vue2+vue3全部搞懂:第六篇,了解Vue生命周期,如何一进页面就马上发送请求、渲染页面-CSDN博客

这里简单带大伙过一遍生命周期

那么根据vue3的官方文档给出的生命周期以及各个时期的钩子函数,如下图所示:

可以注意到最开始的有一个setup函数,然后我们vue3的语法里也要在<script>里加上一个setup,这是vue3里比原来vue2里的beforeCreate更早的一个生命周期函数,当然vue3也删掉了【beforeCreate】和【created】,那么【setup】也就相当于代替了它两

然后vue官方文档:组合式 API:生命周期钩子 | Vue.js讲了vue3的具体几大生命周期函数

不过注意!!在uniapp种有一些是不支持的,所以不用全记,比如:在uniapp组件中,onBeforeUpdate、onUpdated、onActivated、onDeactivated,H5支持,小程序无法使用。

那么vue2和vue3有啥区别?盗用一下咸虾米博主的文章,看一下vue2和vue3生命周期钩子函数的区别:

那么看一下uniapp里一些常用的生命钩子的例子

用法统一:import { 生命周期钩子函数 } from "vue",然后再用

onMounted

DOM元素挂载阶段生命钩子函数,有他才可在vue里获取DOM元素

比如下面,没onMounted的时候,获取失效

有onMounted获取成功

onUnmounted

DOM元素被销毁阶段

比如下面例子,某个自定义组件里设置被销毁的时候提示“子组件被销毁了”,然后在父组件里设置一个定时器,多短时间销毁它

七、页面生命周期

前面讲的主要都是组件的生命周期,那么页面也有生命周期

uniapp页面生命周期函数与 Vue.js 的生命周期函数有所不同,因为 uni-app 是基于 Vue.js 的跨平台应用框架,因此它具有自己特定的生命周期函数。
可以在这些生命周期函数中编写相应的逻辑代码,以便在不同阶段对页面进行初始化、展示、隐藏和卸载时执行特定的操作。

那么页面有哪些生命周期钩子函数?

其他常用的生命周期,可以看官方发文档,页面生命周期函数

页面生命周期钩子函数的用法:

页面生命周期钩子函数是不能直接像vue2的选项式API一样,vue2可以直接使用onLoad、onShow等,而uniapp的vue3中需要先从“@dcloudio/uni-app”模块中导入才可以。

比如

那也不能像组件的钩子函数一样,直接一个import { } from "vur"就能用的

而是【import { 页面钩子函数 } from "@dcloudio/uni-app"】

onLoad

页面一进来就发生执行的钩子函数,其实它是属于setup阶段的

例子:

(这是首页面,点击navigator跳转到另一个页面,并给这个页面发送参数)

跳转到这个页面后,页面接收到参数,马上立即自动输出

onReady

当页面DOM元素加载完毕、资源请求加载准备完毕后就执行

跟组件生命周期的钩子函数onMounted差不多一个意思

onShow

跟onLoad差不多,它夹在onLoad和onReady之间

那么它跟onLoad最大的区别就在于

onLoad是页面加载时立刻执行,但是只要页面没被销毁,onLoad就永远只执行一次

(页面被销毁简单理解就是完全关掉,或者再次从别的页面跳转回来;如果你从这个页面跳转到另一个页面,然后点击返回又回去了,这个页面就没有被销毁)

而onShow是只要页面没销毁,一到页面就执行一次

onHide

页面一离开就触发执行

有啥用?比如视频播放的时候,有消息弹出,那你点击消息啥的离开了页面,视频就停止,等你一返回又继续自动播放......等等

补充一下:

App.vue还有全局的配置,这三个作用全局的生命钩子函数优先级更高

onUnLoad

页面完全卸载了,叉掉了,或者你那个navigator设置的open-type是relaunch(也就是跳转过后返回不了了),那么就会执行

onPageScroll页面滚动钩子函数

页面滚动就自动触发

案例:往下拉出现一个盒子,往上拉消失

或者

八、最后讲一下生命周期的钩子函数执行的顺序

不包含组件的页面

onLoad > onShow > onReady

包含组件的页面

onLoad > onShow > onBeforeMount > onReady > onMounted

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中间件 | RPC - [Dubbo]

INDEX 1 Dubbo 与 web 容器的关系2 注册发现流程3 服务配置3.1 注册方式 & 订阅方式3.2 服务导出3.3 配置参数 4 底层技术4.1 Dubbo 的 spi 机制4.2 Dubbo 的线程池4.3 Dubbo 的负载均衡策略4.3 Dubbo 的协议 1 Dubbo 与 web 容器的关系 dubbo 本质上是一个 RPC 框架&…

计算机二级Python题目13

目录 1. 基本题 1.1 基本题1 1.2 基本题2 1.3 基本题3 2. turtle画图 3. 大题 3.1 大题1 3.2 大题2 1. 基本题 1.1 基本题1 lseval(input()) s"" for item in ls:if type(item)type("香山"):s item print(s) 1.2 基本题2 import random random.se…

使用tui-image-editor 图片编辑 标注图片

需求背景&#xff1a; 鼠标悬浮在图片上 出现编辑按钮 点击编辑 对该图片进行编辑&#xff08;输入文案、涂鸦、标记、裁剪等&#xff09; 可以体验一下它线上编辑器 Image-editor | TOAST UI :: Make Your Web Delicious! 使用 首先在你的前端项目中安装&#xff1a; np…

python-在图片上标实心圆点

代码&#xff1a; from PIL import Image, ImageDraw# 打开图像 image_path path_to_your_image.jpg image Image.open(image_path)# 创建一个可以在上面绘图的对象 draw ImageDraw.Draw(image)# 设置圆点的坐标和颜色 x 100 # 圆点的x坐标 y 100 # 圆点的y坐标 color …

【JVM】GCRoot

GC root原理 通过对枚举GCroot对象做引用可达性分析&#xff0c;即从GC root对象开始&#xff0c;向下搜索&#xff0c;形成的路径称之为 引用链。如果一个对象到GC roots对象没有任何引用&#xff0c;没有形成引用链&#xff0c;那么该对象等待GC回收。 可以作为GC Roots的对…

Vue命令式组件的编写与应用

目录 1.引言 2.传统的组件 3.命令式组件 4.命令式组件的应用场景 1.引言 大家好&#xff01;今天我们来聊聊Vue.js中的一个有趣话题——命令式组件。你有没有觉得&#xff0c;有时候我们在Vue模板里写组件&#xff0c;就像是在玩搭积木&#xff0c;每个积木都有固定的形状…

第二百零六回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题的结果"相关的内容&#xff0c;本章回中将介绍自定义标题栏.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我…

set与zset数据类型

set类型基础 redis集合(set)类型和list列表类型类似&#xff0c;都可以用来存储多个字符串元素的 集合。但是和list不同的是set集合当中不允许重复的元素。而且set集合当中元素是没有顺序的&#xff0c;不存在元素下标。 redis的set类型是使用哈希表构造的&#xff0c;因此复…

Java面向对象案例之描述专业和学生(4)

类的方法图 学生类&#xff1a; 属性&#xff1a;学号&#xff0c;姓名&#xff0c;年龄&#xff0c;所学习的专业方法&#xff1a;学习的方法&#xff0c;描述学习状态。描述内容包括姓名、学号、年龄、所学习的专业信息 专业类&#xff1a; 属性&#xff1a;专业编号&#xf…

阅读 - 二维码扫码登录原理

在日常生活中&#xff0c;二维码出现在很多场景&#xff0c;比如超市支付、系统登录、应用下载等等。了解二维码的原理&#xff0c;可以为技术人员在技术选型时提供新的思路。对于非技术人员呢&#xff0c;除了解惑&#xff0c;还可以引导他更好地辨别生活中遇到的各种二维码&a…

线性回归 quickstart

构建一元一次方程 100个&#xff08;X, y &#xff09;&#xff0c;大概是’y3x4’ import numpy as npnp.random.seed(42) # to make this code example reproducible m 100 # number of instances X 2 * np.random.rand(m, 1) # column vector y 4 3 * X np.random…

深度揭秘HW中的灰色技术(盗号,个人实时定位,远程监听)

xss漏洞&#xff1a;是数量最多的漏洞 cross-site scripting 跨站脚本攻击 1.反射型xss&#xff1a;代码存在于网址中&#xff0c;将存在恶意代码的链接发给用户&#xff0c;点击后才能攻击成功实施。 2.存储型xss&#xff1a;指Web应用程序会将用户输入的数据信息保持在服务…

2024批量下载微博内容导出excel,数据包含微博链接,内容,点赞数,转发数,评论数,话题等

以歌手李健这个号为例&#xff0c;共抓取727条微博&#xff0c;导出的excel微博数据包含微博链接,微博正文,原始图片链接,被转发微博原始图片链接,是否为原创微博,微博视频链接,发布位置,发布时间,发布工具,点赞数,转发数,评论数,话题等。 第一条微博发布于2010年5月31 。 再根…

电机参数辨识算法(2)——基于高频注入的磁链辨识策略

电机参数辨识算法&#xff08;1&#xff09;——基于高频注入的电感辨识策略-CSDN博客https://blog.csdn.net/m0_46903653/article/details/136722750?spm1001.2014.3001.5501上一期已经讲过了电感辨识方法。 今天这是参数辨识的第二期&#xff0c;今天来简单看看磁链的辨识。…

(六)Android布局类型(表格布局TableLayout)

表格布局&#xff08;TableLayout&#xff09;&#xff0c;呈现行列方式&#xff0c;无法设置列&#xff0c;可以设置行&#xff0c;行数由TableRow对象个数决定。下图中有两个TableRow元素&#xff0c;所以&#xff0c;说明表格布局中有两行。 将内容填充到行中 第一行中&…

【ollama】(7):使用Nvidia Jetson Nano设备,成功运行ollama,运行qwen:0.5b-chat,速度还可以,可以做创新项目了

1&#xff0c;视频地址 https://www.bilibili.com/video/BV1Pj421o7W5/ 【ollama】&#xff08;7&#xff09;&#xff1a;使用Nvidia Jetson Nano设备&#xff0c;成功运行ollama&#xff0c;运行qwen:0.5b-chat&#xff0c;速度还可以&#xff0c;可以做创新项目了 2&#x…

【NC223888】红色和紫色

题目 红色和紫色 博弈论&#xff0c;想得出来思路就简单&#xff0c;想不出来就难。一般使用猜测法。 思路 如果小红随意取一个格子涂色&#xff0c;那么小紫怎么涂色才是她的最优选择呢&#xff1f; 假设小紫只能选择小红涂色的格子的相邻格子或者是最近斜对角的一个格子涂色…

浅易理解:卷积神经网络(CNN)

浅易理解卷积神经网络流程 本文的目录&#xff1a; 1 什么卷积神经网络 2 输入层 3 卷积层 4 池化层 5 全连接层 传统的多层神经网络只有 输入层、隐藏层、输出层 卷积神经网络&#xff08;CNN)&#xff1a; 在多层神经网络的基础上&#xff0c;加入了更加有效的特征学习部分…

JavaScript 基础知识

一、初识 JavaScript 1、JS 初体验 JS 有3种书写位置&#xff0c;分别为行内、内部和外部。 示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"wid…

CASA模型在陆地生态系统碳循环研究中的应用探讨

植被&#xff0c;作为陆地生态系统的重要基石&#xff0c;对维护生态环境功能具有不可替代的作用。其中&#xff0c;植被净初级生产力&#xff08;NPP&#xff09;是衡量植被生态系统健康与功能的关键指标。它反映了单位面积上绿色植被通过光合作用生产的有机质总量在扣除自养呼…