Java 阶段四 Day03 JavaScript、语言基础、BOM和DOM及前端设计模式
JavaScript概述
什么是JavaScript
JavaScript(通常简称为JS)是一种高级的、多范式的编程语言,用于在Web开发中添加交互性和动态功能。它是一种脚本语言,可以在网页上直接嵌入,由浏览器解释执行。JavaScript是Web技术的三大基石之一,另外两个是HTML(标记语言)和CSS(样式表)。
以下是关于JavaScript的一些关键特点和用途:
-
客户端脚本语言:JavaScript主要用于在Web浏览器中运行,它可以直接嵌入到HTML文档中,并由浏览器解释执行。这使得它成为网页前端开发的核心技术之一,用于增加网站的交互性和动态性。
-
多范式:JavaScript是一种多范式编程语言,支持面向对象编程、函数式编程和基于原型的编程。这使得它非常灵活,适用于各种编程场景。
-
事件驱动:JavaScript通常与HTML事件模型结合使用,可以通过事件处理程序来响应用户交互,例如点击、输入、鼠标移动等事件。
-
跨平台:JavaScript可以在各种操作系统上的不同浏览器中运行,因此具有跨平台性。
-
库和框架:JavaScript生态系统中存在大量的库和框架,如React、Angular、Vue.js等,它们使得开发者能够更轻松地构建复杂的Web应用程序。
-
服务器端编程:除了在客户端浏览器中运行,JavaScript也可以用于服务器端编程。Node.js是一个流行的服务器端JavaScript运行时环境,允许开发者构建高性能的服务器应用程序。
-
数据交互:JavaScript可以通过Ajax(Asynchronous JavaScript and XML)等技术与服务器进行数据交互,动态地加载内容,而不需要重新加载整个网页。
-
开发工具:JavaScript开发者可以使用各种集成开发环境(IDE)、文本编辑器和浏览器开发工具来编写、调试和测试JavaScript代码。
语言特点
JavaScript 是一种多用途、高级、动态的编程语言,它在Web开发中扮演了重要的角色。以下是 JavaScript 的一些主要特点:
-
动态类型:JavaScript 是一种动态类型语言,这意味着变量的数据类型是根据赋给它们的值自动确定的。这使得 JavaScript 灵活,但也可能导致类型相关的错误。
-
弱类型:JavaScript 是一种弱类型语言,这意味着它不会强制执行严格的类型检查,使得变量可以在不同的数据类型之间自由转换。这可以提供灵活性,但也需要谨慎处理类型相关的问题。
-
闭包:JavaScript 支持闭包,这是一种允许函数访问其外部作用域中变量的机制。这对于数据封装和函数式编程非常有用。
-
异步编程:JavaScript 内置了处理异步操作的能力,例如通过回调函数、Promise 对象和 async/await 关键字。这使得 JavaScript 适用于处理网络请求、文件读写等需要等待时间较长的任务。
-
丰富的生态系统:JavaScript 生态系统包括大量的库和框架,如 React、Angular、Vue.js 等,用于构建高性能、复杂的前端和后端应用程序。
-
扩展性:通过使用 JavaScript 的扩展库或自定义代码,您可以为语言添加新功能和功能。
一门编程语言包括哪些内容
- 变量
- 数据类型
- 运算符
- 各种语句
- 方法
- 面向对象
语言基础
变量
- JavaScript语言属于弱类型语言,声明变量不需要指定类型
- JavaScript语言中通过let或var声明变量
- let声明的变量,作用域和Java语言类似,块级作用域(推荐使用)
- var声明的变量,全局作用域
JavaScript常用数据类型
- 基本数据类型
- 字符串(String)、数字(Number)、布尔(Boolean)、未定义(Undefined)
- 引用类型
- 对象(Object)、数组(Array)、函数(Function)
获取变量类型的方式: typeof 变量名;
运算符
- 算术运算符:+ 、 - 、 * 、/ 、 %
- 除法运算会自动根据结果转换整数或小数
- java:int x = 5; int y=2; int z = x/y; z=2
- js:let x = 5; let y=2; let z = x/y; z=2.5 x=6 z=3
- 除法运算会自动根据结果转换整数或小数
- 关系运算符:> 、< 、>= 、<= 、!= 、== 、===
- ==:先统一等号两边变量的类型,再比较值 “666”==666 true
- ===:先比较类型,类型相同后再比较值 “666”===666 false
- 逻辑运算符:&& 、|| 、! 只支持短路与 和 短路或
- 赋值运算符:= 、+= 、-= 、*= 、/= 、%=
- 三目运算符:条件?值1:值2
各种语句
- 分支语句:if 和 else
- for 新循环:for(Person p : persons) JS: for(let p of persons)
- while
- switch case
如何在HTML页面中引入JavaScript代码
在 HTML 页面中引入 JavaScript 代码通常有几种方式,取决于需求和偏好。以下是最常见的几种方式:
-
内联方式(Inline):您可以在 HTML 页面的
<script>
标签中直接编写 JavaScript 代码。这种方式适用于短小的脚本或者需要在特定位置执行的代码。<!DOCTYPE html> <html> <head> <title>Inline JavaScript Example</title> </head> <body> <h1>Hello, World!</h1> <script> // 在这里编写您的 JavaScript 代码 alert("Hello from inline JavaScript!"); </script> </body> </html>
-
外部文件方式(External):将 JavaScript 代码保存到外部的 .js 文件中,然后通过
<script>
标签的src
属性引入这个外部文件。这是更好的做法,特别是当您有多个页面需要共享相同的 JavaScript 代码时。<!DOCTYPE html> <html> <head> <title>External JavaScript Example</title> </head> <body> <h1>Hello, World!</h1> <script src="myscript.js"></script> </body> </html>
在上述示例中,
myscript.js
是包含 JavaScript 代码的外部文件,它应该位于与HTML文件相同的目录中,或者您可以使用绝对或相对路径来指定文件的位置。-
延迟(Deferred)和异步(Async)加载:在外部文件方式下,您可以使用
defer
或async
属性来控制脚本的加载和执行方式。defer
:脚本会在 HTML 文档解析完成后,但在DOMContentLoaded
事件触发前执行。多个defer
脚本会按照它们在页面中的顺序执行。async
:脚本会在下载完成后立即执行,而不会阻塞页面的解析。多个async
脚本的执行顺序不确定。
<script src="myscript.js" defer></script> <script src="myscript.js" async></script>
-
模块化方式(Module):如果您的 JavaScript 代码使用了 ES6 模块化,可以将脚本标记为模块并使用
type="module"
属性。<script type="module" src="main.js"></script>
这样的脚本将按照模块化的方式加载和执行,允许使用
import
和export
关键字来导入和导出模块。
-
方法
JS:function 方法名(参数列表){方法体}
-
三种定义方法的方式:
- function 方法名(参数列表){方法体}
- let 方法名 = function(参数列表){方法体}
- let 方法名 = new Function(“参数1”,“参数2”,“方法体”);
和页面相关的方法
-
通过选择器获取页面中的元素对象
- let 元素对象 = document.querySelector(“选择器”);
-
获取和修改控件的值
- input.value 获取
- input.value=“xxx” 修改
-
获取和修改元素的文本内容
- 变量.innerText 获取
- 变量.innerText = “xxx ” 修改
BOM和DOM
BOM(Browser Object Model)和 DOM(Document Object Model)都是与网页和浏览器相关的重要概念,它们分别表示浏览器对象模型和文档对象模型。
什么是BOM(Browser Object Model 浏览器对象模型)
-
概念:BOM 是一种表示浏览器窗口和其它浏览器功能的编程接口。它提供了访问和控制浏览器窗口属性(如大小和位置)、导航历史、浏览器标签、计时器、对话框、Cookie 等功能。BOM 不是 W3C 标准,因此它的具体实现在不同的浏览器中可能会有所不同。
-
用途:BOM 可用于控制浏览器窗口的行为,例如打开新窗口、关闭窗口、获取浏览器的窗口尺寸、操作浏览器历史记录等。它还可以与客户端存储、地理位置、屏幕亮度等进行交互。
-
例子:以下是一个使用 JavaScript 操作 BOM 的示例:
// 打开一个新窗口 var newWindow = window.open("https://www.example.com", "myWindow", "width=500,height=300"); // 获取当前窗口的尺寸 var width = window.innerWidth; var height = window.innerHeight; // 跳转到新的 URL window.location.href = "https://www.example.com";
常见的 BOM 对象:
BOM(浏览器对象模型)提供了一组对象,用于访问和控制浏览器窗口及其功能。以下是常见的 BOM 对象:
-
window 对象:
window
对象是 BOM 中的顶级对象,表示整个浏览器窗口。它包含许多属性和方法,用于操作浏览器窗口和访问浏览器的功能。例如,您可以使用window.open()
打开新窗口,使用window.location
获取当前页面的 URL,使用window.alert()
显示警告框,window.confirm(“xxx”)
弹出确认框,
window.prompt(“xxx”)
弹出文本框等。 -
document 对象:
document
对象代表当前加载的网页文档,它提供了访问和操作文档内容的方法。通过document
对象,您可以访问和修改页面的元素、属性、样式以及文档结构。例如,使用document.getElementById()
可以获取页面上的元素。 -
navigator 对象:
navigator
对象包含有关浏览器的信息,例如浏览器的名称、版本、操作系统等。这可以用于检测用户的浏览器和环境。 -
screen 对象:
screen
对象提供有关用户屏幕的信息,如屏幕的宽度、高度、颜色深度等。这些信息可以用于调整网页的布局和样式以适应不同的屏幕大小。 -
location 对象:
location
对象表示当前页面的 URL,并提供了许多方法来操作浏览器的历史记录、导航和重定向。例如,您可以使用location.href
来获取当前页面的 URL,或者使用location.reload()
刷新页面。 -
history 对象:
history
对象允许您访问浏览器的历史记录,并在不刷新页面的情况下进行导航。您可以使用history.length()
返回历史页面的数量,history.back()
和history.forward()
来导航到前一个或后一个页面,以及使用history.go()
跳转到特定的历史记录项。 -
console 对象:
console
对象用于在浏览器的控制台中输出日志信息,方便调试和错误追踪。常见的方法包括console.log()
、console.error()
、console.warn()
等。 -
localStorage 和 sessionStorage 对象:这两个对象用于客户端存储数据,可以在浏览器中存储数据并在会话之间保持持久性。
localStorage
存储的数据在浏览器关闭后仍然可用,而sessionStorage
存储的数据在会话结束后被清除。 -
Cookies 对象:
document.cookie
属性用于读取和设置浏览器的 Cookies。Cookies 是一种用于在客户端存储小段数据的机制,通常用于跟踪用户会话和存储用户首选项。
什么是DOM(Document Object Model 文档对象模型)
-
概念:DOM 是一种树状结构的编程接口,表示网页文档的结构,允许开发者使用编程语言(如 JavaScript)来访问、操作和修改网页的内容、结构和样式。DOM 将 HTML 或 XML 文档解析为一个由节点组成的树状结构,其中每个节点代表文档中的一个元素、属性或文本内容。
-
用途:DOM 可以让开发者使用脚本语言来动态地更新网页内容、响应用户操作、获取和修改网页元素的属性和值。通过 DOM,开发者可以实现交互性、动态性和实时性的网页应用程序。
-
例子:以下是一个使用 JavaScript 操作 DOM 的简单示例:
// 获取一个元素 var element = document.getElementById("myElement"); // 修改元素的文本内容 element.innerHTML = "Hello, DOM!"; // 创建元素对象 let d = document.createElement(“div”); // 添加元素到某个元素里面 d.append("hello");
总结
- DOM 是用于操作网页内容和结构的编程接口,而 BOM 是用于操作浏览器窗口和浏览器功能的编程接口。
- DOM 允许开发者访问和操作网页的元素和内容,从而实现网页的交互性和动态性。
- BOM 允许开发者控制浏览器窗口的行为以及与浏览器的其它功能进行交互。
- DOM 是 W3C 的标准,而 BOM 不是,因此 BOM 的实现在不同浏览器中可能会有所不同。
前端MVC设计模式
MVC设计模式就是将实现前端业务的所有代码划分为三部分
- M:model 模型 , 对应数据相关代码
- V:View 视图, 对应的是页面标签相关
- C:Controller 控制器, 对应的是将数据显示到页面中的过程代码
前端MVC设计模式存在弊端:在Controller控制器部分,需要频繁的进行DOM相关操作(遍历查找元素),比较浪费资源 , MVVM设计模式可以解决此问题
前端MVVM设计模式
MVVM设计模式也是将实现前端业务的所有代码划分为三部分
- M:model 模型 , 对应数据相关代码
- V:View 视图, 对应的是页面标签相关
- VM:视图模型, 视图模型负责将页面中可能发生改变的元素和某个变量在内存中进行绑定, 并对变量进行监听,当变量发生改变时,会从内存中找到和变量所对应的元素, 让元素进行改动,这样就不用像MVC设计模式中通过遍历查找的方式查找元素了,从而提高执行的效率。