JavaScript BookList App | No Frameworks 个人笔记
JavaScript BookList App | No Frameworks 笔记
视频链接:
https://www.youtube.com/watch?v=JaMCxVWtW58&list=PLillGF-RfqbbnEGy3ROiLWk7JMCuSyQtX&index=6
bootstrap
使用bootswatch的Yeti
Fontawesome
外网fontawesome,注册并使用Kits,复制kit code到head里。
VScode 快捷键
向下复制行:shift+option+向下键
格式化:shift+option+f
static
不能创建UI类的实例,所以UI类的所有方法都是static
const和let
const声明只限制他指向变量的引用,所以当const变量引用的是对象时,对象的内部属性是可以修改的。
对于for循环,因为for循环每次会更新迭代变量,所以不能用const声明迭代变量.
但是用const声明一个不会被for循环改变的变量是可以的,每次迭代只是创建一个新变量.
这对for in和for of循环特别有意义:
for( const value of [1,2,3,4,5]) {
console.log(value);
}
产生这样的原因主要在于:
for in 和for of它们两个都是一种严格的迭代语句,对于对象中的每一个属性值,有一个指定的语句块被执行。也就是每一次循环,都会产生一个块级作用域来完成每个变量的行为。我可以把上面的例子理解为如下:
{const value = arr[0];}
{const value = arr[1];}
...
{const value = arr[4];}
然而for循环并不会遍历对象的属性,每一次循环都是在同个块级作用域中进行,使用const声明就会报错。
所以在for in或者for of当中,推荐使用const来确保访问到的属性值不会被后续语句所改变。
然而for循环并不会遍历对象的属性,每一次循环都是在同个块级作用域中进行,使用const声明就会报错。
所以在for in或者for of当中,推荐使用const来确保访问到的属性值不会被后续语句所改变。
声明时,const优先,let次之,使用const强制声明变量为不可变时,可以提前发现不合法的赋值操作。
字符串模版
innerHTML可以用字符串模版动态添加数据
static addBookToList(book) {
const list = document.querySelector('#book-list');
const row = document.createElement('tr');
row.innerHTML = `
<td>${book.title}</td>
<td>${book.author}</td>
<td>${book.isbn}</td>
<td><a href="#" class="btn btn-danger btn-sm delete">X</a></td>
`;
list.appendChild(row);
}
字符串模版要使用反引号``,是英文1左边的键
DOMContentLoaded
DOMContentLoaded事件在DOM树构建完成后立即触发,而不用等待图片、js文件、css文件或其他资源加载完成
MDN解释:
DOMContentLoaded
当 HTML 文档被完全解析并且所有延迟脚本(<script defer src="…">
和<script type="module">
)都已下载并执行时,该事件将被触发。它不会等待图像、子帧和异步脚本等其他内容完成加载。
DOMContentLoaded
不等待样式表加载,但是延迟脚本会等待样式表,并DOMContentLoaded
在延迟脚本后面排队。此外,未延迟或异步(例如<script>
)的脚本将等待已解析的样式表加载。
此事件的原始目标是Document
已加载的。您可以在接口上监听这个事件,Window
在捕获或冒泡阶段进行处理。有关此事件的完整详细信息,请参阅文档页面:DOMContentLoaded
事件。
一个不同的事件,load
应该只用于检测一个完全加载的页面。在更合适的load
地方使用是一个常见的错误。DOMContentLoaded
此活动不可取消。
classList
classList
属性是 HTML 元素的一个属性,它保存当前选定元素的类名
splice
JavaScript中的splice主要用来对js中的数组进行操作,包括删除,添加,替换等。
1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数)
array.splice(index,num)
2.插入-向数组指定位置插入任意项元素。三个参数,第一个参数(插入位置),第二个参数(0),第三个参数(插入的项)
array.splice(index,0,insertValue)
3.替换-向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)
array.splice(index,num,insertValue)
VScode调试
- 打开live server
- 打开调试页面,点运行和调试
- 设置配置文件,将默认的url改为要调试页面的url
- 点击绿色箭头调试,绿色箭头旁的要和配置文件中的name对应
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!