JavaScript-5

1.2 开始第一幅“码绘”——Javascript、p5.js及HTML5简介 再正式学习前,有必要对我们要用到的几个玩意进行理解和辨析,它们是 Javascript(简称JS), HTML5(简称H5), P5.js (简称P5) 这里主要是以类比作画来辨析它们之间的联系和区别: HTML5是用于浏览器中显示信息的超文本语言,相当于显示绘画作品的画框; P5.js是一个JS的库和框架,相当于作画用的画布、颜料和工具; Javascript是一种用于在浏览器中执行程序的脚本语言,相当于绘画的操作技法。 阅读详情

日期对象

实例化

    <script>
        // 1. 得到当前日期对象
        const date0 = new Date()
        console.log(date0);

        // 2. 得到指定日期对象
        const date1 = new Date('2024-1-1 08:30:00')
        console.log(date1);
    </script>

日期对象方法

方法作用说明
getFullYear()获取年份获取四位数的年份信息
getMonth()获取月份取值为 0 ~ 11
getDate()获取月份中的每一天不同月份取值也不相同
getDay()获取星期取值为 0 ~ 6
getHours()获取小时取值为 0 ~ 23
getMinutes()获取分钟取值为 0 ~ 59
getSeconds()获取秒取值为 0 ~ 59
    <script>
        // 得到当前日期对象
        const date = new Date()
        // 使用对象的方法
        console.log(date.getFullYear());
    </script>

时间戳

获得时间戳的三种方式

  • 方式一
    <script>
        // 得到当前日期对象
        const date = new Date()
        
        // 转化为当前日期所对应的时间戳
        console.log(date.getTime())
    </script>
  • 方式二(推荐)
    <script>
        // 输出当前时间所对应的时间戳
        console.log(+new Date())
        
        // 输出指定时间所对应的时间戳
        console.log(+new Date('2024-1-1 15:30:00'))
    </script>
  • 方式三
    <script>
        // 输出当前时间所对应的时间戳
        console.log(Date.now())
    </script>

实现倒计时案例

<body>
    <div style="width: 300px; height: 180px; background-color: rgba(220, 226, 241, 0.8); margin: 0 auto; text-align: center; border-radius: 50%;">
        <h2 style="margin: 10px; font-size: 30px;">倒计时</h2>
        <p>
            <span>距离</span>
            <span id="dl"><strong>0000-0-0 00:00:00</strong></span>
            <span>还剩</span>
        </p>
        <p style="font-size: 20px;">
            <span id="d">00</span>
            <strong>天</strong>
            <span id="h">00</span>
            <strong>时</strong>
            <span id="m">00</span>
            <strong>分</strong>
            <span id="s">00</span>
            <strong>秒</strong>
        </p>
    </div>
    <script>
        // 函数说明:
        // 参数=截止日期的时间戳
        // 返回值=false或者带有倒计时信息的数组
        function getCountdown(deadline = +new Date() + (86400 * 1000)) {
            // 获取当前日期
            const current = +new Date()
            // 设定终点日期
            const dl = deadline
            // 计算两者的差值(时间戳形式)
            const count = (dl - current) / 1000   // 1ms 转为 1s 需要除以 1000
            if (count < 0) return false
            // 将时间戳进行拆分与整理
            let day = parseInt(count / 60 / 60 / 24)
            day = (day < 10) ? ('0' + day) : (String(day))
            let hour = parseInt(count / 60 / 60 % 24)
            hour = (hour < 10) ? ('0' + hour) : (String(hour))
            let minute = parseInt(count / 60 % 60)
            minute = (minute < 10) ? ('0' + minute) : (String(minute))
            let secend = parseInt(count % 60)
            secend = (secend < 10) ? ('0' + secend) : (String(secend))
            // 返回倒计时结果
            const result = [day, hour, minute, secend]
            return result
        }

        function main() {
            // 输入倒计时的截至日期:
            const deadline = '2024-1-14 11:30:00'

            // 更新倒计时的截止日期
            const span_dl = document.querySelector('#dl')
            span_dl.innerHTML = deadline

            // 判断合法性
            const result = getCountdown(+new Date(deadline))
            if (!result) return 1

            // 定位各标签对象
            const span_d = document.querySelector('#d')
            const span_h = document.querySelector('#h')
            const span_m = document.querySelector('#m')
            const span_s = document.querySelector('#s')

            // 更新标签的时间
            span_d.innerHTML = result[0]
            span_h.innerHTML = result[1]
            span_m.innerHTML = result[2]
            span_s.innerHTML = result[3]
        }

        // 网页加载时,先执行一次main函数,达到加载最新数据的效果
        main()
        // 设置定时器: 此后将1秒自动执行一次main函数,从而达到更新数据的效果
        setInterval(main, 1000)
    </script>
</body>

倒计时函数(速查)

        // 函数说明:
        // 参数=截止日期的时间戳
        // 返回值=false或者带有倒计时信息的数组
        function getCountdown(deadline = +new Date() + (86400 * 1000)) {
            const current = +new Date()
            const dl = deadline
            const count = (dl - current) / 1000   // 1ms 转为 1s 需要除以 1000
            if (count < 0) return false
            let day = parseInt(count / 60 / 60 / 24)
            day = (day < 10) ? ('0' + day) : (String(day))
            let hour = parseInt(count / 60 / 60 % 24)
            hour = (hour < 10) ? ('0' + hour) : (String(hour))
            let minute = parseInt(count / 60 % 60)
            minute = (minute < 10) ? ('0' + minute) : (String(minute))
            let secend = parseInt(count % 60)
            secend = (secend < 10) ? ('0' + secend) : (String(secend))
            const result = [day, hour, minute, secend]
            return result
        }

节点操作

查找节点

  • 查找父节点
<body>
    <div class="grandfather">
        <div class="father">
            <div class="son"></div>
        </div>
    </div>

    <script>
        const son = document.querySelector('.son')
        console.log(son);
        console.log(son.parentNode);    // parentNode:父节点
        console.log(son.parentNode.parentNode);
    </script>
</body>
  • 查找子节点
    <script>
        const grandfather = document.querySelector('.grandfather')
        console.log(grandfather);
        console.log(grandfather.childNodes);    // parentNode:父节点
        console.log(grandfather.childNodes.childNodes);
    </script>
  • 查找兄弟节点
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>

    <script>
        const li_2 = document.querySelector('ul li:nth-child(2)')

        // 上一个兄弟节点
        const li_1 = li_2.previousElementSibling
        console.log(li_1)
        
        // 下一个兄弟节点
        const li_3 = li_2.nextElementSibling
        console.log(li_3)
    </script>
</body>

增加节点

  • 添加到父元素中的最后一个子元素
<body>
    <ul></ul>

    <script>
        const ul = document.querySelector('ul')
        
        // 1. 创建节点
        const li = document.createElement('li')
        li.innerHTML = '我是新加入的节点'

        // 2. 添加到父元素中的最后一个子元素
        ul.appendChild(li)
    </script>
</body>
  • 添加到父元素中的某个子元素的前面
<body>
    <ul>
        <li>001</li>
        <li>002</li>
        <li>003</li>
    </ul>

    <script>
        const ul = document.querySelector('ul')

        // 1. 创建节点
        const li = document.createElement('li')
        li.innerHTML = '我是新加入的节点'

        // 2. 添加到父元素中的某个子元素的前面
        ul.insertBefore(li, ul.children[0])
    </script>
</body>

克隆节点

语法:
	元素.cloneNode(布尔值)

介绍:
	cloneNode 会克隆出一个跟原标签一样的元素,括号内传入布尔值
	若为 true,则代表克隆时会包含后代节点一起克隆
	若为 false,则代表克隆时不包含后代节点
	默认为 false
<body>
    <ul>
        <li>001</li>
        <li>002</li>
        <li>003</li>
    </ul>

    <script>
        const ul = document.querySelector('ul')

        // 克隆节点
        const li_1 = ul.children[0].cloneNode(true)
        
        // 添加节点
        ul.appendChild(li_1)
    </script>
</body>

删除节点

<body>
    <ul>
        <li>要删除的内容</li>
        <li>Hello</li>
        <li>World</li>
    </ul>

    <script>
        const ul = document.querySelector('ul')

        // 删除节点(通过父级删除子级元素)
        ul.removeChild(ul.children[0])
    </script>
</body>

移动端事件

触屏事件(touch)说明
touchstart手指触摸到一个 DOM 元素时触发
touchmove手指在一个 DOM 元素上滑动时触发
touchend手指从一个 DOM 元素上移动时触发
<body>
    <div style="width: 200px; height: 200px; background-color: pink;"></div>

    <script>
        const div = document.querySelector('div')

        // 1. 进行触摸
        div.addEventListener('touchstart', function () {
            console.log('进行触摸');
        })

        // 2. 停止触摸
        div.addEventListener('touchend', function () {
            console.log('停止触摸');
        })

        // 3. 滑动触摸
        div.addEventListener('touchmove', function () {
            console.log('滑动触摸');
        })
    </script>
</body>

JS 插件

什么是插件

插件就是别人写好的一些代码,我们只需要复制对应的代码,就可以直接实现对应效果

学习插件的过程

本文以swiper插件为例:

  • 熟悉官网,了解这个插件可以完成什么需求 https://www.swiper.com.cn/

  • 查看在线演示 https://www.swiper.com.cn/demo/index.html

  • 查看基本使用流程 https://www.swiper.com.cn/usage/index.html

  • 查看API文档,去配置自己的插件 https://www.swiper.com.cn/api/index.html

  • 注意:多个swiper同时使用的时候,类名需要注意区分

Window 对象

浏览器对象模型

  • BOM(Browser Object Model)是浏览器对象模型
  • window 对象是一个全局对象,也可以说是 JavaScript 中的顶级对象
  • 像 document、alert()、console.log() 这些都是属于 window 的
  • 所有通过 var 定义在全局作用域中的变量、函数都会变成 window 对象的属性和方法
  • window 对象下的属性和方法,在调用时可以省略window,例如 window.document.querySelector() 可以省略为 document.querySelector()

location 对象

基本介绍

location 的数据类型是对象,它拆分并保存了 URL 地址的各个组成部分

属性与方法

  • href 属性:获取完整的 URL 地址,对其进行赋值操作即可实现"网页的跳转"
<body>
    <a href="https://www.baidu.com">
        支付成功!<span>5</span>秒钟之后将自动跳转到首页
    </a>

    <script>
        // 实现网页的自动跳转
        // 1.获取元素对象
        const a = document.querySelector('a')
        // 2.实现倒计时
        let time = 5
        let n = setInterval(function () {
            a.innerHTML = `支付成功!<span>${--time}</span>秒钟之后将自动跳转到首页`
            if (time === 0) {
                clearInterval(n)
                // 实现网页跳转
                location.href = "https://www.baidu.com"
            }
        }, 1000)
    </script>
</body>
  • search 属性
说明:
	search 属性获取地址中携带的参数(即:符号" ? "后面的部分)

例如:
	console.log(location.search)
  • hash 属性
说明:
	hash 属性获取地址中的哈希值(即:符号" # "后面的部分)

例如:
	console.log(location.hash)
  • reload 方法
reload 方法用来刷新当前页面,传入参数 true 时表示强制刷新
<body>
    <button style="margin: 0 auto; width: 200px; height: 200px; background-color: pink;">刷新页面</button>

    <script>
        const btn = document.querySelector('button')
        btn.addEventListener('click', function () {
            // 相当于 F5
            location.reload(true)  // true:启用强制刷新
        })
    </script>
</body>

navigation 对象

基本介绍

navigation 的数据类型是对象,该对象下记录了浏览器自身的相关信息

属性与方法

  • userAgent:通过它检测浏览器的版本及平台
    <script>
        // 检测userAgent(浏览器信息)
        (function () {
            const userAgent = navigator.userAgent
            // 验证是否为 Android 或 iPhone
            const android = userAgent.match(/(Android);?[\s\/]+([\d.]+)?/)
            const iphone = userAgent.match(/(iPhone\sOS)\s([\d_]+)/)
            // 如果是 Android 或 iPhone,则跳转到移动站点
            if (android || iphone) {
                location.href = 'https://手机端页面.cn/'
            }
        })()
    </script>

history 对象

基本介绍

history 的数据类型是对象,主要管理历史记录,该对象与浏览器地址栏的操作相对应,如前进、后退、历史记录等

属性与方法

history对象方法作用
back()后退功能
forward()前进功能
go()参数为1前进1个页面,参数为-1则后退1个页面
<body>
    <button>回退</button>
    <button>前进</button>

    <script>
        const back = document.querySelector('button')
        const forword = back.nextElementSibling
        back.addEventListener('click', function () {
            // 后退一步
            // history.back()
            history.go(-1)
        })
        forword.addEventListener('click', function () {
            // 前进一步
            // history.forword()
            history.go(1)
        })
    </script>
</body>

本地存储

具体介绍

背景:
    随着互联网的快速发展,基于网页的应用越来越普遍,同时也变得越来越复杂。
    为了满足各种各样的需求,会经常性在本地存储大量的数据。
    HTML5规范提出了相关解决方案。

其他:
    1.数据存储在用户浏览器中
    2.设置、读取方便,甚至页面刷新不丢失数据
    3.容量较大,sessionStorage 和 localStorage 约为 5M 左右
    4.常见的使用场景:https://todomvc.com/examples/vanilla-es6/(页面刷新数据不丢失)		

分类

  • localStorage
作用:
	可以将数据永久存储在本地(用户的电脑),除非手动删除,否则关闭页面也会存在

特性:
	可以多个窗口(页面)共享(同一浏览器可以共享)
	以键值对的形式存储使用
    <script>
        // 存储数据
        localStorage.setItem('name', 'Jack')
        // 修改数据
        localStorage.setItem('name', 'Peter')
        // 读取数据
        console.log(localStorage.getItem('name'));
        // 删除数据
        localStorage.removeItem('name')
    </script>
  • sessionStorage
特性:
	生命周期为关闭浏览器窗口
	在同一个窗口(页面)下数据可以共享
	以键值对的形式存储使用
	用法跟 localStorage 基本相同
    <script>
        // 存储数据
        sessionStorage.setItem('name', 'Jack')
        // 修改数据
        sessionStorage.setItem('name', 'Peter')
        // 读取数据
        console.log(sessionStorage.getItem('name'));
        // 删除数据
        sessionStorage.removeItem('name')
    </script>

存储复杂数据类型

基本介绍

问题:
	本地存储只能存储字符串,无法存储复杂数据类型

解决:
	需要将复杂数据类型转换成 JSON 字符串,存储到本地

语法:
	JSON.stringify(复杂数据类型)

具体演示

    <script>
        const object = {
            name: 'Jack',
            age: 30,
            gender: '男'
        }

        // 存储对象:
        // 1.复杂数据类型转为JSON字符串
        const str1 = JSON.stringify(object)
        // 2.存储JSON字符串
        localStorage.setItem('obj', str1)

        // 读取对象:
        // 1.读取JSON字符串
        const str2 = localStorage.getItem('obj')
        // 2.将JSON字符串转为"对象"
        const obj = JSON.parse(str2)
        console.log(obj);
    </script>
JS打造一款你自己的专用字体:使用p5.js与JavaScript实现 在最近的生成艺术项目中遇到一个小问题:如何在作品中优雅地添加文本元素,同时避免使用网络字体,要么侵权要么花钱~~给项目增加不必要的负担,我决定不走寻常路,自己动手,丰衣足食,用JS打造一款自己的专用字体! 阅读详情

相关推荐

关于【中孚计算机终端保密检查系统】的卸载

卸载中孚计算机终端保密检查系统

码农之路,向死而生 4万+

[JavaScript]通过JS使用MD5加密

[JavaScript]通过JS使用MD5加密 目录[JavaScript]通过JS使用MD5加密项目信息如何使用额外信息 项目信息 github地址 https://github.com/blueimp/JavaScript-MD5 作者demo地址 https://blueimp.github.io/JavaScript-MD5/ boootcdn地址 <script src="http...

petrel2015的博客 3万+

别再手动写JSON了!用Node-RED OPC UA节点5分钟搞定楼宇温湿度数据采集

本文介绍了如何利用Node-RED和OPC UA节点快速实现楼宇温湿度数据的自动化采集与JSON格式转换。通过可视化工具Node-RED,开发者无需编写复杂代码,5分钟内即可完成从传感器到数据输出的全流程配置,大幅提升智慧楼宇和工业物联网项目的实施效率。

weixin_30368405的博客 431

Node.js中实现MD5加密(crypto模块)和JavaScript中实现MD5加密

一、Node.js中实现MD5加密 ① 安装crypto模块 Npm i crypto ②在加密字符串的js中引入crypto模块 var crypto = require('crypto'); ③加密的方法 function md5Encrypt(encryptString) {     var hasher = crypto.createHash("md5");     has

来年又来年的博客 9669

数字IC设计(8)之AHB-Lite总线(持续更新)

AHB总线全称Advanced High-performance Bus,意为先进高性能总线。推出该总线的目的是补充APB总线在性能上的不足,APB总线适合挂载低速外设,所以AHB总线用来挂载高性能的外设,这样子可以分工合作,节约资源。AHB总线可以实现多主多从的连接,此时需要设计仲裁机和matrix(矩阵),AHB-Lite一般用于一主多从,此时则不需要仲裁机和matrix,但是也可以用AHB-Lite来实现多主多从,就是设计多个layer,每个layer是一主多从,再把各个layer连起来;

qq_69440734的博客 2254

Pinocchio 安装教程|机器人学的必备库

安装pinocchio,不要安装pip3 install pinocchio!

darcsdn 1660

如何快速实现JavaScript MD5哈希加密:js-md5完整指南

MD5加密在现代Web开发中扮演着重要角色,而js-md5正是JavaScript开发者实现快速、安全MD5哈希加密的首选工具。这个轻量级库不仅支持UTF-8编码,还能在Node.js和浏览器环境中无缝运行,为你的项目提供可靠的加密保障。 ## 🔑 什么是js-md5? js-md5是一个专门为JavaScript设计的MD5哈希函数库,它具备以下核心优势: - **全面兼容**:支持浏览

gitblog_00111的博客 1017

【WRF模拟】土地利用类型的确定:最大覆盖法/瓦片法

土地利用类型的确定:最大覆盖法/瓦片法

WW、forever的博客 1529

JavaScript的p5.js库使用详解(上)

JavaScript的p5.js库使用详细介绍(上)

cnds123的专栏 1863

别把 ABAP 时间戳当数字算:TIMESTAMP / TIMESTAMPL 的语义、正确用法与项目级避坑指南

ABAP时间戳使用指南与常见陷阱 摘要:ABAP中的时间戳(TIMESTAMP/TIMESTAMPL)本质是UTC时间的数字表示,而非累计秒数。正确用法包括:直接比较时间戳顺序、使用CONVERT TIME STAMP进行时区转换、通过CL_ABAP_TSTMP计算时间差。关键注意事项:绝对不要对时间戳本身进行数学运算,否则会导致非法时间值。实际项目中需特别注意SAP Gateway的ETag处理、跨时区系统集成和CDS视图中的时间戳使用场景,避免将本地时间误存为UTC时间戳或在云迁移时产生时区问题。(14

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

万字长文:YOLOv5+RK3588 NPU多线程加速全攻略——从理论到部署的终极优化

RK3588 NPU多线程加速优化教程摘要 本教程深入讲解了如何利用线程池技术优化RK3588 NPU上的YOLO目标检测模型推理性能。RK3588内置3个NPU核心,理论算力达6TOPS,为多线程优化提供了硬件基础。教程详细解析了线程池的核心组件(任务队列、工作线程、同步机制)和实现架构,包括类设计、初始化流程、工作线程逻辑(任务获取、NPU推理、结果存储三个阶段)以及任务提交/获取机制。通过预分配模型实例、线程绑定、流量控制等优化手段,实现了从单线程28FPS到多线程120FPS的显著性能提升,为边缘A

LXY_LOVE36的博客 1101

JavaScript的p5.js库初学者使用快速入门

p5.js是一个基于JavaScript的创意编程库,旨在简化代码编写过程,让编程像绘画一样直观。

cnds123的专栏 1035

【RT-DETR有效改进】利用EMAttention加深网络深度提高模型特征提取能力(特征选择模块)

本文给大家带来的改进机制是EMAttention注意力机制,它的核心思想是,重塑部分通道到批次维度,并将通道维度分组为多个子特征,以保留每个通道的信息并减少计算开销。EMA模块通过编码全局信息来重新校准每个并行分支中的通道权重,并通过跨维度交互来捕获像素级别的关系。本文改进是基于ResNet18、ResNet34、ResNet50、ResNet101,文章中均以提供,本专栏的改进内容全网独一份深度改进RT-DETR非那种无效Neck部分改进,

Snu77的博客 3170

p5js语言和html语言,p5.js-JavaScript中文网-JavaScript教程资源分享门户

p5.js是什么什么是p5.js,p5.js is a JavaScript client-side library for creating graphic and interactive experiences, using canvas and HTML5, based on the core principles of Processing.p5.js官网:官网p5.js文档:文档p5.j...

weixin_32929205的博客 852

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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...

如何用js-md5轻松实现JavaScript数据加密?5分钟掌握MD5哈希计算全指南

在当今Web开发中,数据安全验证是不可或缺的环节,而MD5哈希算法正是实现这一目标的基础工具。**js-md5**作为一款轻量级JavaScript库,让开发者能够在浏览器和Node.js环境中快速实现MD5加密功能,完美支持UTF-8编码与HMAC安全验证,是前端数据处理的必备神器。 ## ???? 为什么选择js-md5?3大核心优势解析 ### ✅ 超轻量设计,性能拉满 作为专为JavaSc...

gitblog_00068的博客 826

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JavaScript笔记之JS 和 HTML5 的关系

一个完整的程序很少只用 HTML5——除非是纯静态页面(如一个简单的博客文章)。但如果你想添加任何动态功能(如按钮点击后更新内容、表单验证、动画),就必须用 JS。:在现代前端开发中,HTML5 和 JS 几乎总是结合使用的,尤其是如果你在构建一个“程序”(如 web app、游戏或交互页面)。这里,JS 监听按钮点击并弹出警报。这只是显示文本,没交互。

小勇博客 1027

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

P5.js - Javascript for Artists

摘要: p5.js is a beginner-friendly JavaScript library for creative coding, allowing users to draw, animate, and build interactive web projects without complex setup. Using the p5.js Web Editor, beginners can start with simple shapes like circles (ellipse())

Morpheon的博客 1084

javascript入门_JavaScript教程:生成艺术和P5.js入门

javascript入门 在过去的几年中,我一直在介绍生成艺术,即用代码创建的艺术。 我在9月举行的Strange Loop 2018大会上的两次 演讲是我需要深入探讨的最后一招。 但是,当我这样做的时候,我偶然发现了一些设置问题,这让我挠头挠了脑筋,放慢了速度。 下面,我将简要介绍一下P5.js是什么,最初的障碍是什么,以及如何直接使用P5.js和ES6进行美术创作。 下周,我们将介绍一些AP...

cxu0262的博客 525

JavaScript Js MD5 加密实现

方法由大神Darren提供 原文链接:点击 实现方法: var MD5 = function(d){result = M(V(Y(X(d),8*d.length)));return result.toLowerCase()};function M(d){for(var _,m="0123456789ABCDEF",f="",r=0;r<d.length;r++)_=d.charCod...

张小凡 3612

[原创]类似Java语法的Javascript框架js5

{version:"5.0.0"}; var __cpackage__; var __classes__ = {}; var __imports__ = []; Js5.apply = function(o, c) { if (o &amp;&amp; c &amp;&amp; typeof c == 'object') { for (var p in c) { o[p] = c[p];

ESR研发中心 CTO兼创始人 王加杉 170

BPC.js:JavaScript 生成 68.5KHz BPC 信号

BPC.js:JavaScript 生成 68.5KHz BPC 信号 在现代社会中,无线控制技术已经深入到我们的日常生活中。BPC.js 是一个开源的 JavaScript 库,它专注于生成 68.5KHz 的 BPC(Binary Phase Code)信号,广泛应用于无线电控制时钟等设备。下面,让我们一起深入了解这个项目的魅力。 项目介绍 BPC.js 是一个轻量级的 JavaScript ...

gitblog_00605的博客 1132

初识p5.js、p5.bezier创意编程程式库与ml5.js人工智能库

本文依次介绍了基于JavaScript开发的p5.js创意编程程式库、p5.bezier拓展库与ml5.js人工智能库,并较为详细地介绍了p5.js的项目代码开发方法。同时,基于网页端给出了一个简易圣诞树绘制的Demo。

不要仅为成功而努力,要为做一个有价值的人而努力 2066

Learn JavaScript with p5.js

Learn JavaScript with p5.js: Coding for Visual Learners 免费下载本书描述使用最受欢迎的 JavaScript 库 p5.js从零开始以引人入胜的视觉方法学习编写代码。 你在本书中学习到的技术可应用与多个行业,可构建Web应用程序,可编程的机器人,或生成艺术作品。本书浅显易懂,能够为你的编程打下坚实的基础。 这本书不会涉及...

weixin_34148508的博客 217

js-spark-md5: 快速、轻量级的JavaScript MD5实现

如果你在寻找一个快速、可靠的MD5哈希生成库,那么不妨尝试一下。 ## 什么是js-spark-md5? js-spark-md5是一个轻量级的JavaScript库,它实现了高效的MD5哈希算法。你可以将它用于各种用途,例如对文件或文本进行哈希处理,或者验证数据的完整性。 ## 你能用js-spark-md5做什么? 以下是几个可能的用途示例: - 文件哈希计算:你可以使用js-spa...

gitblog_00010的博客 1195

JavaScript的p5.js库坐标系图解

本文介绍了p5.js中的坐标系统图解,包括2D和3D模式。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值