HarmonySmartCodingSystem是一个面向HarmonyOS开发者的智能编码辅助平台,旨在通过自然语言交互简化开发流程,提供智能化的API文档检索和代码生成服务。系统集成了多项创新功能,包括智能代码生成、API文档检索、代码高亮显示等,帮助开发者提高编码效率和代码质量。
系统的主要目标包括:
HarmonySmartCodingSystem前端采用了现代化的技术栈:
技术选型考虑了以下几个方面:
在package.json中,我们使用了以下主要依赖版本:
{
"dependencies": {
"vue": "^3.3.0",
"typescript": "^5.0.0",
"element-plus": "^2.3.0",
"highlight.js": "^11.11.1"
}
}
HarmonySmartCodingSystem前端采用了模块化、组件化的架构设计:
views/
):包含主要页面视图,如代码编辑器、API检索页面等components/
):可复用的UI组件,如代码高亮器、文件浏览器等services/
):封装与后端API交互、文件系统操作等功能frontend/
├── public/ # 静态资源目录
│ ├── index.html # HTML模板
│ └── favicon.ico # 网站图标
├── src/ # 源代码目录
│ ├── assets/ # 资源文件
│ │ ├── styles/ # 样式文件
│ │ └── images/ # 图片资源
│ ├── components/ # 公共组件
│ │ ├── CodeHighlighter.vue # 代码高亮组件
│ │ ├── FileExplorer.vue # 文件浏览器组件
│ │ └── OutputPanel.vue # 输出面板组件
│ ├── views/ # 页面视图
│ │ ├── CodeEditor.vue # 代码编辑器页面
│ │ └── PureRAG.vue # API检索页面
│ ├── services/ # 服务层
│ │ ├── fileSystemService.ts # 文件系统服务
│ │ └── ragService.ts # API检索服务
│ ├── utils/ # 工具函数
│ ├── App.vue # 根组件
│ └── main.ts # 入口文件
├── package.json # 项目依赖配置
├── tsconfig.json # TypeScript配置
├── vue.config.js # Vue项目配置
└── .eslintrc.js # ESLint配置
public目录:
src目录:
配置文件:
系统采用了单向数据流设计模式:
这种设计使得数据流向清晰可预测,便于调试和维护。
PureRAG模块是系统的核心功能之一,提供了智能化的API文档检索服务。
搜索框:支持自然语言查询和API名称直查
内容展示区:结构化展示API文档和示例代码
悬浮工具栏:提供复制代码、主题切换等功能
PureRAG模块通过ragService
与后端API交互:
// ragService.ts核心实现
static async search(query: string, filters: any): Promise<any> {
try {
const response = await axios.post(`${this.apiUrl}/rag_query`, {
query,
filters: {
version: filters.version,
category: filters.category
}
});
return response.data;
} catch (error) {
console.error("Search error:", error);
throw error;
}
}
在UI层面,使用Vue的响应式系统实现实时更新:
选择了highlight.js库作为代码高亮的核心技术,主要原因有:
创建了独立的CodeHighlighter
组件:
组件接收两个主要属性:
code
:要高亮显示的代码字符串language
:代码的语言类型// 注册语言
hljs.registerLanguage('javascript', javascript);
hljs.registerLanguage('typescript', typescript);
hljs.registerLanguage('arkts', typescript); // 使用TypeScript高亮规则处理ArkTS
// 高亮处理逻辑
const highlightCode = () => {
languageClass.value = props.language ? `language-${props.language}` : '';
if (props.code && props.language) {
try {
const highlighted = hljs.highlight(props.code, {
language: props.language,
ignoreIllegals: true
});
highlightedCode.value = highlighted.value;
} catch (error) {
console.error('高亮处理错误:', error);
highlightedCode.value = props.code;
}
} else {
highlightedCode.value = props.code;
}
};
/* 高亮样式不应该被scoped限制 */
pre {
margin: 0;
padding: 0;
border-radius: 4px;
overflow: auto;
}
code {
font-family: 'Fira Code', Consolas, Monaco, 'Andale Mono', monospace;
font-size: 14px;
line-height: 1.5;
padding: 1em;
white-space: pre;
word-spacing: normal;
word-break: normal;
tab-size: 4;
}
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: #1E1E1E;
color: #DCDCDC;
}
该模块基于Vue 3 Composition API构建,核心架构包括:
通过两层叠加实现了编辑功能:
底层: - 负责输入
v-model="currentFileContent"
,接收所有键盘输入color: transparent;
使其文本透明,但caret-color
设为可见上层:
- 负责显示
position: absolute
覆盖在
之上:code="currentFileContent"
属性,对代码进行语法高亮watch
和adjustEditorHeight
函数确保两层同步通过fileSystemService
与本地文件系统交互:
fileSystemService.openDirectory()
获取文件夹句柄fileSystemService.saveFile(filePath, content)
将内容写入本地文件fileSystemService.openFile(filePath)
异步读取文件内容dirtyFiles
与响应式UI系统通过Set
对象dirtyFiles
管理文件的未保存状态:
UI根据dirtyFiles
状态动态更新:
系统支持四种AI代码注入模式:
HarmonySmartCodingSystem前端开发是一次将现代前端技术与复杂业务逻辑深度结合的实践。通过Vue 3框架的强大能力,结合精心设计的组件和服务,系统实现了高效、易用的智能编码辅助功能。
系统的核心价值在于:
作为HarmonyOS开发工具链中的一个尝试,HarmonySmartCodingSystem仍在不断探索和改进中。我们期待通过持续的技术创新和用户反馈,为HarmonyOS开发者提供更好的开发体验,同时也为鸿蒙生态的发展贡献一份力量。