JavaScript-4

JS事件监听:从基础原理到高级实践 事件监听是前端开发实现交互功能的核心机制,基于观察者模式实现浏览器与用户的动态交互。其工作原理涉及事件流三个阶段(捕获、目标、冒泡)和事件对象关键属性(target/currentTarget),理解这些基础概念是掌握事件委托等高级模式的前提。在实际工程中,合理使用事件委托能显著提升动态内容性能,而正确区分preventDefault与stopPropagation则能避免常见交互问题。结合防抖节流技术可优化scroll/resize等高频事件处理,同时需要注意单页应用中的内存管理。这些技术在Vue/Rea 阅读详情

事件监听

  • 什么是事件:
在编程时系统内发生的动作或者发生的事情。比如:用户在网页上单击一个按钮
  • 什么是事件监听:
让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应
也称为"绑定事件或者注册事件"	(比如:点击按钮可以切换图片)
  • 事件监听三要素
事件源:某个DOM元素触发了事件
事件类型:用什么方式触发(比如:鼠标单击click、鼠标经过mouseover等)
事件调用的函数:要做什么事情
  • 语法:
元素对象.addEventListener('事件类型', 要执行的函数)
  • 演示
<body>
    <button>点击</button>

    <script>
        const btn = document.querySelector('button')
        btn.addEventListener('click', function () {
            alert('Hello World')
        })
    </script>
</body>

两种注册事件的区别

传统 on 注册

  • 同一个对象,后面注册的事件会覆盖前面注册(同一个事件)
  • 直接使用 null 覆盖就可以实现事件的解绑
  • 都是冒泡阶段执行的

事件监听注册

  • 后面注册的事情不会覆盖到前面注册的事件
  • 可以通过第三个参数去确定是在冒泡或者捕获阶段执行
  • 必须使用 removeEventListener(事件类型,事件处理函数,获取捕获或者冒泡阶段) 进行事件的解绑操作
  • 匿名函数无法被解绑

事件类型

鼠标事件

click鼠标点击
mouseenter鼠标进入
mouseleave鼠标离开

焦点事件

focus获得焦点
blur失去焦点

键盘事件

keydown键盘按下触发
keyup键盘抬起触发

文本事件

input用户输入事件

具体演示

  • 鼠标事件
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
</head>

<body>
    <div></div>

    <script>
        const div = document.querySelector('div')
        div.addEventListener('mouseenter', function () {
            div.style.backgroundColor = 'green'
        })
        div.addEventListener('mouseleave', function () {
            div.style.backgroundColor = 'red'
        })
    </script>
</body>
  • 焦点事件
<body>
    <span>请输入</span>
    <input type="text">

    <script>
        const span = document.querySelector('span')
        const input = document.querySelector('input')

        input.addEventListener('focus', function () {
            span.style.color = 'red'
            span.innerText = '输入中'
        })

        input.addEventListener('blur', function () {
            span.style.color = 'green'
            span.innerText = '已完成'
        })
    </script>
</body>
  • 键盘事件
    <div>
        键盘当前状态:
        <span>弹起</span>
    </div>
    <input type="text">

    <script>
        const span = document.querySelector('span')
        const input = document.querySelector('input')

        input.addEventListener('keydown', function () {
            span.style.color = 'red'
            span.innerText = '按下'
        })

        input.addEventListener('keyup', function () {
            span.style.color = 'green'
            span.innerText = '弹起'
        })
    </script>
  • 文本事件
<body>
    <input type="text">
    <div>
        当前输入: <span></span>
    </div>

    <script>
        const input = document.querySelector('input')
        const span = document.querySelector('span')

        input.addEventListener('input', function () {
            span.style.color = 'red'
            span.innerHTML = input.value
        })
    </script>
</body>

事件对象

基本概念

事件对象是什么?
	它是一个对象,这个对象里有事情触发时的相关信息
	例如:鼠标点击事件中,事件对象就存了鼠标点在哪个位置的信息

使用场景:
	可以判断用户按下了哪个键,比如:按下回车键可以发布新闻
	可以判断鼠标点击了哪个元素,从而做出相应操作

事件对象在哪里?
	事件绑定的回调函数的第一个参数

具体演示

<body>
    <input type="text">

    <script>
        const input = document.querySelector('input')
        input.addEventListener('keyup', function (event) {
            if (event.key === 'Enter') {
                console.log('成功按下了回车键')
            }
        })
    </script>
</body>

环境对象

环境对象,指的是函数内部特殊的变量 this,它代表着当前函数运行时所处的环境
(粗略判断规则:谁调用,this 就是谁)
<body>
    <button>点击</button>

    <script>
        const btn = document.querySelector('button')
        btn.addEventListener('click', function () {
            this.style.color = 'red'    // 等效于 btn.style.color = 'red'
        })
    </script>
</body>

回调函数

概念:如果将函数A做为参数,传递给函数B,我们称函数A为回调函数

事件流

基本概念

  • 事件流:指的是事件完整执行过程中的流动路径
  • 捕获阶段:Document =》Element html =》Element body =》Element div
  • 冒泡阶段:Element div =》Element body =》Element html =》Document
语法:
	元素.addEventListener(事件类型, 事件处理函数, 是否使用捕获机制)

注意:
	addEventListener第三个参数传入true:代表是捕获阶段(很少使用)
	addEventListener第三个参数传入false或者不写:代表是冒泡阶段

捕获

<body>
    <div class="father">
        <div class="son">
            点我
        </div>
    </div>

    <script>
        const father = document.querySelector('.father')
        const son = document.querySelector('.son')

        document.addEventListener('click', function () {
            alert('I am grandfather')
        }, true)

        father.addEventListener('click', function () {
            alert('I am father')
        }, true)

        son.addEventListener('click', function () {
            alert('I am son')
        }, true)
    </script>
</body>
当鼠标点击"点我"时候,弹出框弹出的先后顺序是:
    I am grandfather
    I am father
    I am son

冒泡

<body>
    <div class="father">
        <div class="son">
            点我
        </div>
    </div>

    <script>
        const father = document.querySelector('.father')
        const son = document.querySelector('.son')

        document.addEventListener('click', function () {
            alert('I am grandfather')
        }, false)

        father.addEventListener('click', function () {
            alert('I am father')
        }, false)

        son.addEventListener('click', function () {
            alert('I am son')
        }, false)
    </script>
</body>
当鼠标点击"点我"时候,弹出框弹出的先后顺序是:
	I am son
	I am father
    I am grandfather

阻止冒泡

问题:
	因为默认就有冒泡模式的存在,所以容易导致事情影响到父级元素

需求:
	若想把事情就限制在当前元素内,就需要阻止事件冒泡

语法:
	事件对象.stopPropagation()

注意:
	此方法可以阻断事件流动传播,不光在冒泡阶段有效,捕获阶段也有效
<body>
    <div class="father">
        <div class="son">
            点我
        </div>
    </div>

    <script>
        const father = document.querySelector('.father')
        const son = document.querySelector('.son')

        document.addEventListener('click', function () {
            alert('I am grandfather')
        }, false)

        father.addEventListener('click', function () {
            alert('I am father')
        }, false)

        son.addEventListener('click', function (event) {
            alert('I am son')
            
            // 阻止事件冒泡
            event.stopPropagation()
            
        }, false)
    </script>
</body>

事件解绑

  • 解绑方式一
<body>
    <button>确认</button>

    <script>
        const btn = document.querySelector('button')
        btn.onclick = function () {
            alert('用户点击了确认')
            btn.onclick = null  // 解绑操作
        }
    </script>
</body>
  • 解绑方式二(常见)
<body>
    <button>确认</button>

    <script>
        const btn = document.querySelector('button')
        
        // 匿名函数无法解绑
        function judge() {
            alert('用户点击了确认')
        }
        btn.addEventListener('click', judge)
        btn.removeEventListener('click', judge)
    </script>
</body>

事件委托

基本理解

情景带入

需求:
	要求点击某个li,那个li就变成红色。	
	
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    
解决办法:
	方式一:给每个li都添加一个事件(太麻烦)
	方式二:使用事件委托,将事件委托给ul进行处理

事件委托的优点:减少注册事件的次数,可以提供程序性能

事件委托的原理:利用事件冒泡的特点(给父元素注册事件,当我们触发子元素的时候,会冒泡到父元素身上,从而触发父元素的事件)

具体演示

<body>
    <ul>
        <li>li-1</li>
        <li>li-2</li>
        <li>li-3</li>
        <li>li-4</li>
        <li>li-5</li>
        <p>我是p标签</p>
    </ul>

    <script>
        // 需求:点击小li,当前li文字变红色,点击其他标签不变色

        const ul = document.querySelector('ul')
        ul.addEventListener('click', function (event) {
            if (event.target.tagName === 'LI') {
                event.target.style.color = 'red'    // 找到点击所触发的元素:event.target
            }
        })
    </script>
</body>

阻止默认行为

<body>
    <form action="https://www.baidu.com">
        <input type="submit" value="免费注册">
    </form>
    
    <script>
        const form = document.querySelector('form')
        form.addEventListener('submit', function (event) {
            // 阻止默认行为,此处的默认行为是"提交"
            event.preventDefault()
        })
    </script>
</body>
<body>
    <a href="">点击跳转</a>
    
    <script>
        const a = document.querySelector('a')
        a.addEventListener('click', function (event) {
            // 阻止默认行为,此处的默认行为是"跳转"
            event.preventDefault()
        })
    </script>
</body>

其他事件

页面加载事件

  • 基本认识
作用:
	可以控制:先加载外部资源(如:图片、CSS、JS等)加载完毕时触发的事件

意义:
	1.有些时候,我们需要等页面所有资源全部加载完了,再做一些事情
	2.一些老项目的代码,往往把 script 写在 head 中
  • 监听整个页面资源是否加载完成
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 等待页面所有资源加载完毕,才会去执行回调函数
        window.addEventListener('load', function () {
            // ......
            // 请在此处写当前这个回调函数具体要实现的功能
            // ......
        })
    </script>
</head>
  • 注意:load 不仅可以监听整个页面资源加载完成,也可以针对某个资源绑定 load 事件
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 等待图片加载完毕,才会去执行回调函数
        img.addEventListener('load', function () {
            //......
        })
    </script>
</head>
  • 当初始的 HTML 文档被完全加载和解析完成后,DOMContentLoaded 事件被触发,而无需等待CSS样式表、图像等完全加载(此方法更快加载事件)
// 监听页面 DOM 加载完毕
        document.addEventListener('DOMContentLoaded', function () {
			// ......
        })

页面滚动事件

基本认识

含义:
	滚动条在滚动的时候持续触发的事件

意义:
	很多网页需要检测用户把页面滚动到某个区域后做一些处理,比如固定导航栏、返回顶部

监听滚动

  • 监听页面滚动
<body>
    <div style="height: 2000px;"></div>
    
    <script>
        // 页面滚动事件
        window.addEventListener('scroll', function () {
            console.log('我滚动了');
        })
    </script>
</body>
  • 监听某个元素内部的滚动
<body>
    <div style="width: 50px; height: 150px; overflow: scroll;">
        哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
    </div>

    <script>
    	// 监听div元素内部的滚动
        const div = document.querySelector('div')
        div.addEventListener('scroll', function () {
            console.log('我滚动了');
        })
    </script>
</body>

获取位置

  • 基本认识
属性:
	scrollLeft 和 scrollTop

作用:
    获取元素内容往左、往上滚动出去的距离

注意:
	1.此属性既可以读取当前距离,也可以给它进行距离的赋值!
	2.本文只通过两个"向上滚动的距离"进行演示
  • 演示一:输出 div 元素向上滚动的距离
<body>
    <div style="width: 50px; height: 150px; overflow: scroll;">
        哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
    </div>

    <script>
        const div = document.querySelector('div')
        
        // 输出: div元素向上滚动的距离
        div.addEventListener('scroll', function () {
            console.log(div.scrollTop);
        })
    </script>
</body>
  • 演示二:输出窗口向上滚动的距离
<body>
    <div style="height: 2000px;"></div>

    <script>
        // 补充知识:获取html元素对象的写法是 document.documentElement

        // 输出: 窗口向上滚动距离
        window.addEventListener('scroll', function(){
            console.log(document.documentElement.scrollTop);
        })

    </script>
</body>
  • 扩展
跳转到窗口的某个滚动距离:
	
	方法一:利用 scrollTop 的可赋值性,document.documentElement.scrollTop = 100px
	
	方法二:windows.scrollTO(x, y)

页面尺寸事件

  • 尺寸改变,触发事件
<body>

    <script>
    	// 窗口尺寸改变的时候,触发事件
        window.addEventListener('resize', function () {
            console.log("窗口尺寸改变了!");
        })
    </script>
</body>
  • 获取元素宽高
注意:
	通过获取元素的可见部分宽高,不包含边框,margin,滚动条

属性:
	clientWidth 和 clientHeight
<body>
    <div style="display: inline-block;">
        随着内容的变化,span标签的宽度也随之变化
    </div>

    <script>
        const div = document.querySelector('div')
        console.log(div.clientWidth);
    </script>
</body>

元素的尺寸与位置

获取宽高

介绍:
	1.获取元素的自身宽高、包含元素自身设置的宽高、padding、border
	2.获取出来的是数值,方便计算

属性:
	offsetWidth 和 offsetHeight

注意:
	获取的是可视宽高,如果盒子是隐藏的,获取的结果是0
<body>
    <div style="width: 100px;height: 100px; background-color: pink; margin: 100px auto;"></div>
    <script>
        const div = document.querySelector('div')
        console.log(div.offsetWidth);
        console.log(div.offsetHeight);
    </script>
</body>

获取位置

介绍:
	获取元素距离自己"有定位的"父级元素的左、上距离

属性:
	offsetLeft 和 offsetTop

注意:
	这两个属性是只读属性,不能赋值。
<body>
    <div style="width: 100px;height: 100px; background-color: pink; margin: 100px auto;"></div>
    
    <script>
        const div = document.querySelector('div')
        // div 与它"有定位"的父级的距离
        console.log(div.offsetTop);
        console.log(div.offsetLeft);
    </script>
</body>

速查(属性总结)

属性作用说明
scrollLeft 和 scrollTop被卷去的头部和左侧配合页面滚动使用(可读写)
clientWidth 和 clientHeight获得元素宽度和高度不包含border、margin、滚动条,用于js获取元素大小(只读属性)
offsetWidth 和 offsetHeight获取元素宽度和高度包含border、padding,滚动条等(只读属性)
offsetLeft 和 offsetTop获取元素距离自己定位父级元素的左、上距离在获取元素定位的时候使用(只读属性)
Proj4js: Web地图坐标转换的JavaScript库 Proj4js库是一个广泛使用的JavaScript库,它支持多种坐标参考系统之间的相互转换。它通过实现专业的地图投影和坐标转换算法,使得Web应用程序能够处理不同来源的数据,例如地图、遥感图像等。这些功能对于地理信息系统(GIS)开发者来说至关重要,因为它使得在不同的地图框架间共享和处理地理空间数据成为可能。除了基本的坐标转换,Proj4js还支持正向和反向投影,这使得开发者可以根据需要将坐标从地理坐标转换到投影坐标,或者反过来。 阅读详情

相关推荐

JS 事件绑定、事件监听、事件委托详细介绍

主要介绍了JS 事件绑定、事件监听、事件委托详细介绍的相关资料,需要的朋友可以参考下

深入理解事件发布监听机制

什么是事件发布监听 在软件程序开发过程中,经常会遇到“事件处理模型”:调用端发送一个事件,然后相应的事件处理程序处理这个事件。最常见的就数桌面应用软件了,在这些应用程序中,当你鼠标点击了一个按钮或者键盘输入一个快捷键时,应用程序就会做出响应,来处理你的点击和键盘输入等行为。 除了这些比较直观的桌面级应用程序外,事件驱动的设计模型还经常使用在程序设计中,它可以将事件发送和事件处理逻辑进行解耦,可以针对不同的事件定义对应的事件处理程序,增加了程序的扩展性,这种设计模式又被称为观察者模式。 在事件监听处理的过程中

weixin_45701550的博客 1632

js事件监听机制(事件捕获)总结

添加事件的js方法也很多,有直接加到页面结构上的,有使用一些js事件监听的方法,由于各个浏览器对事件冒泡事件监听的机制不同

【Android学习笔记】事件监听机制详解

android第一次启动,主线程负责activityUI界面的线程,而且只允许UI线程对主界面进行修改,其他新启动的线程无法对主界面进行直接修改,需要使用Handler进行消息传递。UI线程一般专门用来相应用户的界面操作,而其他的逻辑运算和处理都交给其他线程处理主要目的是防止UI线程被阻塞而让用户以为界面卡顿。此时如果UI线程与其他线程的交互方式,就是Handler消息传递机制,同事件监听机制的逻辑十分相似。好像是原来的事件处理机制变成了消息处理机制,通过监听消息,处理消息完成一系列动作,同事件处理一样。

实力派,无需多言! 1929

快速上手springboot+vue的前后端分离项目

使用webStorm新建项目后,把 .lock文件删除后项目运行才不报错,配置文件 vue.config.js 中加入 lintOnSave: false 关闭eslint语法检测。在多层嵌套的父子组件之间传递状态已经十分麻烦,而Vue更是没有为兄弟组件提供直接共享数据的办法。基于这个问题,许多框架提供了解决方案——使用全局的状态管理器,将所有分散的共享数据交由状态管理器保管,Vue也不例外。其中一种解决CORS 的方法, 在springboot项目中跨域的方法或类加上@CrossOrigin注解。

m0_61950264的博客 1904

contextcapture多区块点云_多源点云数据融合的建筑物精细化建模

本文内容来源于《测绘通报》2020年第8期,审图号:GS(2020)3611号多源点云数据融合的建筑物精细化建模王树臻1, 郑国强1, 王光生1, 胡玉民2, 张德怀2, 亓伟3 ...

weixin_36301639的博客 1825

Springboot事件监听机制:工作原理

这是继《springboot事件监听机制一:实战应用》第二篇,知其然,当然还要知其所以然,深入的源码里面探寻一下这一有套机制的工作原理。spring生态很茂盛,这里不会站太高去分析这个问题,大扯spring的一些原理,而是以一个求知者的心态去探索spring监听机制的秘密,可能我分析得并不透彻,但我想如果能给看到这篇文章的你带去一些灵感或者触动也是好的。罗马不是一天就能建立起来的,想要弄懂它也非一天的事,多想多看总会明白的。另外看源码的时候,一定是带着问题去探寻,时刻把握好问题的核心,切忌被旁枝末节打扰而迷

凡夫编程 2575

HDRP shader 获取阴影(Custom Pass)

Unity:2021.3.0f1 HDRP:12.1.6

LanQ的博客 2097

细谈Spring的事件监听机制

本文主要从思想和源码的角度细谈Spring的监听机制

ITlikeyou的博客 2267

从零开始学Agent的搭建——多角色项目需求分析框架实战

场景一:电商促销需求——技术细节顾此失彼团队用单Agent分析一个"双11秒杀系统"的需求。Agent输出了完整的功能清单,但当我们拿着这份方案找架构师评审时,发现了致命问题:Agent完全没有考虑库存扣减的并发一致性、Redis与MySQL之间的数据同步延迟、以及超卖风险的控制策略。原因是单Agent在处理"业务理解"任务时,已经耗尽了它的"注意力预算",技术深度分析几乎为空。场景二:ERP集成需求——跨系统边界模糊。

软件行业技术文化交流。 534

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

Robot_PLC_HMI_Automation 1万+

JavaScript利器分享之Proj4js

项目开发中,经常会有小伙伴们被火星坐标、CGCS2000、WGS84等诸多坐标系搞得晕头转向。当我们碰上不同坐标系叠加这样的需求时,我们的眼神可能是这似的 今天给大家分享一个JS利器——Proj4js。官方介绍:Proj4js is a JavaScript li...

baidu_23263735的博客 1427

DDS协议--[第一章][概述]

Data Distribute Service,数据分发服务:数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。DDS集成系统中的各个组件,提供低延迟数据连接、高可靠性以及高可扩展体系结构,以适应商业级物联网(IoT)应用程序的需求。

qq_41816308的博客 1152

如何快速掌握MP4Box.js:JavaScript MP4文件处理的终极指南

MP4Box.js是一款强大的JavaScript库,专为在浏览器和Node.js环境中处理MP4文件而设计。它支持渐进式解析,灵感源自GPAC项目的MP4Box工具,可轻松实现MP4文件信息获取、媒体分段处理及文本轨道创建等核心功能。 ## ???? 核心功能一览 ### 浏览器与Node.js双环境支持 - **前端应用**:通过Media Source Extensions (MSE) AP...

gitblog_00667的博客 887

SAPFiori Elements Analytical List Page 概述

ALP(Analytical List Page)是SAP Fiori提供的一种复合页面类型,结合了分析(图表/KPI)与事务(表格/操作)功能,适用于需要分析后立即执行处理的业务场景(如采购价格监控、销售逾期处理等)。其核心价值在于让用户在同一页面完成从数据洞察到事务处理的闭环,减少应用切换带来的效率损耗。 页面结构包含页头KPI标签、交互式图表和明细表格,通过联动过滤、选择同步等机制实现数据钻取与即时操作。支持标准过滤和可视化过滤,并依赖OData注解(SelectionVariant/Presenta

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 268

100 道大数据开发技术原理与实战面试宝典(必过答案详细解析)I

在数字化浪潮席卷全球的今天,大数据开发工程师已成为企业数字化转型的核心力量。无论是互联网巨头的用户行为分析,还是金融机构的风险控制,亦或是智慧城市的数据中枢,都离不开大数据技术的支撑。然而,面对BAT等头部企业严格的面试要求,候选人不仅需要掌握扎实的理论基础,更需具备将技术落地的实战能力。本文基于历年高频面试题与企业真实场景需求,梳理100道必考题目,涵盖基础概念、框架原理、算法设计、性能优化等核心领域,助你构建完整的知识体系,从容应对面试挑战。

AI天才研究院 1386

log4javascript

1.1.快速入门 所周知 log4j的日志系统很好用 但是那是java的 于是有人推出了js的日志系统 log4javascript 使用起来也相当的简单,下载地址 https://sourceforge.net/projects/log4javascript/files/latest/download 引入js文件 &lt;script type="text/j...

litong131219的博客 1838

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

如何快速上手MP4Box.js:3步完成JavaScript MP4处理库配置

MP4Box.js是一个基于JavaScript的MP4文件处理库,能够在浏览器和Node.js环境中进行渐进式解析。该库灵感来源于GPAC项目的MP4Box工具,专门用于MP4文件信息获取、分段处理以及样本提取等操作,为Web媒体开发提供了强大的底层支持。 ## 📦 环境准备:必备工具检查清单 在开始使用MP4Box.js之前,请确保您的开发环境中已经安装了以下核心工具: - Node.

gitblog_00767的博客 1087

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

faunadb-js完全指南:从安装到实战的FaunaDB v4 JavaScript驱动教程

faunadb-js是FaunaDB v4的官方JavaScript驱动,为开发者提供了在JavaScript环境中与FaunaDB数据库交互的便捷方式。本教程将带您从安装到实战,全面掌握faunadb-js的使用方法,帮助您快速构建高效的数据库应用。 ## 为什么选择faunadb-js? FaunaDB是一款强大的分布式数据库,而faunadb-js作为其官方JavaScript驱动,具有

gitblog_00481的博客 1682

River4:Node.js驱动的JavaScript新闻聚合器安装与使用指南

River4:Node.js驱动的JavaScript新闻聚合器安装与使用指南 一、项目目录结构及介绍 River4是一个基于Node.js的JavaScript新闻河流式聚合器。以下是其基本的目录结构及其简介: . ├── Dockerfile # Docker容器构建文件 ├── Dockerfile # 注意:此路径下的同名文件可能是误列或版本管理遗留,请查...

gitblog_00280的博客 696

为什么选择faunadb-js?FaunaDB v4 JavaScript驱动的优势与最佳实践

faunadb-js是FaunaDB v4的官方JavaScript驱动,为开发者提供了便捷高效的方式来与FaunaDB数据库进行交互。无论是在Node.js环境还是浏览器中,它都能稳定运行,帮助开发者轻松构建数据驱动的应用程序。 ## 🌟 核心优势:为何选择faunadb-js? ### 1. 多环境支持,无缝切换 faunadb-js支持多种运行环境,包括Node.js的各个LTS版本(

gitblog_00154的博客 841

pinyin4js 的安装和配置教程

pinyin4js 的安装和配置教程 1. 项目的基础介绍和主要的编程语言 pinyin4js 是一个开源的 JavaScript 库,它可以将汉字转换为拼音。这个库可以用于各种需要将中文文本转换为拼音的场景,比如输入法、搜索引擎、语音识别等。主要编程语言是 JavaScript。 2. 项目使用的关键技术和框架 pinyin4js 使用了原生 JavaScript 进行开发,不依赖于任何外部框架...

gitblog_00261的博客 854

如何用 satellite.js 轻松实现卫星轨道预测?探索 SGP4/SDP4 算法的终极 JavaScript 库 ✨...

satellite.js 是一个模块化的 JavaScript 库,专为 SGP4 和 SDP4 算法设计,可通过两行轨道数据(TLE)精确计算卫星位置和速度。无论是开发卫星追踪应用、航天教育工具,还是进行科学研究,这个轻量级库都能帮你快速实现复杂的轨道传播功能。 ## ???? 为什么选择 satellite.js?5 大核心优势 ### 1. **高精度轨道计算** 基于国际通用的 SGP...

gitblog_01105的博客 591

js日志管理-log4javascript学习小结

有用功能点: 可以分级别显示日志信息 可以控制显示级别 可以设置appender,设置显示在控制台还是发送服务端 控制台单独于web页面,方便调试查看 可以分组显示信息。logger.setGroup("name"),logger.groupEnd() 如何使用? 首先下载log4javascript包。 在页面引入js 1 <script src="../...

weixin_30872789的博客 280

faunadb-js新手入门:5分钟上手FaunaDB v4的JavaScript驱动开发

faunadb-js是FaunaDB v4的官方JavaScript驱动,为开发者提供了简洁高效的数据库交互方式。通过这个驱动,你可以轻松地在JavaScript应用中集成FaunaDB的强大功能,实现数据的存储、查询和管理。无论是构建Web应用、移动应用还是服务器端服务,faunadb-js都能帮助你快速上手FaunaDB v4开发。 ## 准备工作:安装与环境配置 🚀 要开始使用faun

gitblog_00980的博客 821
上一篇: JavaScript-3
下一篇: windows11--判断文件夹是否存在
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值