美文网首页程序员
征服《JavaScript高级程序设计(第3版)》之路 =>

征服《JavaScript高级程序设计(第3版)》之路 =>

作者: xuelulu | 来源:发表于2018-12-19 20:08 被阅读5次

    作为一名不爱读书之人的自我救赎 ╮(╯▽╰)╭ 。以前所有的知识几乎都是从各大学习网站的视频来的,大都会带一些讲课老师自己的理解,个人认为,这样有助于快速入门,因为老师在讲课时,还会带一些个人经验,对于以后的开发也会很有帮助,但是,也会有一些因为带了个人理解而导致的 `二手货` 知识传达上的理解偏差,所以最终,我还是回到了这本javascript经典之作上,从基础上学起。

    这个系列的笔记就是看看我能不能坚持把这本书读完,每天打卡;再顺便记录一下,本书中与我之前的理解有些偏差的地方,以及一些因为本来就很菜,所以记不太清,但是又很重要的点( ╮(╯▽╰)╭ 大概就是整本书吧 )

    因为看得比较细,所以可能其中会有一些完全用不到的知识整理出来,但是for fun嘛

    如有错误,欢迎指正。如有建议,欢迎讨论。如有益处,,,不存在的。


    第 1 章 JavaScript简介

    (这个每门入门课程都不会错过,但我又总是`不小心`错过的章节 ╮(╯▽╰)╭ )

    JavaScript 组成

    第 2 章 在HTML中使用JavaScript

    书上提到两种办法,都用<script>,一个是src属性引入外部文件,一个是内嵌,直接写在标签内部。

    作为能操纵节点的DOM大神,自然也能createElement,来手动添加script标签,实现外部脚本或嵌入脚本。

    HTML4.01 为<script>定义了 6个可选的属性

    注:(1)嵌入脚本不能在代码中出现 `</script>`,可以通过转义字符 `/` 解决。

    <script>

    alert(`</script>`); alert(`<\/script>`);

    </script>

    alert(`</script>`); alert(`<\/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

    相关文章

      网友评论

        本文标题:征服《JavaScript高级程序设计(第3版)》之路 =>

        本文链接:https://www.haomeiwen.com/subject/dpgdkqtx.html