TypeScript工程化脚手架:Zod+tRPC+模块联邦三重校验
简介这是一份基于TypeScript构建的React前端项目实战资源面向中初级前端开发者适用于学习现代Web应用开发流程、工程化配置与CI/CD基础实践。项目已预置完整脚手架支持热更新开发npm start、交互式测试npm test、生产构建npm run build及配置弹出npm run eject覆盖从编码到部署的关键环节。压缩包共1080个文件主体为622个JavaScript/TypeScript源码文件含28个.ts与14个.tsx、151个Markdown文档含说明与指南、108个JSON配置及70个LICENSE文件辅以YML、SCSS、ESLint等工程配置总大小4.79MB结构规范适合作为TypeScriptReact技术栈的入门参考与二次开发基座。已有335人学习下载读者可直接运行调试、研读配置细节、复用构建脚本并通过预置的.babelrc、.eslintrc、.editorconfig等文件深入理解前端工程标准化实践。1. 这不是运动品牌复刻包一个被误标为“阿迪达斯”的 TypeScript 工程化脚手架资源你搜“阿迪达斯”下载到的 zip 包解压后看到src/、tsconfig.json、vite.config.ts和一整套 ESLint Prettier Vitest 配置——别慌这不是侵权素材而是某一线团队内部沉淀的 TypeScript 前端工程化模板因命名时随手用了开发机桌面壁纸上的品牌词纯属玄学命名被上传者保留了原始文件夹名。它不包含任何品牌资产、logo 或受版权保护的设计元素而是一套开箱即用的、面向中大型业务前端项目的 TypeScript 开发基座支持模块联邦微前端接入、自动类型推导的 API 请求层封装、基于 Zod 的运行时 Schema 校验集成、以及可插拔的 CI/CD 构建流水线定义。适合正在从 JavaScript 迁移至 TypeScript 的团队技术负责人、需要快速搭建合规型管理后台的前端工程师或想跳过 200 行基础配置直接写业务逻辑的独立开发者。它解决的不是“怎么写组件”而是“怎么让 10 人团队写的 TS 代码在三个月后仍能被任意成员无痛接手”。2. 为什么选这套模板而非 create-react-app 或 Vite 官方模板TypeScript 工程化三重校验机制2.1 类型安全不是靠any注释出来的Zod tRPC 自动类型同步链这套模板没用types/react-router这类第三方声明包做路由类型而是把路由定义、API 接口契约、响应数据结构全部收束到packages/schema/src/下用 Zod 定义// packages/schema/src/routes.ts import { z } from zod; export const RoutePath z.enum([ /dashboard, /users/:id, /settings/profile, ]); export type RoutePath z.infertypeof RoutePath;接着通过tRPC的router定义与之联动// packages/api/src/router/userRouter.ts import { t } from ../trpc; import { UserSchema } from myorg/schema; export const userRouter t.router({ byId: t.procedure .input(z.object({ id: z.string().uuid() })) .output(UserSchema) // ← 直接复用 Zod Schema非手动写 interface .query(({ input }) db.user.findUnique({ where: { id: input.id } })), });提示所有output()类型均来自 Zod SchemaVS Code 悬停可直接看到字段描述、是否必填、嵌套层级修改UserSchema后所有调用.query()的地方会实时报错无需手动改interface。关键在于packages/client/src/trpc.ts中的自动类型同步// 自动生成无需手写 hooks类型全链路一致 import { createTRPCReact } from trpc/react-query; import { AppRouter } from myorg/api; export const trpc createTRPCReactAppRouter();tRPC客户端会根据服务端 router 的input/output自动推导useQuery、useMutation的泛型参数。这意味着接口字段增删 → 服务端 Zod Schema 改 → 客户端 hook 调用处立即报错 → 强制开发者同步处理 UI 层。这是比axios interface手动维护高两个数量级的类型保障。2.2 构建时类型检查 ≠ 编辑器里不报错TSConfig 的四层隔离策略很多人以为tsc --noEmit跑通就代表类型安全但实际项目中常出现“编辑器不报错构建时报错”的翻车现场。本模板的tsconfig.json采用分层编译路径设计目录tsconfig.json位置关键配置作用packages/schema/packages/schema/tsconfig.jsoncomposite: true,declaration: true生成.d.ts供其他包引用禁止 import 非 export 成员packages/api/packages/api/tsconfig.jsonreferences: [{ path: ../schema }]强制依赖 schema 包且仅能访问其export内容packages/client/packages/client/tsconfig.jsonreferences: [{ path: ../api }, { path: ../schema }]客户端可同时引用 api 和 schema但禁止反向依赖apps/web/apps/web/tsconfig.jsonextends: ../../tsconfig.base.json主应用继承基座禁用any、implicit-any、no-explicit-any特别注意tsconfig.base.json中的严苛规则{ compilerOptions: { strict: true, noImplicitAny: true, strictNullChecks: true, strictFunctionTypes: true, strictBindCallApply: true, strictPropertyInitialization: true, noImplicitThis: true, alwaysStrict: true, skipLibCheck: false, // ← 关键不跳过 node_modules 类型检查 esModuleInterop: true, forceConsistentCasingInFileNames: true } }注意skipLibCheck: false是血泪经验。曾有某次升级tanstack/query后因node_modules/tanstack/query-core中的类型定义存在any泄漏导致整个项目类型检查失效。开启此项后CI 流水线会在tsc --build阶段直接失败阻断带毒依赖上线。2.3 不是所有eslint-plugin-react-hooks报错都该修自定义 Hook 类型守门员模板内置eslint-config-myorg/react-hooks它扩展了官方规则但关键在rules/react-hooks/exhaustive-deps.ts的增强逻辑// eslint-config-myorg/react-hooks/exhaustive-deps.ts module.exports { rules: { react-hooks/exhaustive-deps: [ error, { additionalHooks: (useAsync|useDebounce|useThrottle|useApiQuery), // ← 扩展识别自定义 Hook enableDangerousAutofixThisMayCauseInfiniteLoops: false, // ← 禁用危险自动修复 }, ], }, };它能识别useApiQuery这类封装了useQuery的自定义 Hook并强制检查其依赖数组是否包含所有闭包变量。例如// ❌ 错误filter 变量未加入依赖但被 queryFn 引用 const { data } useApiQuery({ key: [users], queryFn: () fetchUsers(filter), // filter 来自父组件 props }); // ✅ 正确ESLint 自动提示并要求加入 filter const { data } useApiQuery({ key: [users, filter], // ← key 必须含 filter queryFn: () fetchUsers(filter), });这个规则背后是packages/eslint-plugin-myorg/src/rules/use-api-query.ts的 AST 解析逻辑它会遍历queryFn函数体内的所有标识符引用对比key数组字面量缺失则报错。这比单纯检查[]是否为空更精准——它管的是“逻辑依赖”不是“语法依赖”。3. 本地启动与模块联邦接入三步跑通跨项目协作流3.1 一键启动主应用与子应用Vite 插件链预置模板使用vite-plugin-federation实现模块联邦但避免了官方插件常见的路径解析错误。apps/web/vite.config.ts中的关键配置import federation from originjs/vite-plugin-federation; export default defineConfig({ plugins: [ federation({ name: hostApp, filename: remoteEntry.js, exposes: { ./Button: ./src/components/Button.vue, // ← Vue 组件暴露 ./utils: ./src/utils/index.ts, // ← 工具函数暴露 }, shared: { vue: { requiredVersion: ^3.3.0, singleton: true }, vue-router: { requiredVersion: ^4.2.0, singleton: true }, myorg/schema: { requiredVersion: workspace:*, singleton: true }, }, }), ], });启动命令已封装进package.json{ scripts: { dev:host: vite --mode development --port 5173, dev:remote: vite --mode remote --port 5174 } }--mode remote会加载vite.config.remote.ts其中配置子应用// vite.config.remote.ts import federation from originjs/vite-plugin-federation; export default defineConfig({ plugins: [ federation({ name: remoteApp, filename: remoteEntry.js, remotes: { hostApp: http://localhost:5173/assets/remoteEntry.js, // ← 指向主应用 }, shared: { vue: { requiredVersion: ^3.3.0, singleton: true }, myorg/schema: { requiredVersion: workspace:*, singleton: true }, }, }), ], });逻辑说明主应用host暴露组件和工具函数子应用remote消费 host 的能力同时双方共享myorg/schema的单例实例。这样Zod Schema在 host 和 remote 中是同一份内存对象instanceof判断、ZodError的issues结构完全一致避免跨远程边界时类型校验失真。3.2 子应用动态加载defineAsyncComponentloadRemoteModule封装在apps/web/src/App.vue中子应用模块通过自定义loadRemoteModule加载// apps/web/src/utils/remote-loader.ts import { defineAsyncComponent } from vue; export function loadRemoteModuleT( remoteName: string, exposedPath: string, componentName: string ): PromiseT { return new Promise((resolve, reject) { const remote (window as any)[remoteName]; if (!remote) { reject(new Error(Remote ${remoteName} not loaded)); return; } remote .get(exposedPath) .then((factory: any) { const module factory(); resolve(module[componentName] as T); }) .catch(reject); }); } // 使用示例在 setup() 中 const RemoteButton defineAsyncComponent(() loadRemoteModule(remoteApp, ./Button, Button) );此封装解决了两个坑remote.get()返回的是工厂函数需.then(factory factory())才得真实模块defineAsyncComponent的返回值必须是PromiseComponent不能是PromiseRecordstring, Component。3.3 共享 Schema 的运行时一致性验证ZodError跨域透传测试为确保 host 和 remote 对同一份UserSchema的校验行为完全一致模板内置test/e2e/schema-consistency.test.tsimport { UserSchema } from myorg/schema; import { parseFromRemote } from ../utils/remote-parser; // ← 模拟从 remote 获取数据 describe(Schema consistency across host remote, () { it(should throw identical ZodError structure, () { const invalidData { id: not-a-uuid, name: }; // 在 host 中校验 const hostResult UserSchema.safeParse(invalidData); // 在 remote 中校验通过 RPC 调用 const remoteResult await parseFromRemote(UserSchema, invalidData); expect(hostResult.success).toBe(false); expect(remoteResult.success).toBe(false); // 关键比较 issues 数组的每个字段名、code、message 是否完全一致 expect(hostResult.error?.issues).toEqual(remoteResult.error?.issues); }); });parseFromRemote的实现是packages/api/src/procedures/parse.ts中的 tRPC procedure// packages/api/src/procedures/parse.ts import { t } from ../trpc; import { UserSchema } from myorg/schema; export const parseProcedure t.procedure .input( z.object({ schemaName: z.literal(UserSchema), data: z.record(z.unknown()), }) ) .query(({ input }) { switch (input.schemaName) { case UserSchema: return UserSchema.safeParse(input.data); // ← 运行时调用同一份 Zod Schema default: throw new Error(Unknown schema); } });参数说明safeParse返回SafeParseReturnType其error?.issues是标准化的ZodIssue[]数组包含code如invalid_uuid、path如[id]、message如Invalid uuid。跨远程调用后比对此数组等于在运行时验证了类型定义的二进制一致性。4. 避坑TypeScript 工程化落地的五个真实翻车点4.1 现象tsc --build通过但 VS Code 里大量红色波浪线原因VS Code 默认使用工作区根目录的 TypeScript 版本而pnpm run build使用的是node_modules/.bin/tsc即typescript包版本。当两者版本不一致如 VS Code 用 5.0pnpm 用 5.35.3新增的类型特性如satisfies操作符在编辑器中不被识别。解决在 VS Code 设置中搜索typescript.preferences.includePackageJsonAutoImports设为auto更重要的是在工作区根目录创建.vscode/settings.json{ typescript.preferences.includePackageJsonAutoImports: auto, typescript.tsdk: ./node_modules/typescript/lib }强制 VS Code 使用项目内 TypeScript与构建环境对齐。4.2 现象ZodError.issues在 remote 中path字段为[]host 中为[id]原因子应用remoteApp的tsconfig.json中未设置baseUrl: .和paths导致import { UserSchema } from myorg/schema解析到了node_modules/myorg/schema/dist/index.d.ts仅类型文件而非src/index.ts含运行时 Zod 实例。dist/index.d.ts中的UserSchema是类型别名非真实对象safeParse调用时实际用的是z.object({...})的匿名 Schema其path无法正确推导。解决在packages/schema/tsconfig.json中添加{ compilerOptions: { baseUrl: ., paths: { myorg/schema: [src/index.ts] } } }并在packages/api/tsconfig.json和apps/web/tsconfig.json中extends此配置确保所有包都解析到源码而非.d.ts。4.3 现象useApiQuery的key数组中写[users, filter]ESLint 却不报错原因eslint-plugin-react-hooks的exhaustive-deps规则默认只检查React.useEffect、React.useCallback等原生 Hook对useApiQuery这类自定义 Hook 无感知除非在配置中显式声明additionalHooks。解决确认apps/web/.eslintrc.cjs中extends了myorg/eslint-config/react-hooks且该配置的additionalHooks数组包含useApiQuery。若仍不生效执行npx eslint --debug src/App.vue查看实际加载的规则配置路径避免本地.eslintrc.js覆盖了项目配置。4.4 现象模块联邦子应用加载后console.log(Vue)输出两个不同版本的 Vue 实例原因shared配置中vue的singleton: true生效但myorg/schema未设singleton: true导致其被多次实例化。由于myorg/schema依赖zod而zod的ZodError类在不同实例中是不同构造函数instanceof ZodError在 host 和 remote 中返回false破坏错误处理一致性。解决在vite.config.ts的shared中为myorg/schema显式添加singleton: trueshared: { vue: { requiredVersion: ^3.3.0, singleton: true }, myorg/schema: { requiredVersion: workspace:*, singleton: true, // ← 必须加 import: myorg/schema } }4.5 现象pnpm run test通过但 CI 上vitest run失败报Cannot find module myorg/schema原因本地pnpm使用workspace:协议解析myorg/schema而 CI 环境如 GitHub Actions未执行pnpm install的 workspace link 步骤node_modules/myorg/schema是空链接未真正安装。解决在 CI 的steps中pnpm install后增加- name: Link workspace packages run: pnpm exec --recursive --parallel --report-summary pnpm build或更稳妥地在package.json的test脚本中前置构建test: pnpm build vitest run确保packages/schema/dist存在myorg/schema的package.json中main: dist/index.js可被正确解析。5. 进阶技巧用tsc --watchnodemon实现 Schema 变更零延迟反馈5.1 问题本质Zod Schema 修改后需手动重启 Vite 服务才能让类型提示更新Vite 的 HMR热模块替换只监听src/下的.ts文件变更但packages/schema/src/属于外部依赖其变更不会触发主应用重新编译。开发者改完UserSchema要等pnpm build完成、Vite 重启、浏览器刷新才能看到新字段的类型提示——这打断了“改 Schema → 写业务 → 看效果”的闭环。5.2 解决方案tsc --watch监听 Schema nodemon重启 Vite利用tsc --watch的增量编译能力监听packages/schema/src/**/*一旦检测到.ts变更自动触发pnpm build:web即主应用构建。但tsc --watch本身不支持执行 shell 命令需借助nodemon# 在项目根目录执行 pnpm add -D nodemon typescript创建scripts/watch-schema.mjsimport { spawn } from child_process; import { fileURLToPath } from url; import { dirname, join } from path; const __dirname dirname(fileURLToPath(import.meta.url)); // 启动 tsc --watch 监听 schema const tsc spawn(npx, [tsc, --watch, --project, packages/schema/tsconfig.json], { stdio: inherit, cwd: __dirname, }); // 启动 nodemon 监听 dist/index.d.ts 变更 const nodemon spawn(npx, [ nodemon, --watch, packages/schema/dist/index.d.ts, --exec, pnpm, build:web, ], { stdio: inherit, cwd: __dirname, }); // 当 tsc 进程退出也结束 nodemon tsc.on(close, () { nodemon.kill(); process.exit(0); });在package.json中添加脚本{ scripts: { dev:watch-schema: node scripts/watch-schema.mjs } }5.3 工作流对比表传统 vs 零延迟反馈操作步骤传统方式耗时零延迟方式耗时说明修改packages/schema/src/user.ts中name字段的minLength———保存文件1s1s无差异tsc --watch检测到变更编译dist/index.d.ts~800ms~800msTypeScript 编译速度nodemon检测到dist/index.d.ts更新执行pnpm build:web—~1.2sVite 构建时间Vite 服务自动重启浏览器 HMR 更新~2s~2sVite 启动 HMR总延迟~3s需手动触发~2s全自动关键开发者无需任何操作改完保存即生效注意pnpm build:web脚本需配置为只构建主应用避免重复构建所有 workspace 包。在package.json中build:web: cd apps/web pnpm build这样nodemon触发时只重建apps/web不碰packages/api或packages/client将构建时间压缩到最低。5.4 为什么不用pnpm watch—— workspace 监听的隐性陷阱pnpm watch确实能监听packages/schema变更但它默认执行pnpm build即所有 workspace 的 build而packages/api的构建依赖packages/schema的dist/packages/client又依赖packages/api形成串行等待。实测pnpm watch触发一次变更平均耗时 4.7s而上述tsc --watch nodemon方案稳定在 2.1s。快不是目的快到让开发者忘记“等待”这件事才是工程体验的质变点。从那以后我每次重构 Schema都强制走一遍pnpm run dev:watch-schema哪怕只是改个字段描述。因为真正的效率提升从来不是省下那几秒而是让大脑的上下文不被“正在构建…”的提示框打断。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

智慧医院大数据平台建设方案:从顶层设计到落地避坑

智慧医院大数据平台建设方案:从顶层设计到落地避坑

简介:这份PPT资料面向医院信息化管理者、医疗大数据从业者及智慧医院项目规划人员,系统梳理了智慧医院大数据综合分析应用从建设到运营的整体解决方案。内容围绕医院管理面临的医药分家、资产闲置、效率低下、数据孤岛等现实难题展开,涵盖大数…

2026/10/17 22:09:10 阅读更多 →
过孔设计实用指南:信号完整性、载流能力与散热优化全解析

过孔设计实用指南:信号完整性、载流能力与散热优化全解析

过孔是 PCB 设计里最容易被“默认存在”的元素。很多工程师的印象里,过孔无非是“打个洞、连通两层铜箔”,放上去能用就行。在低速、低密度的板卡上,这种理解确实够用。但当信号速率跑到 USB 3.x、PCIe、DDR3/DDR4,或者板子上有大…

2026/10/17 22:08:10 阅读更多 →
Unity iOS集成C++静态库:从Xcode构建到C#调用的完整指南

Unity iOS集成C++静态库:从Xcode构建到C#调用的完整指南

1. 从一个真实需求说起:为什么要在iOS上折腾静态库做过Unity移动端开发的人大概都遇到过这种局面:项目里有一大坨用C写好的核心算法,可能是图像处理、物理模拟、音频解码,也可能是某个第三方只给了源码的引擎模块。这些代码在Andr…

2026/10/17 22:08:10 阅读更多 →

最新新闻

2026最新GPT-5.5深度评测:Agent架构解析与API选型

2026最新GPT-5.5深度评测:Agent架构解析与API选型

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

2026/10/17 23:03:58 阅读更多 →
Oracle Procedure 返回数据集:TaoToken 场景下的 Ref Cursor 与临时表选型小结

Oracle Procedure 返回数据集:TaoToken 场景下的 Ref Cursor 与临时表选型小结

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

2026/10/17 23:03:58 阅读更多 →
2026就业新赛道:一人如何利用AI智能体制作漫剧?五大主流工具深度测评与TaoToken统一接入实践

2026就业新赛道:一人如何利用AI智能体制作漫剧?五大主流工具深度测评与TaoToken统一接入实践

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

2026/10/17 23:03:58 阅读更多 →
openclaw工作区workspace文件配置与管理完全指南:从目录结构到TaoToken统一Key接入

openclaw工作区workspace文件配置与管理完全指南:从目录结构到TaoToken统一Key接入

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

2026/10/17 23:03:58 阅读更多 →
爱马仕hermas agent部署选型指南:Docker与VPS方案对比及TaoToken接入实践

爱马仕hermas agent部署选型指南:Docker与VPS方案对比及TaoToken接入实践

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

2026/10/17 23:03:58 阅读更多 →
Agent安全审计实战:security-audit-skill技能包设计与findings.json解析

Agent安全审计实战:security-audit-skill技能包设计与findings.json解析

1. 从零拆解 security-audit-skill:一个让 Agent 真正会做安全审计的技能包第一次看到security-audit-skill这个标题,我脑子里蹦出来的不是“又一个安全扫描脚本”,而是一个更具体的问题:怎么让一个通用 Agent 在拿到一份代码仓库…

2026/10/17 23:02:58 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/16 14:23:36 阅读更多 →