新闻详情

新闻详情

首页 / 资讯中心 / 详情

packages.rar安全解压与集成指南:验包、解压、构建避坑

发布时间:2026/10/2 11:14:27来源:尧图网络
packages.rar安全解压与集成指南:验包、解压、构建避坑
简介一份面向建筑信息模型BIM领域用户的Dynamo节点包合集整合了Archi-lab、LunchBox、BimorphNodes等多个常用第三方库可显著增强Revit自动化与参数化建模能力。压缩包共含3035个文件主体为dyf、dyn节点定义辅以dll扩展库、Python脚本、xml/json配置及txt说明文档整体大小约167MB目录结构清晰便于按功能模块筛选。已有4710人学习下载适合需要离线部署节点库、熟悉节点逻辑或提升建模效率的工程师与进阶学习者。包内节点覆盖曲面展开、截面放置、PDF生成等典型场景但Dynamo版本迭代较快使用前应确认节点包与当前Revit/Dynamo版本兼容部分自定义节点可参考附带说明或社区文档理解其参数规则。整体来看它能帮助用户快速建立本地节点生态减少逐一查询下载的麻烦并有效支撑日常BIM自动化工作流。1. 拿到 packages.rar 先别急着解压这个包到底是什么接手过旧项目的人八成见过这种交接物一个叫packages.rar的文件躺在网盘或移动硬盘里旁边没有 README没有版本说明只有一句「依赖都在里面」。它可能是 Android 工程里的 aar/jar 集合可能是 Node.js 项目的node_modules快照也可能是某个 Python 服务离线安装用的 wheel 包目录。名字太通用反而没人敢乱动——怕解压出来一堆不知道干什么用的文件更怕解压一半报错把整个目录搞乱。这篇文章要解决的就是「接到一个 packages.rar怎么安全地验包、解包、集成进工程以及最后怎么把它重新打包交给下一个人」。我会按照自己处理这类压缩包的实际顺序来写先做三道检查再分场景落地接着验证集成最后聊避坑和重新打包的规范。适合的读者是正在做项目交接、离线构建、二次集成的客户端或后台开发如果你只是下载了个压缩包想看看里面有什么前两章也够用。至于「为什么解出来的东西编译不过」「为什么少文件」这类问题后面有一整章踩坑记录。2. 拆包前的三道检查类型识别、完整性校验与目录预演2.1 第一道确认这真的是 RAR而不是改个后缀的 ZIP交接包最常见的怪事就是扩展名和实际格式对不上。有人把 ZIP 直接改名成.rar发给下家Windows 上看着图标没错一用unrar解压就报错。所以我的第一个命令永远是file在 Linux 或 macOS 上直接看文件头file packages.rar # 输出示例packages.rar: RAR archive data, v5, 分卷如果输出是RAR archive data, v5说明是 RAR5 格式如果是v1.5或v4.x那是老式 RAR 格式要是输出Zip archive data那就得换unzip来解。这里有个参数含义要注意RAR5 和 RAR4 的解压命令虽然都是unrar但旧版 unrar3.x 之前不识别 RAR5会直接报Unknown method所以工具版本要新一点。Windows 上没file命令的话用 7-Zip 打开文件看它识别成什么格式也行。这一步判断错误后面全部白做。我吃过一次亏交接包叫packages.rar里面其实是 tar.gz 套了一层file输出是gzip compressed data当时没看直接拿 unrar 硬解报错后才发现要先去后缀。养成习惯任何压缩包到手先看真实格式不要信任文件名。2.2 第二道先列清单不急着解压内容解压前必须知道包里有什么。用unrar l列出文件清单比解压完再翻目录快得多而且能提前发现三类危险信号路径穿越、超大文件、软链接。unrar l packages.rar # 输出里重点看 File Name 列和 Size 列 # 有没有 ../ 开头的路径 # 有没有单个超过 2GB 的文件 # 有没有 - 符号链接标记l参数是 list 的缩写只读目录不解压。如果清单里出现../config.xml这种路径说明打包时没做路径清理解压会写到当前目录的上一级属于恶意包或粗心包建议停下来找源头确认。出现体积异常大的文件比如一个node_modules快照里塞了 5GB 的日志文件要思考是不是打包时把缓存目录也卷进来了。还有一种情况值得注意包里全是.so或.dll这种二进制文件清单里看不出来依赖关系这时候我会额外用7z l -slt packages.rar看详细属性确认每个文件的修改时间和压缩前大小辅助判断这些二进制文件是不是同一批次编译出来的——修改时间相差半年的两个 .so 放在同一层目录里集成后大概率出现链接版本冲突。2.3 第三道用测试解压和校验和给包做体检清单看完没问题下一步不是直接解压而是跑一遍完整性测试。unrar t会遍历整个压缩包逐个文件做 CRC 校验但不写入磁盘unrar t packages.rar # 输出结尾会显示All OK 或者 有 N 个文件损坏这里有个容易被忽略的点unrar t只校验 CRC不校验恢复记录。如果包当初是用rar a -rr3% packages.rar创建的那 3% 的恢复记录能修复不少坏块但t命令不会主动告诉你「这个包需要修复」。我一般会再跑一次rar r packages.rar注意是r不是t让 RAR 尝试用恢复记录修复尤其当t报了几处 CRC 错误时先修复再解压比直接解压出一半文件然后手动补要省事得多。文件校验做完还有一个整体校验算 SHA256。这个值后面集成完、重新打包时都要用到先算出来存好sha256sum packages.rar packages.rar.sha256 cat packages.rar.sha256 # 把这个值记下来解压后如果文件有问题能用来排除是包本身坏了还是解压过程出了错三步检查下来我才会执行真正的解压。这套流程看着麻烦但对一个好几 GB 的依赖包来说提前发现问题节省的时间远大于检查本身。跟交接人确认过包没问题之后下一步才是选择解压方式——不同场景的解压策略差别很大直接覆盖工程目录是新手最容易踩的坑。3. 把包落到工程里分场景解压命令与目录规划3.1 Android / Java 工程先建本地仓库目录再交给 Gradle 识别Android 项目里的packages.rar最常见的两种情况一种是里面都是.aar和.jar另一种是整个.m2仓库快照。前一种解压到app/libs就行后一种不能解压到工程里要放到本地 Maven 仓库路径下用mavenLocal()或flatDir去指向它。先看第一种纯 aar/jar 集合mkdir -p app/libs unrar x -o packages.rar app/libs/ # -o 表示覆盖已存在的文件时不询问 # x 保留压缩包内的完整目录结构解压完app/libs目录下直接能看到xxx.aar。接着在app/build.gradle里加依赖声明dependencies { // 单个 jar/aar 直接用 fileTree 引入 implementation fileTree(include: [*.jar, *.aar], dir: libs) }这里有个坑fileTree引入的依赖Gradle 不会帮你传递依赖——也就是说如果包里那个 aar 自己依赖了androidx.appcompat你在libs里只放 aar 不把 appcompat 也放进去编译必报ClassNotFoundException。所以解压后第一件事是看那个 aar 的POM文件在 aar 内部的META-INF里把 POM 里声明的依赖都找齐。这也是为什么我见到 aar 集合包时会先问一句「原始构建脚本能不能一起给」而不是自己闷头解压。第二种情况packages.rar解开后里面是com/company/sdk/1.2.3/sdk-1.2.3.aar这种层级这就不是 libs 目录而是本地 Maven 仓库的布局。要这样解mkdir -p ~/.m2/repository unrar x -o packages.rar ~/.m2/repository/ # 解压后路径应该是 ~/.m2/repository/com/company/sdk/1.2.3/...工程侧则要加上mavenLocal()仓库repositories { mavenLocal() }然后implementation com.company:sdk:1.2.3就能正常解析。这一步容易被忽略的是 mavenLocal 的默认路径Windows 上是C:\Users\你的用户名\.m2\repositoryLinux/macOS 上是~/.m2/repository解压位置不对Gradle 无论如何都找不到。3.2 Node.js 项目packages.rar 当 node_modules 快照用Node 场景下的packages.rar九成是node_modules目录的整包压缩。这种包解压最忌讳直接解到项目根目录覆盖现有 node_modules——里面可能有半年前装的旧版本依赖直接把新包盖上去产生一堆半新半旧的文件npm 都救不回来。我的做法是先解压到临时目录再看情况处理mkdir -p /tmp/pkg_preview unrar x -o packages.rar /tmp/pkg_preview/ # 解压后实际路径是 /tmp/pkg_preview/node_modules/...然后进项目根目录先做一次依赖比对# 把现有依赖清单导出来 npm ls --depth0 before_install.txt # 看压缩包里自带的 package.json如果打包时没省略 cat /tmp/pkg_preview/node_modules/.package-lock.json 2/dev/null | head -30比对的目的不是让两边完全一致而是确认「包里有没有项目 package.json 里声明之外的依赖」。有时候交接人心好把node_modules整个打包给你能省掉npm install的网络下载时间但有时候包是从另一个项目里拷出来的里面一堆无关依赖直接搬到当前项目根目录等于把别人的包袱也背上了。稳妥做法是把包里的node_modules先重命名成node_modules_old然后只把当前项目package.json里dependencies和devDependencies列出的包挑出来拷过去。cd /path/to/project mv node_modules node_modules_old 2/dev/null; true mkdir -p node_modules cd node_modules # 从解压出的旧依赖里只复制 package.json 里有的包名 for pkg in $(node -e const prequire(/path/to/project/package.json); console.log(Object.keys({...p.dependencies,...p.devDependencies}).join( ))); do cp -r /tmp/pkg_preview/node_modules/$pkg ./ 2/dev/null done这个脚本写得很朴素但它避开了两个大坑一是不会把别的项目依赖带进来二是不会覆盖本地已经手动放在 node_modules 里的私有包。复制完成后跑npm rebuild重新编译一下原生模块比如 node-sass、sharp 这种带二进制的东西再npm run dev验证。3.3 通用场景独立目录解压 对比清单分辨不出场景时别直接把包解压到当前目录。统一先解到独立目录mkdir -p ./packages_extracted unrar x -o packages.rar ./packages_extracted/解完不要急着挪动文件先做一件事和交接人确认包里的路径结构。怎么确认把解压后的目录树拉一份出来find ./packages_extracted -maxdepth 3 -type f | head -50然后对照项目现有结构。如果发现包内根目录直接就是src/、lib/这类和项目重叠的名字不要直接cp -r覆盖要先创建一份文件清单做 diff。比如压缩包里有个src/utils.js项目里本来就有一个src/utils.js直接覆盖会把现在的改动吞掉。这种情形我用增量合并的方式# 只拷压缩包里有、工程目录里没有的文件 rsync -av --ignore-existing ./packages_extracted/src/ ./project/src/--ignore-existing是灵魂参数它保证已有的文件全部保留只补充缺失的。缺点是没有修改时间比对但作为「先让工程跑起来」的第一步已经够用。等确认新加的文件不影响现有代码再手动逐个决定要不要用包里的版本覆盖旧文件。解压这块做到位了离「能用」还差一半。下一步是把这些文件真正接进构建流程并跑通最小验证——这一步经常暴露依赖缺失或版本冲突也是整个交接流程里最能体现实战经验的部分。4. 解压之后才是关键构建验证、依赖核对与版本固化4.1 最小构建验证不要一上来就全量编译解压完工程大概率处于「文件都齐了但构建一定有问题」的状态。这时正确姿势不是直接跑全量编译而是先跑最小构建——只编译一个模块用最快速度暴露依赖缺漏。Android 工程先跑一个模块的编译./gradlew :app:compileDebugJavaWithJavac --offline加--offline是为了强制 Gradle 不要试图去远程仓库下载缺失依赖这样所有依赖都只能从本地仓库和 libs 目录解析能立刻暴露「压缩包里没给全」的问题。如果离线编译报错说缺某个依赖那就说明这个 aar/jar 集合不完整需要回到原始构建环境补充。Node 项目的最小编译则是指令不同但目的一致npm run lint -- --quiet # 先只跑静态检查不跑测试不跑构建之所以先跑 lint 不跑 build是因为 lint 不依赖真实模块编译能更快过滤出「模块加载」层面的问题。如果 lint 都能报出某个依赖找不到那 build 必挂没必要浪费时间。最小构建跑通后才去跑完整构建。这个递进节奏很关键最小构建只验证依赖解析完整构建才验证打包逻辑、资源合并、代码生成这些重量级任务。两者混在一起排查几分钟能定位的问题会拖成半小时。4.2 依赖冲突排查看重复依赖和版本锁定解压包最经典的翻车现场是同一个依赖出现两个版本而且都打进了构建产物。Android 里最常见的是重复的 support 库Node 里则是同一依赖被两个不同版本的传递依赖引用。Android 场景用依赖报告定位./gradlew :app:dependencies --configuration releaseCompileClasspath deps_report.txt grep -A 30 releaseCompileClasspath deps_report.txt | grep -E (androidx|com.google) | sort | uniq -c | sort -nr这段命令的意思是把整个依赖树导出来找出重复次数最多的几个依赖。如果看到com.google.code.gson:gson:2.8.5和2.9.0两个版本同时出现说明有两个库各自传递依赖了不同版本的 Gson。解法不是直接删文件而是在build.gradle里加约束dependencies { implementation(com.google.code.gson:gson) { version { strictly 2.9.0 } } }strictly是强制版本约束比force更严格它能阻止任何传递依赖把版本拉低。注意用strictly之前要确认 2.9.0 和工程里的其他库是兼容的否则会引发新的运行时异常。Node 场景则看npm ls的冲突标记npm ls --depth2 21 | grep -E UNMET DEPENDENCY|invalid|deduped | head -30UNMET DEPENDENCY说明包里的 node_modules 快照缺了某个子依赖deduped表示 npm 已经帮你做了版本提升不用管。看到UNMET的时候我的做法是只安装缺失的那一个包而不是整体npm install——因为整体安装会无视你解压出来的快照重新按 package.json 解析依赖搞不好版本又被拉回网络上的最新版。4.3 版本固化把这次成功的依赖组合记录下来构建通过只是开始。这堆依赖是解压包拼出来的下一次有人重新npm install或 Gradle sync可能就把版本换掉了。所以最后一步一定是固化版本。Android 项目里Gradle 锁版本不像 npm 那样会自动生成 lockfile得靠手动记录。我会在工程根目录放一个deps-verified.txt把验证过的关键依赖版本写进去./gradlew :app:dependencies --configuration releaseCompileClasspath deps-verified.txt这份文件不用提交到版本管理里但要在交接说明里附一份。以后谁升级某个库先看这份清单确认升级影响面。Node 项目则是确保锁文件在包里# 确认 package-lock.json 存在且与 node_modules 快照一致 npm ci --dry-runnpm ci会严格按 lockfile 安装--dry-run只做校验不实际动文件。它比npm install慢但能保证每次装出来的依赖树完全一致。如果npm ci --dry-run报错说明你解压出的 node_modules 和 lockfile 不匹配需要重新生成 lockfile 或者把正确的 lockfile 找回来。到这里「接包 → 解包 → 集成 → 验证」这条链路就走完了。但实际干活的都知道上面每一步都有各种奇形怪状的失败方式——知识点都清楚照样翻车。下一章把这些翻车场景集中列出来每一个都是自己或同事真实踩过的。5. packages.rar 避坑实录5 个最常见的翻车点与排查思路5.1 解压后中文文件名乱码配置全失效现象解压完的目录里有中文文件名的配置文件打开一看文件名是????.xml程序加载时报文件找不到。原因RAR 压缩时用了系统的本地编码比如 GBK存文件名解压端用 UTF-8 解码两边不一致。RAR5 默认会写 Unicode 文件名但老 RAR4 格式和部分 Windows 压出来的包不走标准文件名编码全靠猜。解决Linux 上用unrar解压时加参数-p没用正确的是用7z解压并指定编码7z x packages.rar -o./output -mcpGBK-mcpGBK告诉 7-Zip 用 GBK 解码文件名。Windows 上如果 7-Zip 图形界面打开显示乱码先不要解压在「选项」里把「文件名编码」切到 ANSI 或 OEM 试试。这个问题在交接包里非常高频尤其是从国内老工程师手里传出来的包。5.2 解压到当前目录把整个工程结构打乱了现象原本干净的工程目录解压后./src、./lib、./package.json全被插了一脚git status 看过去一片红色不知道哪些是新文件哪些是被覆盖的。原因压缩包在制作时没有把文件放到统一的根目录下面解压时直接落到了当前目录和现有工程目录结构混在一起。解决遇到被插乱的工程第一步不是后悔而是马上冻结现场# 先记录当前 git 状态 git status --short before_rescue.txt # 找出所有最近 1 小时内变动的文件假定这就是解压动作改动的 find . -type f -mmin -60 ! -path ./.git/* recently_changed.txt然后对照before_rescue.txt和recently_changed.txt把不是自己改的文件挑出来逐个判断是删除还是恢复。更彻底的做法是如果工程本来就提交过 git直接把工作区还原到解压前 —— 但前提是你解压前没有未提交的改动所以再次强调解压前务必git status确认干净。5.3 解出来的 .so 库没有可执行权限运行直接闪退现象Android 工程里libs/arm64-v8a/*.so解压出来权限是-rw-r--r--打进去后 apk 也能装但一运行就UnsatisfiedLinkError或dlopen failed。原因RAR 文件头里记录了文件权限位但解压环境不一定恢复它。zip 的权限位倒是比较可靠RAR 在 Linux 下尤其容易丢失可执行位和符号链接属性。解决解压后统一补一次权限chmod -R ux packages_extracted/**/*.so 2/dev/null find packages_extracted -type l -exec ls -la {} \;第二行是为了把符号链接拎出来看有没有失效。Android .so 文件不要求可执行位也能被链接但有些第三方 NDK 库在运行时需要dlopen可执行权限。最稳妥的做法是解压后立刻用ls -l抽查几个 .so如果权限是 644 而源码构建出来的应该是 755那就要整体chmod 755一下别再纠结为什么闪退。5.4 包看起来损坏但unrar t显示 All OK现象解压到一半报错Unexpected end of archive但unrar t packages.rar测出来是 All OK文件也解出来一部分怎么都不像坏了。原因这个包很可能是分卷压缩的其中一个卷比如packages.part1.rar、packages.part2.rar而你手上只有packages.rar这一个文件。unrar t只检测当前文件的 CRC单个卷内部文件校验是完好的但整个包的数据分散在多个卷里缺卷就会中途断掉。解决先看当前目录下有没有part2、part3这类文件ls -la | grep -i part\|\.rar缺卷的话只能找对方补齐。如果是刻意合并成的单卷包但内部用了固实压缩solid archive那任何一个文件损坏都会影响后续所有文件unrar t报错路径会指向最后一个文件。尝试用unrar repair修复一次修不好就只能认清现实找源头重新传。5.5 解压后 .npmrc、.gitignore 之类隐藏文件不见了现象包里有.npmrc配的私有仓库地址解压完整个目录里找不到.npmrcnpm install 时又去连不了内网仓库。原因打包时用的工具默认忽略隐藏文件或者打包人手动勾选时没注意排除规则。RAR 本身支持隐藏文件但很多图形化压缩工具尤其是国产压缩软件默认不打包以.开头的文件。解决解压前先用unrar l packages.rar | grep -E (^|/)\.\w查一下隐藏文件在不在清单里。如果清单里有但解压后没有说明解压工具过滤了它们换7z x能解决如果清单里压根没有这不是解压问题是打包问题只能趁早找打包人要。这也是为什么我前面强调解压前一定要unrar l看清单——有些问题在解压前就能发现根本不用等解完再查。6. 重新打包交付从接包人到发包人把 packages.rar 做成不给人添麻烦的包交接链路走完一轮后你多半也会成为「制造 packages.rar」的那个人。这个阶段的目标非常具体让下一个接你包的人打开压缩包的第一分钟就用不上求助消息。我的打包习惯是先定目录结构再选压缩参数最后生成校验清单。目录结构上包内最外层一定是一个有辨识度的根目录比如vendor-libs-202506/不要一上来就是散落的 aar 和 jar。定根目录是个小动作但能避免 5.2 那种解压散落的坑接包人能放心地解到临时目录再合并。压缩参数上我通常这样打包rar a -m5 -rr3% -ep1 -t -md64m packages.rar vendor-libs-202506/拆开说含义-m5是最大压缩率-rr3%加 3% 的恢复记录网盘传输容易损坏恢复记录是给下家的后悔药-ep1把绝对路径剥离成相对路径保证解压不会落到C:或/home/这些地方-t是打包后自动测试一遍完整度-md64m把字典开到 64MB对代码库这种小文件碎片较多的目录能有效提高压缩率。如果你担心包太大可以改-m3牺牲一点压缩率换速度但-rr3%永远不要省。打包完在包旁边生成一份校验清单这个步骤我至今没见几个人做但价值极高find vendor-libs-202506 -type f | sort | xargs sha256sum SHA256SUMS同时把几条关键信息写进一个README.txt塞到包里这个包是什么时候构建的对应哪个 commit 或版本里面哪些文件是从机器 A 拷出来的哪些是手动的。这些文字看着简单实际上能帮下家省掉半天「猜这个包怎么用」的时间——你不用把使用教程写全只要写清来源和版本比什么都强。最后说一个个人习惯每次打出新包我一定会在自己机器上从头解压一遍然后按包内的 README 提示操作一次确认能跑通才发出去。这个动作做了几年翻车率大幅下降因为很多问题是打包时自己根本意识不到的比如某个依赖忘了备份、路径写错一层、文件权限丢了。检查的人先当过使用者才有资格做交付者。希望这些经验能帮你少踩几个坑——接包时多加三道检查打包时多写一份说明两边都省心。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

BUSCO评估基因组完整性:从原理到实战的完整指南 2026/10/2 12:04:42

BUSCO评估基因组完整性:从原理到实战的完整指南

拿到一个刚组装完的基因组,我向来不会急着看N50有多漂亮,而是先跑一遍BUSCO。原因很简单——N50只告诉你碎片拼得长不长,却不能告诉你基因组里该有的基因还在不在。在生信圈里,BUSCO评估基因组的完整性早就不是“可选项”&#xf…

阅读更多 →
STM32选型、开发环境与外设实战:从入门到高频翻车排查 2026/10/2 12:04:35

STM32选型、开发环境与外设实战:从入门到高频翻车排查

STM32这几个字母,在嵌入式圈子里几乎成了"单片机"的代名词。做硬件、做软件、做物联网方案的工程师,甚至是马上要交毕业设计的大学生,第一块正经的开发板大概率都绕不开它。我自己的第一块STM32是F103C8T6最小系统板,到…

阅读更多 →
Higress MCP Server 功能更新:拥抱 MCP 2026-07-28,兼容既有协议 2026/10/2 12:04:35

Higress MCP Server 功能更新:拥抱 MCP 2026-07-28,兼容既有协议

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
LangChain 1.0 + Agentic RAG + MCP:用 TaoToken 统一 Key 打通多工具调用链 2026/10/2 12:04:35

LangChain 1.0 + Agentic RAG + MCP:用 TaoToken 统一 Key 打通多工具调用链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
【Harness:落地实战】28、从插件到生态:Cursor 插件实战与 Hermes 开源贡献全链路指南——TaoToken 统一 Key 打通 AI Agent 工作流 2026/10/2 12:04:34

【Harness:落地实战】28、从插件到生态:Cursor 插件实战与 Hermes 开源贡献全链路指南——TaoToken 统一 Key 打通 AI Agent 工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
项目深度分析报告--来自智谱Agent模式:用TaoToken统一Key跑通多工具调用链 2026/10/2 12:04:33

项目深度分析报告--来自智谱Agent模式:用TaoToken统一Key跑通多工具调用链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉