# 路由映射插件模块 这个目录包含了模块化后的路由映射插件的各个功能模块。 ## 模块结构 ### 1. `api-collector.js` - API收集模块 - **功能**: 从service文件中收集API信息 - **主要方法**: - `collectApiMappings(moduleDirs)` - 收集所有模块的API映射 - `collectModuleApiMappings(moduleName)` - 收集单个模块的API映射 - `analyzeServiceFile(servicePath, serviceName, moduleName)` - 分析单个服务文件 - `extractApiMapping(methodPath, methodName, serviceName, servicePath)` - 从AST节点中提取API映射信息 ### 2. `ast-analyzer.js` - AST分析模块 - **功能**: 负责Babel和Vue模板的AST分析 - **主要方法**: - `findMethodsCallingServiceWithBabel(content, serviceName, apiMethodName)` - 使用Babel AST分析查找调用指定服务方法的方法 - `checkMethodCallsServiceWithBabel(methodPath, serviceName, apiMethodName)` - 检查方法是否调用了指定的service方法 - `findTriggersInTemplateWithAST(templateContent, componentName, apiMethodNames, triggerSources, filePath)` - 使用AST分析模板中的事件绑定 - `generateUniqueButtonName(componentName, clickHandler)` - 生成唯一的按钮名称 ### 3. `trigger-analyzer.js` - 触发器分析模块 - **功能**: 负责分析组件中的按钮和事件触发器 - **主要方法**: - `findTriggerSourcesForApiMappings(apiMappings)` - 查找API方法的触发器源 - `findTriggerSourcesForApiMethod(serviceName, apiMethodName, moduleName)` - 查找API方法的触发器源 - `analyzeComponentWithAST(componentName, serviceName, apiMethodName)` - 使用AST分析组件 - `analyzeMethodTriggerSources(content, componentName, methodNames, filePath)` - 分析方法的触发源 ### 4. `file-generator.js` - 文件生成模块 - **功能**: 负责生成最终的映射文件 - **主要方法**: - `generateMappingFile(routes, apiMappings)` - 生成映射文件 - `generateFileContent(routes, apiMappings)` - 生成文件内容 - `optimizeApiMappings(apiMappings)` - 优化API映射 - `deduplicateTriggerSources(triggerSources)` - 去重触发器源 ### 5. `route-analyzer.js` - 路由分析模块 - **功能**: 负责分析路由配置 - **主要方法**: - `analyzeRoutes()` - 分析路由配置 - `parseRouteConfig(routeContent)` - 解析路由配置 - `getModuleDirs()` - 获取模块列表 ## 使用方式 ```javascript const { ApiCollector, TriggerAnalyzer, FileGenerator, RouteAnalyzer } = require('./modules') // 创建实例 const apiCollector = new ApiCollector() const triggerAnalyzer = new TriggerAnalyzer() const fileGenerator = new FileGenerator() const routeAnalyzer = new RouteAnalyzer() // 使用模块 const routes = routeAnalyzer.analyzeRoutes() const moduleDirs = routeAnalyzer.getModuleDirs() const apiMappings = apiCollector.collectApiMappings(moduleDirs) const enhancedApiMappings = triggerAnalyzer.findTriggerSourcesForApiMappings(apiMappings) const optimizedApiMappings = fileGenerator.optimizeApiMappings(enhancedApiMappings) fileGenerator.generateMappingFile(routes, optimizedApiMappings) ``` ## 优势 1. **模块化**: 每个模块负责特定的功能,职责清晰 2. **可维护性**: 代码结构清晰,易于理解和修改 3. **可测试性**: 每个模块可以独立测试 4. **可复用性**: 模块可以在其他地方复用 5. **可扩展性**: 新功能可以作为新模块添加 ## 文件大小对比 - **原始文件**: `route-mapping-plugin.js` (2425行) - **模块化后**: - `route-mapping-plugin-modular.js` (约200行) - `api-collector.js` (约150行) - `ast-analyzer.js` (约200行) - `trigger-analyzer.js` (约300行) - `file-generator.js` (约100行) - `route-analyzer.js` (约80行) 总计约1030行,比原始文件减少了约57%的代码量,同时提高了可维护性。