From 6b489080fdb5e5910941d511d4afbeff0bd1ba2f Mon Sep 17 00:00:00 2001
From: Anbang
Date: 2020年12月22日 20:51:52 +0800
Subject: [PATCH 1/2] hello
---
SUMMARY.md | 4 +
docs/hello.md | 729 +++++++++++++++++++++++++++++++++++++++++++++++++
test-file.html | 28 --
test.css | 26 --
4 files changed, 733 insertions(+), 54 deletions(-)
create mode 100644 SUMMARY.md
create mode 100644 docs/hello.md
delete mode 100644 test-file.html
delete mode 100644 test.css
diff --git a/SUMMARY.md b/SUMMARY.md
new file mode 100644
index 0000000..527ce57
--- /dev/null
+++ b/SUMMARY.md
@@ -0,0 +1,4 @@
+# Summary
+
+* [0. 前言](README.md)
+* [1. 前端开发初识](docs/hello.md)
\ No newline at end of file
diff --git a/docs/hello.md b/docs/hello.md
new file mode 100644
index 0000000..c1b5b57
--- /dev/null
+++ b/docs/hello.md
@@ -0,0 +1,729 @@
+# 前端开发初识
+
+## 本章目录
+
+1. 编辑器的选择
+1. 前端开发环境介绍
+1. script 标签的属性
+1. JS由哪些部分组成、DOM初识
+1. HTML中怎么使用JS/CSS
+1. 从noscript标签引深出的两种编程思想(优雅降低,渐进增强)
+1. javascript的文档模式和ES6
+1. 变量的定义和储存值的类型判断
+1. 强类型语言和弱类型语言的区别
+1. 编程语言是做什么的?面向对象编程的真正意义是什么?
+1. 练习题
+1. 前端技术方向的选择,编程语言是做什么的?
+1. JS代码检测的一些小方法
+
+## 编辑器的选择
+
+通过专业的工具来写代码可以事半功倍,我们不可能在工作中使用记事本,备忘录之类的软件来写代码。前端开发者写代码的主流选择是 `VSCode` 和 `WebStrom`。
+
+`vscode` 启动快,短小精悍型,配合插件,可实现强大功能,一个强大又免费的工具。
+
+`WebStrom` 内置支持了很多功能,前端开发的神器,因为每次启动都需要建立索引,启动时间比较长,占用内存大。一个收费但是又很值得的工具。
+
+对于初次接触前端的朋友们,推荐使用 `VSCode` 或 `WebStrom`,因为用户基础大,而且前端生态中新的工具和炫酷解决方案总是优先支持这两款工具。如果你有选择困难症,那么就使用 `VSCode` 吧,把精力放在研究代码上,不要在编辑器上浪费过多时间;
+
+## 前端开发环境介绍
+
+相比其他语言,学习 JavaScript 的优势之一在于不用安装或配置复杂的环境就可以开始学习。
+
+我们的电脑上只要有浏览器和编辑器就可以进入 JavaScript 的学习和实践了。
+
+- 编辑器推荐使用 `VSCode`
+- 浏览器用 `Chrome`
+
+因为 JavaScript 代码是执行的时候才进行编译,所以环境比较简单;当然,请不要纠结 JavaScript 和 Java 之间有什么关系,他们除了名字都带Java这个字符,其它没有啥关系,如果你喜欢网页程序,想快速做一名前端发者,那么跟着敲代码就好了,不要浪费时间。
+
+**推荐的选择**: 下面选项是对于开发者来说很重要。
+
+- 经常总结和思考学习的内容
+ - 如果是博客记录:独立域名和第三方的均可,比如博客园,掘金,简书等
+ - 如果是笔记记录: 只要能够长期保存的工具都可以,比如网易云笔记,印象笔记等。
+ - 学习的时候多总结多思考是一个非常好的习惯,学的多不如学会的多,看的多不如掌握的多。记录是留下总结和思考的痕迹,方便以后随时回顾。
+- Github
+ - 一个开发者作品的聚集地,可以通过借鉴其它开发者的代码来提高自己的编码实力。
+
+## script 标签的属性
+
+在日常工作的网页中,JavaScript是基于HTLML来运行的,为了项目的维护,很多时候选择使用 script 标签来引用JavaScript代码,我们先熟悉下 script 标签;
+
+script标签有下面属性
+
+- `async`
+ - 这是个布尔属性,正常的JavaScript加载是同步的,该属性设置为`true`可以异步加载JavaScript资源,可以消除解析阻塞,在性能优化类的面试题中,异步获取是一个考点。
+ - 对于普通脚本,如果存在 async 属性,那么普通脚本会被并行请求,并尽快解析和执行。
+ - 对于模块脚本,如果存在 async 属性,那么脚本及其所有依赖都会在延缓队列中执行,因此它们会被并行请求,并尽快解析和执行。
+- `defer`
+ - 这是个布尔属性,设置为`true`的时候,用来通知浏览器当前JS文件将在文档完成解析后,触发 DOMContentLoaded 事件前执行。
+ - defer 的作用类似上面的async,有 defer 属性的脚本会阻止 DOMContentLoaded 事件,直到脚本被加载并且解析完成。
+ - defer 属性只对普通脚本起效果,对模块脚本没有作用,模块脚本默认就有这种效果。
+- `crossorigin`
+ - 允许用户配置元素获取数据的 CORS 请求。
+- `integrity`
+ - integrity 属性是资源完整性规范的一部分,它允许你为 script 提供一个 hash,用来做校验,检验加载的 JavaScript 文件是否完整。
+ - integrity 内的Hash值是告诉浏览器,使用指定的签名算法对需要加载的js文件进行计算,计算后的值与intergrity提供的摘要签名对比,如果二者不一致,就不会执行这个资源。
+- `nomodule`
+ - 这是一个布尔属性,设置为true的时候,可以设置标明当前脚本在支持 ES2015 modules 的浏览器中不执行。
+ — 因为nomodule的这种特效,我们可以把它用在不支持模块化JavaScript的旧浏览器中,用来提供优雅降级的解决方案。
+- `nonce`
+ - nonce属性可以用来告诉浏览器,当前的脚本内容不是由恶意注入到当前文档中的,而是故意放入文档中的。
+- `referrerpolicy`
+ - 设置在加载当前JS文件的时候发送哪个来源。
+- `src`
+ - 这是最常用的属性,指定引用外部脚本的URI。这个属性用来代替直接在文档中写JS代码,让维护更简单。
+ - 注意: 指定了 src 属性的 script 标签内不应该再写JS代码了(就算你写了也不会执行的)。
+- `type`
+ - 为文件指定MIME类型,支持的MIME类型包括 text/javascript, text/ecmascript, application/javascript, 和 application/ecmascript。
+ - 如果没有定义这个属性,脚本会被视作JavaScript,type是属于可忽略的属性,推荐不写
+- `text`
+ - 用于设置元素的文本内容。
+ - 注意: 该属性在节点插入到DOM之后,此属性会被解析为可执行代码。
+- `charset`
+ - 如果存在,该值必须和"utf-8"匹配(不区分大小写)。
+ - charset 没有必要写,因为页面文档使用`UTF-8`,则 script 标签会从页面文档中继承这个属性。(如果文档开发不写`UTF-8`,中文的html文件运行会显示乱码。)
+- `language`
+ - 和type属性类似,这个属性定义脚本使用的语言。这是一个非标准化的属性。没有必要写。
+
+一般最常用的就是src,常见的script标签写法如下:
+
+```js
+
+```
+
+## 网站由哪些部分组成
+
+**一个网站由HTML/CSS/JS三者来组成;**
+
+- HTML 可以看做人的骨架和肉体(HTML是标记使用)
+- CSS 可以看做人的衣服,美瞳、化妆品(使人看起来更加的漂亮,看起来更加赏心悦目)
+- JS 可以看做人的技能,比如会眨眼,会吃饭,会跑步,会化妆等等
+ - 比如把一块手表戴在自己的手上,使自己看起来更有气质,这可以看做是通过JS来控制CSS
+ - 比如感觉自己身体胖了,去减肥;这就相当于通过JS来控制HTML;
+ - 这一切都是自己倒腾自己的,如果张三去操作李四,就牵扯到JS中"跨域",权限等问题了,现在仅作了解;只需要知道,在浏览器中,JS操作的是当前这张网页的;
+
+
+
+## JS由哪些部分组成
+
+一个完整的javascript实现应该有下列三个不同部分组成:
+
+
+
+- `ECMAScript`:提供核心语言功能,是核心,规定了这们语言的书写规范;
+
+ ```js
+ var jd="京东商城";
+ ```
+
+- `DOM`:提供访问和操作网页内容的方法和接口,(document object model 简称DOM 文档对象模型)
+
+ ```js
+ var oDiv=document.getElementById("div1");
+ oDiv.innerText="现在已经被我占领了";
+ ```
+
+- `BOM`:提供与浏览器交互的方法和接口;
+ - BOM最蛋疼的部分是没有统一的标准;从根本上讲BOM只处理浏览器窗口和框架,(browser object model 简称 BOM 浏览器对象模型)
+
+ ```js
+ windows.location.href
+ ```
+
+### 1、核心部分:
+
+WEB浏览器只是ECMA的宿主环境之一,也可以不依赖浏览器,比如宿主环境可能还包括Node和Adobe Flash;
+ECMAScript规定了Javascript这门语言的组成部分;主要规定了语法、类型、语句、关键字、保留字、操作符、对象;
+
+### 2、DOM部分
+
+文档对象 模型把整浏览器页面映射为一个多层节点结构,页面中每个组成部分都是某种类型的节点,这些节点又包含了不同类型的数据;
+```
+
+
+
+
+ 这是显示在浏览器选项卡上的文字标题
+
+ 这是显示在浏览器选项卡上的文字标题
+
您好啊,我是HTML
+
+
+
+ ```
+
+HTML页面,通过DOM可以看成树形图,借助DOM提供的API,可以轻松的增删改查;下面是几个标签的层级关系
+
+```
+
+
+
+
+
+
+ 这是显示在浏览器选项卡上的文字标题
+
+
+
+
+
+ 您好啊,我是HTML
+
+
+
+
+```
+
+
+DOM的几个级别的介绍;DOM目前分为三个级别;DOM1级,DOM2级,DOM3级;
+
+- DOM1级:是很早以前成为W3C标准的,由DOM核心和DOM HTML两部分组成,DOM核心规定是如何映射基于XML的文档结构,以便简化对文档中任意部分的访问和操作;DOM HTML模块则在DOM核心的基础上加以扩展,添加了针对HTML的对象和方法;主要目标是映射文档的结构;
+
+- DOM2级:在原来的DOM1级基础上扩充了鼠标和用户界面事件等;主要包括DOM视图,DOM事件、DOM样式、DOM遍历和范围;
+
+- DOM3级:引入了以统一方式加载和保存文档的方法(在DOM加载和保存模块中定义);新增了验证文档的方法(在DOM验证模块中定义);DOM3级也对DOM核心进行了扩展,开始支持XML1.0,涉及XML infoset,Xpath和XML Base。
+
+### 3、BOM部分;
+BOM最蛋疼的部分是没有统一的标准;从根本上讲BOM只处理浏览器窗口和框架;主要有
+- 弹出新浏览器窗口的功能;
+- 移动、缩放和关闭浏览器窗口的功能;
+ - window.close()
+- 提供浏览器详细信息的navigator对象;
+- 提供浏览器所加载页面的详细信息的location对象;
+ - windows.location.href
+- 提供用户显示器分辨率详细信息的srceen对象;
+- 对cookies的支持;
+- 像XMLHttpRequest和IE的ActiveXObject这样的自定义对象;
+- 有了HTML5后,DOM实现的细节有望朝着兼容性越来越高的方向发展;
+
+JavaScript中我们学的所有的知识点其实都是基于浏览器内置类实现的,这也说明了js是由一个个类组成的,而我们要学习的就是类、实例的关系和类上面的私有或者公有的属性或者方法---这就是我们经常听到的面向对象编程
+
+
+
+## 四、HTML中怎么使用JS/CSS
+
+>- 1、行内使用Javascript
+>- 2、嵌入式;
+>- 3、外联式;
+
+### 1、行内使用Javascript介绍;
+最常用的就是在a标签的href上使用Javascript:;
+
+`
+
+`
+
+这段代码,就是当点击连接[链接ZAB]的时候,没有任何反应;这是最常用的行内Javascript用法;
+
+如果需要使用点击链接弹窗文字;可以如下的写法;
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
+
+
+
+这时候点击连接有弹窗的链接的时候,就会弹窗"这是一段测试代码"的消息提醒;行内使用Javascript的方法,不推荐大家使用,不易维护 ;
+
+### 2、嵌入式是直接写在HTML页面中的;
+
+下面的,绑定事件的,就是嵌入式的写法;
+
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+嵌入式写法,标签内任何地方都不要出现 < / script>的字符串;下面的的代码会出错
+
+ ");
+
+
+ ";
+
+
+
+
+### 3、外联式;
+
+**注意编码格式统一,否则中文会乱码**
+
+通过script的src属性引用一个文件;关于script的标签位置,按照传统的做法,是写在head元素中;这种做法的目地是把所有外部文件(CSS,JS)的引用都放在相同的地方;可是如果放在顶部;HTML加载的时候,是从上到下依次解析的;页面加载很多HTML的时候,就会堵塞后面的DOM节点加载;导致页面呈现的内容出现延迟,而延迟期间浏览器窗口将是空白的;
+
+
+
+ Title
+
+
+
+为了避免这个问题,现在的WEB一般是全部javascript都放在
+
+
+
+
+ 之前,放在页面偏后的地方,当然如果你有强迫症,就要放前面,那需要特殊处理一下,如下;
+
+如果放在head中,直接获取元素的时候,是获取不到的(因为此时还没有加载完成);比如获取ID,就是获取不到的;需要做延迟加载才好
+
+ window.onload=function () {
+ var oDiv=document.getElementById("div1");
+ oDiv.innerText="22";
+ }
+
+这样在DOM加载完成后才会触发onload里面的代码
+
+
+
+
+
+
+
+ < script src="./jquery.js">
+ < /html>
+
+所有的javascript会按照它在页面中的顺序来依次解析;一般写在页面内容的后面,推荐放在前,因为放在body前可以通过W3C的校验,如果不为W3C校验,放在