摘要: 随着新的一年的钟声敲响,祝大家2024年元旦快乐!愿你的代码如同流水般顺畅,bug远离你的键盘。在这个充满希望的新年里,愿你在编程的世界里发现更多的乐趣和创新。让我们一起在代码的海洋里航行,探索未知的领域,创造出更加精彩的作品。愿你在新的一年里,不仅技术日新月异,也能享受生活的每一个美好瞬间。新年快 阅读全文
posted @ 2024-01-01 20:56 HuangBingQuan 阅读(37) 评论(0) 推荐(0) 编辑
摘要: ### 编译结果分析 #### 观察编译结果后,模拟打包模块 ``` // 改对象中保存了所有的模块,以及模块对应的代码 var modules = ((modules)=> { var moduleExports = {}; // 用于缓存模块的导出结果 // require函数相当于是运行一个模 阅读全文
posted @ 2023-04-19 16:44 HuangBingQuan 阅读(41) 评论(0) 推荐(0) 编辑
摘要: Vue数据响应式底层原理 数据响应式定义:(当数据变化的时候,会自动运行一些相关函数) 原理就是通过Object.defineProperty() 对属性进行劫持,当访问该属性时我们就收集依赖,当数据发生改变后就派发更新 function observe(obj) { for (const key 阅读全文
posted @ 2023-02-19 21:59 HuangBingQuan 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 深度克隆(深拷贝) export const deepClone = (targetObj)=> { return new Promise(resolve => { const { port1, port2 } = new MessageChannel(); port1.postMessage(ta 阅读全文
posted @ 2022-12-29 23:54 HuangBingQuan 阅读(78) 评论(0) 推荐(0) 编辑
摘要: git 常用命令。 创建SSH Key $ ssh-keygen -t rsa -C "youremail@example.com" 配置用户信息 $ git config --global user.name "Your Name" $ git config --global user.email 阅读全文
posted @ 2024-12-11 12:27 HuangBingQuan 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 为防止不符合规范的数据存入数据库,在用户对数据进行插入、修改、删除等操作时,MySQL提供了一种机制来检查数据库中的数据是否满足规定的条件,以保证数据库中数据的准确性和一致性,这种机制就是完整性约束。 MySQL中主要支持以下几种种完整性约束,如表所示。 其中Check约束是MySQL8中提供的支持 阅读全文
posted @ 2024-12-07 15:22 HuangBingQuan 阅读(30) 评论(0) 推荐(0) 编辑
摘要: DDL修改,删除数据库表 -- 修改表结构 -- 增加一列 ALTER TABLE t_student ADD score DOUBLE(5, 2); -- 增加一列(放在最前面) ALTER TABLE t_student ADD score DOUBLE(5, 2) FIRST; -- 增加一列 阅读全文
posted @ 2024-12-07 14:16 HuangBingQuan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 修改,删除数据 DML -- 修改操作 UPDATE t_student SET age = 23 WHERE sno = 2056035; -- 删除操作 DELETE FROM t_student WHERE sno = 2056035; 总结 关键字,表名,字段名不区分大小写。 默认情况下,内 阅读全文
posted @ 2024-12-07 13:42 HuangBingQuan 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 插入数据 SELECT * FROM t_student; -- 在t_student数据库表中插入数据 INSERT INTO t_student VALUES (2056035, '张三', '男', 18, NOW(), '移动2002', '666666@163.com'); INSERT 阅读全文
posted @ 2024-12-06 23:56 HuangBingQuan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: hash模式 <html> <head> <meta charset="UTF-8"> <title>Hash</title> <style> .nav_container { display: grid; justify-content: center; width: 100%; height: 阅读全文
posted @ 2024-11-27 17:09 HuangBingQuan 阅读(5) 评论(0) 推荐(0) 编辑
摘要: vite.config.js中配置esbuild import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' export 阅读全文
posted @ 2024-11-27 15:57 HuangBingQuan 阅读(9) 评论(0) 推荐(0) 编辑
摘要: webpack+Terser 代码压缩 // webpack.config.js const TerserPlugin = require('terser-webpack-plugin'); const OptimizeCSSAssetsPlugin = require('optimize-css- 阅读全文
posted @ 2024-11-15 15:35 HuangBingQuan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 圣杯模式 圣杯模式的核心就是拿一个空的构造函数去当中间人,解决组合模式的缺陷。 举个例子 function Person(name, age) { this.name = name??""; this.age = age??""; }; Person.prototype.say = function 阅读全文
posted @ 2024-09-16 22:29 HuangBingQuan 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 组合模式 前置知识 原型 原型链 apply 举个例子 function Person(name, age) { this.name = name??""; this.age = age??""; }; Person.prototype.say = function () { console.log 阅读全文
posted @ 2024-09-16 19:18 HuangBingQuan 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 数据模式,结构,Props Vue双向绑定,修改数据自动更新视图,React单向数据流,需要手动setState。 Vue template 结构表现分离,React jsx 结构表现融合。 Vue Props 要声明才能使用,React 不需要声明直接使用。 阅读全文
posted @ 2024-09-04 14:48 HuangBingQuan 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 使用ref 可以使用 ref 创建一个响应式的数据: <template> <div>{{ name }}</div> </template> <script setup> import { ref } from 'vue' // 现在的 name 就是一个响应式数据 let name = ref( 阅读全文
posted @ 2024-09-03 00:20 HuangBingQuan 阅读(14) 评论(0) 推荐(0) 编辑
摘要: // 该函数就是接受不了多个参数 // function add(x, y) { // return x + y; // } // console.log(add(1, 2)); // 3 // console.log(add(5, 7)); // 12 // 接下来我们要将其进行柯里化 // fu 阅读全文
posted @ 2024-08-06 09:51 HuangBingQuan 阅读(11) 评论(0) 推荐(1) 编辑
摘要: /* * @Author: HuangBingQuan <17671241237@163.com> * @Date: 2024-07-07 21:16:08 * @LastEditTime: 2024-07-08 12:56:45 * @FilePath: /myCdn/index.js */ co 阅读全文
posted @ 2024-07-08 13:11 HuangBingQuan 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 所有的webpack内置插件都作为webpack的静态属性存在的,使用下面的方式即可创建一个插件对象 const webpack = require("webpack") new webpack.插件名(options) DefinePlugin 全局常量定义插件,使用该插件通常定义一些常量值,例如 阅读全文
posted @ 2024-06-24 13:15 HuangBingQuan 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 解决方法 配置vite-env追加element的类型文件 /// <reference types="element-plus/global" /> 阅读全文
posted @ 2024-06-22 18:44 HuangBingQuan 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 环境 直接跑一个vue组件,正常的命令是这样的 vue serve src/components/demo1.vue 输出提示: Command vue serve requires a global addon to be installed. Please run npm i -g @vue/c 阅读全文
posted @ 2024-06-13 22:26 HuangBingQuan 阅读(7) 评论(0) 推荐(0) 编辑
摘要: Webpack简介 Webpack是基于模块化的打包(构建)工具,它把一切视为模块; 它通过一个开发时态的入口模块为起点,分析出所有的依赖关系,然后经过一系列过程(压缩,合并),最终生成运行时态的文件。 webpack的特点: 为前端工程化而生:webpack致力于解决前端工程化,特别是浏览器端工程 阅读全文
posted @ 2024-06-03 13:10 HuangBingQuan 阅读(11) 评论(0) 推荐(0) 编辑
摘要: plugin loader的功能定位是转换代码,而一些其他的操作难以使用loader完成,比如: 当webpack生成文件时,顺便多生成一个说明描述文件 当webpack编译启动时,控制台输出一句话表示webpack启动了 当xxxx时,xxxx 这种类似的功能需要把功能嵌入到webpack的编译流 阅读全文
posted @ 2024-06-03 12:29 HuangBingQuan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: const listeners = {}; export default { // 监听某一个事件 $on(eventName, handler) { if(!listeners[eventName]) { listeners[eventName] = new Set(); } listeners[ 阅读全文
posted @ 2024-06-01 15:50 HuangBingQuan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Array.prototype.sort((a, b)=> a.localeCompare(b)) ### 举个例子 ['b', 'a', 'd', 'c'].sort((a, b) => a.localeCompare(b)) 阅读全文
posted @ 2024-05-22 14:25 HuangBingQuan 阅读(12) 评论(0) 推荐(0) 编辑
摘要: export const AutoScale = (targetEl, options, root)=> { const el = document.querySelector(targetEl); if(!el) throw new Error("初始化失败"); const { width, h 阅读全文
posted @ 2024-05-14 15:55 HuangBingQuan 阅读(13) 评论(0) 推荐(0) 编辑
摘要: const fs = require('fs'); const path = require('path'); class File { constructor(fileName, name, ext, isFile, size, createTime, updateTime) { this.fil 阅读全文
posted @ 2024-05-10 13:12 HuangBingQuan 阅读(11) 评论(0) 推荐(0) 编辑
摘要: clip-path: polygon(50% 0, 0 100%, 100% 100%) 阅读全文
posted @ 2024-04-29 10:42 HuangBingQuan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: /** * 导出excel * * @param {blob} data 后端返回的文件流 * @param {String} fileName 文件名 */ export const exportFile = (data, fileName) => { const binaryData = []; 阅读全文
posted @ 2024-04-26 12:51 HuangBingQuan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 迭代器 背景知识 什么是迭代? 从一个数据集合中按照一定的顺序,不断取出数据的过程 迭代和遍历的区别? 迭代强调的是依次取数据,并不保证取多少,也不保证把所有的数据取完 遍历强调的是要把整个数据依次全部取出 迭代器 对迭代过程的封装,在不同的语言中有不同的表现形式,通常为对象 迭代模式 一种设计模式 阅读全文
posted @ 2024-04-16 10:14 HuangBingQuan 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 前言:为了更好的代码提示,我们可以使用ts的@types/node包来增强代码提示 yarn add @types/node -D || npm i @types/node -D || pnpm i @types/node -D 在浏览器 JavaScript 中全局对象是 window, 而 No 阅读全文
posted @ 2024-04-10 13:23 HuangBingQuan 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 什么叫做响应式呢? 实际上是指一套代码能够在不同的设备下有着不一样的表现。响应式设计依托于 CSS3 中的媒体查询,通过查询当前设备的一个尺寸信息,然后应用不同的样式。 响应式设计在刚推出时非常的火,因为那个时候也没有什么专门针对移动设备设计的页面,而且一套代码就能解决 PC、平板和手机不同设备的各 阅读全文
posted @ 2024-04-03 14:34 HuangBingQuan 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 使用Key 对于通过循环生成的列表,应该给列表每一项一个稳定且唯一的key,这个有利于在列表变动时,尽量减少删除,新增,改动元素。 使用冻结的对象 冻结的对象不会被响应化,应用场景(当一个列表无需变化时可以使用) 使用函数式组件 在模板中 添加 functional标记 在js中添加function 阅读全文
posted @ 2024-03-31 20:55 HuangBingQuan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: v-if能够控制是否生成vnode,也就间接控制了是否生成对应的dom。当v-if为true时,会生成对应的vnode,并生成对应的dom元素;当其为false时,不会生成对应的vnode,自然不会生成任何的dom元素。 v-show始终会生成vnode,也就间接导致了始终生成dom。它只是控制do 阅读全文
posted @ 2024-03-26 16:53 HuangBingQuan 阅读(7) 评论(1) 推荐(1) 编辑
摘要: 分析打包结果 由于vue-cli是利用webpack进行打包,我们仅需加入一个webpack插件webpack-bundle-analyzer即可分析打包结果 // vue.config.js const BundleAnalyzerPlugin = require("webpack-bundle- 阅读全文
posted @ 2024-03-26 10:09 HuangBingQuan 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 在本地环境配置 https 证书 在使用 HTML5 的 API 时,很多 API 只能在 https 保证安全的情况下才能开启。这就要求我们在本地开发环境也能够配置 https,否则你需要每次部署到配有 https 的测试环境中才能看到预览效果,这对开发的敏捷度造成了极大的干扰。 本文和 WebA 阅读全文
posted @ 2024-03-25 17:05 HuangBingQuan 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 判断xy是否变化了 true 变化了 false没变化 // 此写法可能会出bug 因为没有考虑0和NaN的情况 const hasChanged = (x, y)=> { return x !== y; } // 最终写法 const hasChanged = (x, y)=> { if(x y) 阅读全文
posted @ 2024-03-18 21:34 HuangBingQuan 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 虚拟DOM 什么是虚拟DOM 虚拟DOM本质上就是一个普通的Js对象,用于描述视图的界面结构 为什么需要虚拟DOM树 主要为解决渲染效率问题。 在vue中,渲染试图会调用render函数,这种渲染不仅发生在组件创建时,同时发生在试图依赖的数据更新时。如果在渲染时,直接使用真实DOM,由于真实DOM的 阅读全文
posted @ 2024-03-13 12:33 HuangBingQuan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 比如 npx serve 执行本地的 serve命令,如果serve没有安装,则npx会自动的、临时的安装serve,安装好后,自动运行serve命令 阅读全文
posted @ 2024-02-18 00:07 HuangBingQuan 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 防抖与节流的本质就是:通过闭包特性减少操作次数 举一个现实生活中的例子 // 两个大巴的故事 // 防抖, // A大巴:车上上去一个人,五分钟之内不上人,发车。 // 节流。 // B大巴:车上上去一个人之后,五分钟之后发车。 // 发车!网络请求(A => B) 提高利用率 减少B的压力。 // 阅读全文
posted @ 2024-02-13 18:46 HuangBingQuan 阅读(13) 评论(0) 推荐(0) 编辑
摘要: Promise.resolve = new Promise(()=> resolve()) 应用场景 我们可以使用Promise.resolve来完成模拟数据 function getData() { return Promise.resolve([ { id: 0, name: "张三"}, { 阅读全文
posted @ 2024-01-01 21:07 HuangBingQuan 阅读(6) 评论(0) 推荐(0) 编辑
摘要: contenteditable 全局属性 contenteditable 是一个枚举属性,表示元素是否可被用户编辑。如果可以,浏览器会修改元素的组件以允许编辑。 // 注入 打开F12 浏览器输入 document.documentElement.setAttribute('contentedita 阅读全文
posted @ 2023-12-27 16:54 HuangBingQuan 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 文件上传 流程: 客户端将文件数据发送给服务器 服务器保存上传的文件数据到服务器端 服务器响应给客户端一个文件访问地址 测试地址:http://xxx/api/upload 键的名称(表单域名称):imagefile 请求方法:POST 请求的表单格式:multipart/form-data 请求体 阅读全文
posted @ 2023-12-16 23:29 HuangBingQuan 阅读(18) 评论(0) 推荐(0) 编辑