何时需要import css文件?怎么知道需要导入哪些css文件?为什么webpack不提示CSS导入?(导入css导入规则、css导入规范)
文章目录
- 何时需要import css文件?
- **1. 使用模块化工具(如 Webpack、Vite、Rollup 等)**
- **适用场景:**
- **示例:**
- **优点:**
- **2. 动态加载 CSS(按需加载)**
- **适用场景:**
- **示例:**
- **优点:**
- **3. 全局样式注入(如框架或库的初始化)**
- **适用场景:**
- **示例:**
- **优点:**
- **4. 动态生成样式(运行时修改样式规则)**
- **适用场景:**
- **示例:**
- **优点:**
- **5. 与 CSS 预处理器结合使用**
- **适用场景:**
- **示例:**
- **优点:**
- **6. 需要依赖 CSS 的功能实现**
- **适用场景:**
- **示例:**
- **优点:**
- **总结:何时需要导入 CSS 文件?**
- **注意事项**
- 怎么知道需要导入哪些css文件?
- CSS文件应该导入到哪些JS文件中
- 1. 组件关联方式(推荐)
- 2. 页面级导入
- 3. 入口文件导入
- 4. 动态导入(按需加载)
- 实际应用建议
- 1. **按照功能组织**:将CSS文件与使用这些样式的JavaScript组件放在一起
- 2. **避免重复导入**:同一个CSS文件不需要在多个地方导入,webpack会处理去重
- 3. **考虑加载顺序**:全局CSS应该在组件CSS之前加载,以便组件CSS可以覆盖全局样式
- 4. **使用CSS Modules**:这可以避免样式冲突,每个组件导入自己的样式,不会影响其他组件
- 5. **区分全局与局部样式**:
- 为什么webpack不提示CSS导入?
- 为什么webpack不提示CSS导入
- 1. **webpack是基于依赖图的打包工具**:它只处理明确声明的依赖关系,不会自动扫描项目并猜测哪些文件应该关联在一起
- 2. **webpack不知道你的意图**:它不能判断某个CSS文件是属于哪个组件或页面的,这完全取决于你的设计和组织方式
- 3. **静态分析的局限性**:webpack无法通过静态分析确定HTML中使用了哪些CSS类,因此不能推断出CSS的依赖关系
- 如何系统地管理CSS导入
- 1. 建立明确的项目结构
- 2. 遵循导入规则
- 3. 使用ESLint规则
- 4. 使用工具自动化
- 1. **CSS Modules**:使用CSS Modules时,你必须导入样式才能使用类名,这会"强制"你创建导入
- 2. **样式组件库**:如styled-components,将样式直接写在JS文件中,避免单独的CSS文件
- 3. **自动导入工具**:考虑开发一个webpack插件或使用现有工具来扫描项目并生成必要的导入语句
- 5. 使用webpack的特殊功能
- 1. **全局样式的处理**:对于全局样式,你可以使用webpack的`entry`配置直接指定CSS文件
- 2. **使用模式匹配**:在某些场景下,可以使用webpack的`require.context`批量导入CSS
- 实用建议
- 1. **切换到CSS-in-JS方案**:如styled-components、emotion等,避免单独的CSS文件
- 2. **使用框架的约定**:像Next.js、Nuxt.js这样的框架有自己的CSS导入约定,可以简化管理
- 3. **创建自动化脚本**:编写脚本自动扫描项目并为组件生成对应的CSS导入语句
- 4. **明确的命名约定**:例如,`Button.js`对应`Button.css`,通过IDE的文件搜索功能也能很快找到对应关系
何时需要import css文件?
在 JavaScript 中,是否需要导入 CSS 文件取决于具体的使用场景和项目需求。以下是 需要导入 CSS 文件 的常见情况:
1. 使用模块化工具(如 Webpack、Vite、Rollup 等)
在现代前端项目中,如果使用模块化工具(如 Webpack),可以通过 import
直接导入 CSS 文件。这种方式会将 CSS 与 JavaScript 代码一起打包,便于模块化管理和热更新。
适用场景:
- 组件化开发:在 Vue、React 等框架中,组件的样式可以直接通过
import
导入。 - 代码分割:按需加载 CSS 文件,优化性能。
- CSS 模块化:使用 CSS Modules 避免样式冲突。
示例:
// 在 JavaScript 中直接导入 CSS 文件
import './styles/main.css';// 或者在 Vue/React 组件中导入
import './MyComponent.css';
优点:
- 简化资源管理,CSS 和 JS 代码统一维护。
- 支持代码分割和懒加载(如
import()
动态导入)。 - 与构建工具集成,自动处理路径和依赖。
2. 动态加载 CSS(按需加载)
当需要根据用户交互或条件动态加载 CSS 文件时,可以使用 JavaScript 动态创建 <link>
标签或调用 import()
方法。
适用场景:
- 主题切换:用户选择不同主题时加载对应的 CSS 文件。
- 懒加载资源:在用户操作后才加载某些页面的样式(如下拉菜单、弹窗)。
- 按需加载模块:某些功能模块的样式仅在需要时加载。
示例:
// 动态创建 <link> 标签
function loadCSS(url) {const link = document.createElement('link');link.rel = 'stylesheet';link.href = url;document.head.appendChild(link);
}// 按需加载
document.getElementById('theme-toggle').addEventListener('click', () => {loadCSS('/themes/dark.css');
});// 或使用 import() 动态加载(需构建工具支持)
async function loadDarkTheme() {await import('./dark-theme.css');
}
优点:
- 减少初始加载时间,提升页面性能。
- 灵活控制样式加载时机。
3. 全局样式注入(如框架或库的初始化)
在某些框架(如 Nuxt.js、Vue CLI、Create React App)中,需要将全局 CSS 文件引入到项目中,确保所有页面或组件都能使用这些样式。
适用场景:
- 全局字体和变量:定义全局字体、颜色、间距等基础样式。
- 第三方库样式:引入 Bootstrap、Ant Design 等 UI 库的 CSS 文件。
- 框架默认样式:覆盖浏览器默认样式(如
reset.css
)。
示例:
-
在 Nuxt.js 中配置全局 CSS:
// nuxt.config.js export default {css: ['@/assets/css/global.css','bootstrap/dist/css/bootstrap.css'] }
-
在 Vue CLI 中引入全局 CSS:
// main.js import './assets/global.css';
优点:
- 确保所有页面共享一致的样式。
- 避免重复代码,提高开发效率。
4. 动态生成样式(运行时修改样式规则)
当需要在运行时动态生成或修改 CSS 规则时,可以通过 JavaScript 创建 <style>
标签并注入样式。
适用场景:
- 动态主题生成:根据用户偏好(如颜色、字体大小)生成自定义样式。
- 响应式设计:根据屏幕尺寸动态调整样式。
- 样式覆盖:在运行时覆盖某些外部库的默认样式。
示例:
// 动态创建 <style> 标签
function addDynamicStyle(css) {const style = document.createElement('style');style.innerHTML = css;document.head.appendChild(style);
}// 根据用户选择生成样式
const userColor = '#ff0000';
addDynamicStyle(`.custom-button {background-color: ${userColor};}
`);
优点:
- 灵活控制样式,适应动态需求。
- 无需预先定义所有样式规则。
5. 与 CSS 预处理器结合使用
在使用 Sass、Less 等 CSS 预处理器时,通常需要通过构建工具将 .scss
或 .less
文件编译为 CSS,并通过 import
引入到 JavaScript 中。
适用场景:
- 模块化样式:将样式拆分为多个文件,按需导入。
- 变量和混合:利用预处理器的变量、函数等功能提高开发效率。
示例:
// 在 JavaScript 中导入 SCSS 文件
import './styles/main.scss';// SCSS 文件内容(main.scss)
$primary-color: #007bff;
.button {background-color: $primary-color;
}
优点:
- 提高代码可维护性和复用性。
- 支持复杂的样式逻辑(如嵌套、条件判断)。
6. 需要依赖 CSS 的功能实现
某些 JavaScript 功能的实现依赖于 CSS 样式,例如动画、布局计算等。此时需要确保 CSS 文件已加载,才能正确执行相关逻辑。
适用场景:
- 动画效果:使用 CSS 动画(如
@keyframes
)时,需要先加载对应的 CSS 文件。 - 布局计算:通过
getComputedStyle
读取元素的最终样式时,必须确保样式已加载。 - 样式依赖的交互:某些交互逻辑(如按钮的 hover 效果)依赖 CSS 样式。
示例:
// 等待 CSS 加载后再执行动画
function initAnimation() {const element = document.getElementById('animated-element');element.classList.add('animate');
}// 确保 CSS 已加载
window.addEventListener('load', initAnimation);
优点:
- 避免因样式未加载导致的功能异常。
- 确保交互逻辑与样式同步。
总结:何时需要导入 CSS 文件?
场景 | 是否需要导入 CSS 文件 | 说明 |
---|---|---|
模块化开发(Webpack/Vue/React) | ✅ 需要 | 通过 import 将 CSS 与组件绑定,便于打包和管理。 |
动态加载(主题切换/懒加载) | ✅ 需要 | 根据条件动态创建 <link> 或使用 import() 加载 CSS。 |
全局样式(框架初始化) | ✅ 需要 | 在入口文件或框架配置中引入全局 CSS,确保所有页面可用。 |
动态生成样式(运行时修改) | ✅ 需要 | 通过 JavaScript 创建 <style> 标签,动态注入样式规则。 |
使用 CSS 预处理器 | ✅ 需要 | 通过构建工具将 .scss/.less 文件编译为 CSS 并导入。 |
样式依赖的功能实现 | ✅ 需要 | 确保 CSS 已加载后再执行依赖样式的逻辑(如动画、布局计算)。 |
注意事项
- 路径问题:确保导入的 CSS 文件路径正确,尤其是相对路径和绝对路径的使用。
- 加载顺序:动态加载 CSS 时,注意样式生效的时机(如
onload
事件)。 - 性能优化:避免不必要的 CSS 加载,减少阻塞页面渲染的风险。
- 构建工具配置:在使用
import
导入 CSS 时,需确保构建工具(如 Webpack)已正确配置相关 loader(如style-loader
和css-loader
)。
怎么知道需要导入哪些css文件?
在前端工程中使用webpack打包CSS时,确实需要在JavaScript文件中导入CSS文件,这可能会让人感到困惑。我来解释一下这个问题:
CSS文件应该导入到哪些JS文件中
这个问题的答案取决于你的项目结构和需求,没有固定的规则,主要有以下几种常见方式:
1. 组件关联方式(推荐)
在组件化开发中,CSS通常与对应的组件JS文件关联:
// Button.js
import './Button.css'; // 导入该组件的样式export default function Button() {return <button className="my-button">点击我</button>;
}
这种方式的优点是:
- 样式与组件紧密关联,便于维护
- 只有当组件被使用时,对应的CSS才会被加载
- 组件化开发的最佳实践
2. 页面级导入
将特定页面的样式导入到对应的页面JS文件中:
// HomePage.js
import './HomePage.css'; // 导入首页样式export default function HomePage() {// 页面组件代码
}
3. 入口文件导入
对于全局样式,可以在应用的入口文件中导入:
// index.js (应用入口)
import './reset.css'; // 导入重置样式
import './global.css'; // 导入全局样式
import './theme.css'; // 导入主题样式// 应用启动代码
4. 动态导入(按需加载)
对于特定场景下才需要的样式,可以使用动态导入:
// 当用户点击进入深色模式时,才加载深色主题样式
function enableDarkMode() {import('./dark-theme.css').then(() => {console.log('深色主题已加载');});
}
实际应用建议
1. 按照功能组织:将CSS文件与使用这些样式的JavaScript组件放在一起
2. 避免重复导入:同一个CSS文件不需要在多个地方导入,webpack会处理去重
3. 考虑加载顺序:全局CSS应该在组件CSS之前加载,以便组件CSS可以覆盖全局样式
4. 使用CSS Modules:这可以避免样式冲突,每个组件导入自己的样式,不会影响其他组件
// Button.js 使用CSS Modules
import styles from './Button.module.css';export default function Button() {return <button className={styles.button}>点击我</button>;
}
5. 区分全局与局部样式:
- 全局样式:重置样式、主题变量、公共样式 → 入口文件导入
- 局部样式:组件样式、页面特定样式 → 对应组件/页面文件导入
这种模块化的CSS导入方式可能一开始不习惯,但它使CSS的管理更加清晰,也是现代前端开发的主流方式。webpack通过这种导入关系确定哪些CSS需要被提取和打包。
为什么webpack不提示CSS导入?
可是即使我不导入它也没有提示,也没有报错信息,但是我确实是需要导入的,因为我需要打包,但是它不提示我要把哪些css文件导入到哪些css,这不是很奇怪吗?
你提出了一个很好的问题!确实,webpack不会自动提示你需要导入哪些CSS文件,这可能会让人感到困惑。我来解释一下为什么会这样:
为什么webpack不提示CSS导入
1. webpack是基于依赖图的打包工具:它只处理明确声明的依赖关系,不会自动扫描项目并猜测哪些文件应该关联在一起
2. webpack不知道你的意图:它不能判断某个CSS文件是属于哪个组件或页面的,这完全取决于你的设计和组织方式
3. 静态分析的局限性:webpack无法通过静态分析确定HTML中使用了哪些CSS类,因此不能推断出CSS的依赖关系
如何系统地管理CSS导入
既然webpack不会提示我们,我们需要自己建立一个系统来管理CSS导入:
1. 建立明确的项目结构
src/components/Button/Button.jsButton.css <- 与组件同名、同目录Card/Card.jsCard.csspages/Home/Home.jsHome.css <- 与页面同名、同目录styles/global.css <- 全局样式variables.css <- 样式变量index.js <- 入口文件
2. 遵循导入规则
建立项目约定,例如:
- 所有组件必须导入自己的CSS文件
- 全局CSS在入口文件中导入
- 页面特定的CSS在页面组件中导入
3. 使用ESLint规则
可以配置ESLint规则来强制执行CSS导入:
// .eslintrc.js
module.exports = {plugins: ['import'],rules: {// 确保每个组件文件都导入了同名的CSS文件'import/named': 'error',// 可以自定义规则检查特定文件是否导入了CSS}
};
4. 使用工具自动化
有一些工具可以帮助管理CSS导入:
1. CSS Modules:使用CSS Modules时,你必须导入样式才能使用类名,这会"强制"你创建导入
import styles from './Button.css';
// 必须导入才能使用: <button className={styles.button}>
2. 样式组件库:如styled-components,将样式直接写在JS文件中,避免单独的CSS文件
import styled from 'styled-components';
const Button = styled.button`background: blue;color: white;
`;
3. 自动导入工具:考虑开发一个webpack插件或使用现有工具来扫描项目并生成必要的导入语句
5. 使用webpack的特殊功能
1. 全局样式的处理:对于全局样式,你可以使用webpack的entry
配置直接指定CSS文件
// webpack.config.js
module.exports = {entry: {main: ['./src/index.js', './src/styles/global.css']}
};
2. 使用模式匹配:在某些场景下,可以使用webpack的require.context
批量导入CSS
// 导入所有全局样式
const requireGlobalStyles = require.context('./styles', false, /\.css$/);
requireGlobalStyles.keys().forEach(requireGlobalStyles);
实用建议
如果你觉得手动管理CSS导入很麻烦,可以考虑这些替代方案:
1. 切换到CSS-in-JS方案:如styled-components、emotion等,避免单独的CSS文件
2. 使用框架的约定:像Next.js、Nuxt.js这样的框架有自己的CSS导入约定,可以简化管理
3. 创建自动化脚本:编写脚本自动扫描项目并为组件生成对应的CSS导入语句
4. 明确的命名约定:例如,Button.js
对应Button.css
,通过IDE的文件搜索功能也能很快找到对应关系
虽然webpack不会直接提示CSS导入,但通过以上方法可以建立一个更可预测、更易管理的CSS组织方式。
相关文章:
何时需要import css文件?怎么知道需要导入哪些css文件?为什么webpack不提示CSS导入?(导入css导入规则、css导入规范)
文章目录 何时需要import css文件?**1. 使用模块化工具(如 Webpack、Vite、Rollup 等)****适用场景:****示例:****优点:** **2. 动态加载 CSS(按需加载)****适用场景:***…...

双指针算法详解(含力扣和蓝桥杯例题)
目录 一、双指针算法核心概念 二、常用的双指针类型: 2.1 对撞指针 例题1:盛最多水的容器 例题2:神奇的数组 2.2 快慢指针: 例题1:移动零 例题2:美丽的区间(蓝桥OJ1372) 3.总…...

【网络编程】二、UDP网络套接字编程详解
文章目录 前言Ⅰ. UDP服务端一、服务器创建流程二、创建套接字 -- socketsocket 属于什么类型的接口❓❓❓socket 是被谁调用的❓❓❓socket 底层做了什么❓❓❓和其函数返回值有没有什么关系❓❓❓ 三、绑定对应端口号、IP地址到套接字 -- bind四、数据的发送和接收 -- sendto…...

【应急响应】- 日志流量如何分析?
【应急响应】- 日志流量如何下手?https://mp.weixin.qq.com/s/dKl8ZLZ0wjuqUezKo4eUSQ...
虚拟机设置NAT没网笔记
查看任务管理器的时候发现,VMware NAT Service 进程都没有,貌似是因为之前我给禁了,emmmmmm 1确认虚拟机网络设置的NAT模式 打开 VMware Workstation,点击 编辑 > 虚拟网络编辑器 确保 VMnet8 配置为 NAT 模式: …...

djinn: 3靶场渗透
djinn: 3 来自 <https://www.vulnhub.com/entry/djinn-3,492/> 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶场IP192.168.23.243 3࿰…...

VS Code配置指南:打造高效的QMK开发环境
VS Code配置指南:打造高效的QMK开发环境 前言 你是否曾为QMK固件开发环境的搭建而头疼不已?本文将手把手教你使用Visual Studio Code(简称VS Code)这款强大的代码编辑器来构建一个完美的QMK开发环境,让你的键盘固件开…...

服务器多客户端连接核心要点(1)
刷题 服务器多客户端连接核心要点 多进程服务器 实现原理 fork子进程:每次accept新客户端后,调用fork创建子进程。独立处理:子进程负责与客户端通信(如read/write),父进程继续监听新连接。 特点 隔离性…...
【Python-Day 11】列表入门:Python 中最灵活的数据容器 (创建、索引、切片)
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

Stagehand:AI驱动的下一代浏览器自动化框架
Stagehand 是一个结合了 AI 代理、AI 工具和 Playwright 的浏览器自动化框架。核心理念是:让自动化任务既可控又智能。与传统工具不同,Stagehand 不仅仅依赖 AI 代理的“黑箱操作”,而是通过与 Playwright 的深度结合,赋予开发者对…...
实现线程的4种方法
知识点详细说明 在Java中,实现线程的常用方法有以下四种: 1. 继承Thread类 核心要点: 定义一个类继承Thread,重写run()方法。通过调用start()启动线程(自动执行run())。关键细节: 单继承限制:Java不支持多继承,若类已继承其他类,无法再继承Thread。线程对象直接使用…...

爱普生FA-238在车身控制模块中的应用
在汽车智能化、电子化飞速发展的当下,车身控制模块(BCM)作为车辆的 “智能管家”,肩负着协调和控制众多车身功能的重任,从车门的解锁与锁定、车窗的升降,到车灯的智能点亮与熄灭,再到雨刮器的自…...
单片机嵌入式按键库
kw_btn库说明 本库主要满足嵌入式按键需求,集成了常用的按键响应事件:高电平、低电平、上升沿、下降沿、单击、双击、长按键事件。可以裸机运行,也可以配合实时操作系统运行。 本库开源连接地址:连接 实现思路 本库采用C语言进行…...

【A2A】管中窥豹,google源码python-demo介绍
前言 A2A(Agent2Agent)是 Google 推出的一项新协议,旨在解决多智能体(Multi-Agent)系统中跨平台、跨组织协作的难题。它为 AI 代理之间的通信、协作和任务分工提供了一个统一的标准,可以类比为网页世界的 H…...

004-nlohmann/json 快速认识-C++开源库108杰
了解 nlohmann/json 的特点;理解编程中 “数据战场”划分的概念;迅速上手多种方式构建一个JSON对象; 1 特点与安装 nlohmann/json 是一个在 github 长期霸占 “JSON” 热搜版第1的CJSON处理库。它的最大优点是与 C 标准库的容器数据…...

Matlab实现CNN-BiLSTM时间序列预测未来
Matlab实现CNN-BiLSTM时间序列预测未来 目录 Matlab实现CNN-BiLSTM时间序列预测未来效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CNN-BiLSTM时间序列预测未来; 2.运行环境Matlab2023b及以上,data为数据集,单变量时间序…...

C语言| sizeof(array)占多少字节
C语言| 数组名作为函数参数 sizeof(数组名); 可以求出整个数组在内存中所占的字节数。 被调函数Array_Sum()中,数组array使用sizeof会得到多少? 实参数组a占32字节,实参a传给形参array,只占4字节。 原因如下: 数组名做…...

【文件系统—散列结构文件】
文章目录 一、实验目的实验内容设计思路 三、实验代码实现四、总结 一、实验目的 理解linux文件系统的内部技术,掌握linux与文件有关的系统调用命令,并在此基础上建立面向随机检索的散列结构文件;## 二、实验内容与设计思想 实验内容 1.设…...

World of Warcraft [CLASSIC][80][Deluyia] [Fragment of Val‘anyr]
瓦兰奈尔的碎片 [Fragment of Valanyr] 有时候下个班打个游戏,没想到套路也这么多,唉,何况现实生活,这一个片版本末期才1000G,30个,也就30000G,时光徽章等同月卡15000G,折合一下也就…...

数组和指针典型例题合集(一维数组、字符数组、二维数组)
1.一维数组 数组名的理解 数组名是数组首元素(第一个元素)的地址 但是有两个例外: 1.sizeof (数组名)—— 数组名表示整个数组,就算的是整个数组的大小,单位是字节。 2.&数组名 —— 数…...

地级市-机器人、人工智能等未来产业水平(2009-2023年)-社科数据
地级市-机器人、人工智能等未来产业水平(2009-2023年)-社科数据https://download.csdn.net/download/paofuluolijiang/90623814 https://download.csdn.net/download/paofuluolijiang/90623814 此数据集统计了2009-2023年全国地级市在机器人、人工智能等…...

epub格式转txt格式工具,txt批量转PDF
epub格式转txt格式工具,功能如图: txt格式批量转PDF 参考原文:epub格式转txt格式工具,txt批量转PDF 轻轻一点就关注, 好运连连挡不住,点个关注吧。...

电赛经验分享——模块篇
1、前言 打算在这一个专栏中,分享一些本科控制题电赛期间的经验,和大家共同探讨,也希望能帮助刚刚参加电赛的同学,了解一些基本的知识。一些见解和看法可能不同或有错误,欢迎批评指正。 在本文中,主要介绍笔…...
前端面试宝典---JavaScript import 与 Node.js require 的区别
import 和 require 来自不同的规范: import 是 ES6(ECMAScript 2015)模块系统的一部分,是 JavaScript 语言的标准语法 require 是 CommonJS 规范的一部分,最初为 Node.js 环境设计 加载方式: require() …...

JVM之内存管理(一)
部分内容来源:JavaGuide二哥Java 图解JVM内存结构 内存管理快速复习 栈帧:局部变量表,动态链接(符号引用转为真实引用),操作数栈(存储中间结算结果),方法返回地址 运行时…...

鸿蒙编译boost整合linux跨平台应用
openharmony deveco 4.1支持armeabi-v7a deveco 5.0后不支持arm32位系统 boost编译 使用deveco的写cmake集成boost boost使用1.88的最新版本,带cmake工具链 https://github.com/boostorg/boost.git boost的源码都在sub_module中 deveco 4.1的版本sdk最高到9&am…...

rabbitMQ消息问题与解决
rabbitMQ 消息顺序性、消息幂等性、消息不丢失、最终一致性、补偿机制、消息队列设计 1.消息顺序性 溯源: 消息队列中的若干消息如果是对同一个数据进行操作,这些操作具有前后的关系,必须要按前后的顺序执行,否则就会造成数据异常…...

Java SE(10)——抽象类接口
1.抽象类 1.1 概念 在之前讲Java SE(6)——类和对象(一)的时候说过,所有的对象都可以通过类来抽象。但是反过来,并不是说所有的类都是用来抽象一个具体的对象。如果一个类本身没有足够的信息来描述一个具体的对象,而…...
MySQL数据库故障排查与解决方案
一、故障排查流程图 #mermaid-svg-hF8hhP2lrqWDbNhV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hF8hhP2lrqWDbNhV .error-icon{fill:#552222;}#mermaid-svg-hF8hhP2lrqWDbNhV .error-text{fill:#552222;stroke:…...

学习threejs,使用Physijs物理引擎
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️Physijs 物理引擎1.1.1 ☘️…...