模块化 模块化概念将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起; 块的内部数据与实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信。 作用避免命名冲突、避免全局变量污染 便于代码编写和维护 早期的模块化立即执行函数 通过函数作用域解决了命名冲突、污染全局的问题 123(function (a) { // 在这里面声明各种变量、函数都不会污染全 2022-06-22 JS > 基础 #JS #模块化
AJAX AJAX基本概念Asynchronous JavaScript And XML(异步的 JS 和 XML) AJAX 是在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页。(无刷新获取数据) 优点与缺点优点: 无需刷新页面与服务端通信 允许根据用户事件来更新部分页面内容 缺点: 没有浏览历史、不能回退 存在跨域问题 不易SEO XMLHttpRequest传统Ajax 指的是 2022-06-21 JS > AJAX #JS #AJAX #axios
VueRouter VueRouter路由,vue是单页面应用,通过组件来显示不同的视图,路由就是通过设定路径来控制组件的显示与隐藏,实现页面的跳转与切换。 一个路由就是一个键值对,键是路径,值是组件。 VueRouter的作用vue的核心概念之一:页面组件化、SPA。 由于vue是单页面应用,且每个功能模块都可以封装为组件,因此不可能和多页面应用一样直接通过超链接跳转,换句话说只有一个html,还能跳转到哪儿去?那 2022-06-18 Vue > 路由 #Vue #路由
垃圾回收 垃圾回收为什么需要垃圾回收V8引擎已经帮我们自动进行了内存的分配和管理,JS 不需要手动开辟和释放内存。 存在写代码的过程中不够严谨而容易引发内存泄漏的问题 V8引擎的内存限制JS 是单线程,垃圾回收的过程阻碍了主线程逻辑的执行。会导致主线程的等待时间长,浏览器长时间得不到响应。 V8引擎直接粗暴的限制了堆内存的大小。在浏览器端一般也不会遇到需要操作几个G内存这样的场景。在node端我们可以手动调 2022-06-18 JS > 基础 #JS #垃圾回收 #V8引擎
JSON JSONJSON是什么是一种数据格式,之所以需要这样一种数据格式,是因为前后端的编程语言不同,数据的表示形式也不同,所以需要有这样一种格式来作为桥梁传递数据。 JSON 和 JS 对象的区别JSON和JS有相同的语法,JSON和JS对象也非常的像,但还是有一定区别的,JSON的要求更多一些,区别在于: 在我们前端向后端发送数据时,需要将JS对象转换为一个JSON字符串,可以通过JSON.str 2022-06-17 JS > 基础 #JS #JSON
terser是如何压缩js代码的 js代码压缩整体策略通过 AST 分析,根据选项配置一些策略,来生成一颗更小体积的 AST 并生成代码。 压缩 AST 的方式目前前端工程化中使用 terser和 swc进行 JS 代码压缩,他们拥有相同的 API。 常见用以压缩 AST 的几种方案如下: 去除多余字符: 空格,换行及注释 1234567// 压缩前function sum (a, b) { return a + 2022-06-17 Webpack #webpack #terser
深拷贝与浅拷贝 对象的深拷贝与浅拷贝什么是浅拷贝只拷贝了数据对象的第一层,深层次的数据值与原始数据会互相影响(拷贝后的数据与原始数据还存有关联) 常见浅拷贝的方式:Object.assign()、扩展运算符 123456789const obj1 = { name: 'dog', info: { age: 3 } }const obj2 = Object 2022-06-14 JS > 基础 #JS #深拷贝与浅拷贝 #手撕代码
两栏布局/圣杯布局/双飞翼布局 两栏布局HTML 结构 1234<div class="container"> <div class="left">左</div> <div class="right">右</div></div> 1.浮动 + margin-left 左边元素宽度固 2022-06-11 CSS #CSS #布局
Promise Promise是什么Promise 是 JS 中进行异步编程的新解决方案(旧方案是单纯使用回调函数) 从语法上来说: Promise 是一个构造函数 从功能上来说: promise 对象用来封装一个异步操作并可以获取其成功/失败的结果值 状态pending resolved/fulfilled rejected 无论变为成功还是失败, 都会有一个结果数据 成功的结果数据一般称为 2022-06-10 JS > AJAX #异步编程 #Promise
输入URL后浏览器发生了什么变化 输入 url 后浏览器发生了什么变化步骤简单总结 网络请求 DNS 查询(得到 IP),建立 TCP 连接(三次握手) 浏览器发送 HTTP 请求 收到请求响应,得到 HTML(解析 HTML 过程中,遇到静态资源还会继续发起网络请求) 解析(字符串 -> 结构化数据) HTML 构建 DOM 树 CSS 构建 CSSOM 树 两者结合形成 render tree 渲染 2022-06-10 HTTP #HTTP #DNS #TCP/UDP #缓存 #浏览器解析