作为一名不爱读书之人的自我救赎 ╮(╯▽╰)╭ 。以前所有的知识几乎都是从各大学习网站的视频来的,大都会带一些讲课老师自己的理解,个人认为,这样有助于快速入门,因为老师在讲课时,还会带一些个人经验,对于以后的开发也会很有帮助,但是,也会有一些因为带了个人理解而导致的 `二手货` 知识传达上的理解偏差,所以最终,我还是回到了这本javascript经典之作上,从基础上学起。
这个系列的笔记就是看看我能不能坚持把这本书读完,每天打卡;再顺便记录一下,本书中与我之前的理解有些偏差的地方,以及一些因为本来就很菜,所以记不太清,但是又很重要的点( ╮(╯▽╰)╭ 大概就是整本书吧 )
因为看得比较细,所以可能其中会有一些完全用不到的知识整理出来,但是for fun嘛
如有错误,欢迎指正。如有建议,欢迎讨论。如有益处,,,不存在的。
第 1 章 JavaScript简介
(这个每门入门课程都不会错过,但我又总是`不小心`错过的章节 ╮(╯▽╰)╭ )
JavaScript 组成第 2 章 在HTML中使用JavaScript
书上提到两种办法,都用<script>,一个是src属性引入外部文件,一个是内嵌,直接写在标签内部。
作为能操纵节点的DOM大神,自然也能createElement,来手动添加script标签,实现外部脚本或嵌入脚本。
HTML4.01 为<script>定义了 6个可选的属性注:(1)嵌入脚本不能在代码中出现 `</script>`,可以通过转义字符 `/` 解决。
alert(`</script>`); alert(`<\/script>`);<script>
alert(`</script>`);alert(`<\/script>`);</script>
(2)不能省略</script>。
(3)有src属性的<script>元素中无内嵌代码,否则内嵌代码会被忽略。
(4)外部脚本就是把代码下载到当前页面中运行,所以下载完后相当于嵌入式js,
所以在下载和解析外部脚本的过程中,页面处理会暂时停止。
*(5)其实,外部js文件的.js扩展名是不必需的,不过惯例都带有扩展名。
书本原话是 `因为浏览器不会检查包含JavaScript的文件的扩展名。这样一来,使用JSP、PHP或其他服务器端语言动态生成JavaScript代码也就成为了可能。但是,服务器通常还是需要看扩展名决定为响应应用哪种MIME类型。如果不适用.js扩展名,请确保服务器能返回正确的MIME类型`
我还没有遇到过这种情况。。。有例子的可以分享看看。
(6)<script>的src属性可以是指向外部域的完整URL,类似<img>,
但是,要小心,以防恶意代码,最好是个信赖的外部域。
(7)js代码全放在<head>中,影响页面显示;js代码全放在<body>尾部,影响页面操作。。。
书中给出,js代码尽量靠近body尾部,并且正确使用defer和async属性。
这件事,牵扯到了js性能优化的问题,所以我去搜了搜,参考:JavaScript性能---加载及执行
减少 JavaScript 对性能的影响有以下几种方法:
1。将所有的<script>标签放到页面底部,也就是</body>闭合标签之前,这能确保在脚本执行前页面已经完成了渲染。
2。尽可能地合并脚本。页面中的<script>标签越少,加载也就越快,响应也越迅速。无论是外链脚本还是内嵌脚本都是如此。
3。采用无阻塞下载 JavaScript 脚本的方法:
1)使用<script>标签的 defer 属性和async属性;
2)使用动态创建的<script>元素来下载并执行代码;
3)使用 XHR 对象下载 JavaScript 代码并注入页面中。
(正好也搜到了图书馆里有关于高性能js的书,也许打卡的下本就是《 高性能网站建设指南:前端工程师技能精髓 》这个了)
(8)defer和async标记的外部脚本在执行时都不会影响页面的构造,都只适用于外部脚本文件。
1)最好只包含一个延迟脚本。因为现实中,延迟脚本不一定会像HTML5规范要求的一样按照顺序执行 和 在DOMContentLoaded事件触发前执行。
2)确保异步脚本之间互不依赖。因为异步脚本不保证按先后顺序执行。
3)异步脚本不要在包含修改DOM的操作。
4)异步脚本一定会在页面的load事件前执行,不一定确定在DOMContentLoaded的前后。
(9)<noscript>
课外:MIME类型(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型,一种标准化的方式来表示文档的性质和格式。
浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理文档;因此服务器设置正确以将正确的MIME类型附加到响应对象的头部是非常重要的。如:text/javascript
网友评论