【項目實訓】【項目博客#07】HarmonySmartCodingSystem系統前端開發技術詳解(5.12-6.15)
一、項目概述與目標
HarmonySmartCodingSystem是一個面向HarmonyOS開發者的智能編碼輔助平臺,旨在通過自然語言交互簡化開發流程,提供智能化的API文檔檢索和代碼生成服務。系統集成了多項創新功能,包括智能代碼生成、API文檔檢索、代碼高亮顯示等,幫助開發者提高編碼效率和代碼質量。
系統的主要目標包括:
- 提供智能化的API文檔檢索服務,支持自然語言查詢
- 實現代碼智能生成功能,根據用戶需求自動生成代碼
- 提供代碼高亮顯示,提升代碼可讀性
- 支持文件系統操作,實現代碼的保存和管理
- 優化開發體驗,提供便捷的操作方式
二、技術棧選擇
HarmonySmartCodingSystem前端采用了現代化的技術棧:
- 前端框架:Vue 3(基于Composition API)
- 開發語言:TypeScript
- 構建工具:Vite
- UI組件庫:Element Plus
- 代碼高亮:highlight.js
- CSS預處理器:SCSS
技術選型考慮了以下幾個方面:
- 性能與響應速度:Vue 3的響應式系統和虛擬DOM渲染機制確保了界面的高效更新
- 類型安全:TypeScript提供了靜態類型檢查,減少運行時錯誤
- 開發效率:Vite的快速熱重載和按需編譯大幅提升了開發效率
- 組件化:基于組件的開發方式提高了代碼復用率和可維護性
在package.json中,我們使用了以下主要依賴版本:
{"dependencies": {"vue": "^3.3.0","typescript": "^5.0.0","element-plus": "^2.3.0","highlight.js": "^11.11.1"}
}
三、系統架構設計
HarmonySmartCodingSystem前端采用了模塊化、組件化的架構設計:
1. 核心架構
- 主視圖層(
views/
):包含主要頁面視圖,如代碼編輯器、API檢索頁面等 - 組件層(
components/
):可復用的UI組件,如代碼高亮器、文件瀏覽器等 - 服務層(
services/
):封裝與后端API交互、文件系統操作等功能 - 狀態管理:使用Vue 3的響應式API管理應用狀態
2. 前端項目結構
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配置
3. 目錄說明
-
public目錄:
- 存放靜態資源文件
- 包含HTML模板和網站圖標
-
src目錄:
- assets:存放項目資源文件
- styles:全局樣式和主題文件
- images:圖片資源
- components:可復用組件
- CodeHighlighter:代碼高亮組件
- FileExplorer:文件瀏覽器組件
- OutputPanel:輸出面板組件
- views:頁面級組件
- CodeEditor:代碼編輯器頁面
- PureRAG:API檢索頁面
- services:服務層
- fileSystemService:文件系統操作服務
- ragService:API檢索服務
- utils:工具函數和輔助方法
- assets:存放項目資源文件
-
配置文件:
- package.json:項目依賴和腳本配置
- tsconfig.json:TypeScript編譯配置
- vue.config.js:Vue項目構建配置
- .eslintrc.js:代碼規范配置
4. 數據流設計
系統采用了單向數據流設計模式:
- 用戶操作觸發事件
- 事件處理函數調用服務層API
- 服務層返回數據更新狀態
- 狀態變化驅動UI更新
這種設計使得數據流向清晰可預測,便于調試和維護。
四、核心模塊實現
1. PureRAG模塊:智能API檢索系統
PureRAG模塊是系統的核心功能之一,提供了智能化的API文檔檢索服務。
1.1 核心組件
-
搜索框:支持自然語言查詢和API名稱直查
- 實現了智能提示功能,根據用戶輸入實時推薦可能的API
- 支持歷史查詢記錄,方便用戶重復查詢
- 提供API版本篩選功能,確保查詢結果與目標版本兼容
-
內容展示區:結構化展示API文檔和示例代碼
- 采用卡片式布局,清晰展示API名稱、描述、參數和返回值
- 集成代碼高亮功能,提升示例代碼的可讀性
- 支持代碼復制和運行功能
-
懸浮工具欄:提供復制代碼、主題切換等功能
- 實現了代碼一鍵復制功能,提高開發效率
- 支持明暗主題切換,適應不同使用場景
- 提供API文檔導出功能
1.2 技術實現
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的響應式系統實現實時更新:
<!-- PureRAG.vue簡化示例 -->
<template><div class="rag-container"><SearchBox @search="handleSearch" /><RAGResultTab :result="searchResult" /></div>
</template><script setup>
import { ref } from 'vue';
import { ragService } from '@/services';const searchResult = ref(null);const handleSearch = async (query) => {searchResult.value = await ragService.search(query);
};
</script>
2. 代碼高亮模塊:提升代碼可讀性
2.1 技術選型
選擇了highlight.js庫作為代碼高亮的核心技術,主要原因有:
- 豐富的語言支持:支持超過190種編程語言的語法高亮
- 自定義主題:提供多種內置主題,并支持自定義樣式
- 輕量級:可按需引入語言包,減小打包體積
- 易于集成:與Vue3框架良好兼容
- 社區活躍:持續更新和維護
2.2 組件設計
創建了獨立的CodeHighlighter
組件:
<template><pre><code :class="languageClass" ref="codeBlock" v-html="highlightedCode"></code></pre>
</template><script lang="ts">
import { defineComponent, ref, onMounted, watch, PropType } from 'vue';
import hljs from 'highlight.js';
import 'highlight.js/styles/vs2015.css';export default defineComponent({name: 'CodeHighlighter',props: {code: {type: String,required: true,default: ''},language: {type: String as PropType<string>,default: ''}}
});
</script>
組件接收兩個主要屬性:
code
:要高亮顯示的代碼字符串language
:代碼的語言類型
2.3 核心實現
// 注冊語言
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;}
};
2.4 樣式配置
/* 高亮樣式不應該被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;
}
3. 智能代碼模塊:編輯與生成的完美結合
3.1 整體架構
該模塊基于Vue 3 Composition API構建,核心架構包括:
- 主視圖:負責管理所有狀態和調度子組件
- 子組件:處理特定領域的任務
- 服務層:抽象出與外部(本地文件系統、后端API)的交互
3.2 輕量級代碼編輯器實現
通過兩層疊加實現了編輯功能:
-
底層:
<textarea>
- 負責輸入- 綁定
v-model="currentFileContent"
,接收所有鍵盤輸入 - 通過CSS
color: transparent;
使其文本透明,但caret-color
設為可見 - 作為光標位置計算的基準
- 綁定
-
上層:
<CodeHighlighter>
- 負責顯示- 通過
position: absolute
覆蓋在<textarea>
之上 - 接收
:code="currentFileContent"
屬性,對代碼進行語法高亮 - 通過
watch
和adjustEditorHeight
函數確保兩層同步
- 通過
3.3 文件系統集成
通過fileSystemService
與本地文件系統交互:
- 打開工作區:通過
fileSystemService.openDirectory()
獲取文件夾句柄 - 保存文件:通過
fileSystemService.saveFile(filePath, content)
將內容寫入本地文件 - 文件切換與讀取:通過
fileSystemService.openFile(filePath)
異步讀取文件內容
3.4 狀態管理:dirtyFiles
與響應式UI
系統通過Set
對象dirtyFiles
管理文件的未保存狀態:
- 添加:當用戶輸入或應用AI代碼時,將文件路徑添加到集合中
- 移除:當用戶保存或放棄更改時,從集合中移除文件路徑
UI根據dirtyFiles
狀態動態更新:
- 標簽頁上顯示未保存指示器
- 保存按鈕高亮顯示
- 關閉文件時彈出確認對話框
3.5 AI代碼應用:四種注入模式
系統支持四種AI代碼注入模式:
- 光標處:在當前光標位置插入代碼
- 文件開頭:在文件開頭插入代碼
- 文件結尾:在文件末尾插入代碼
- 替換:替換選中的代碼段
五、總結
HarmonySmartCodingSystem前端開發是一次將現代前端技術與復雜業務邏輯深度結合的實踐。通過Vue 3框架的強大能力,結合精心設計的組件和服務,系統實現了高效、易用的智能編碼輔助功能。
系統的核心價值在于:
- 提升開發效率:通過智能API檢索和代碼生成,減少開發者查詢文檔和編寫重復代碼的時間
- 降低學習成本:通過自然語言交互,降低HarmonyOS開發的學習門檻
- 優化開發體驗:通過代碼高亮、文件管理等功能,提供一站式開發輔助工具
作為HarmonyOS開發工具鏈中的一個嘗試,HarmonySmartCodingSystem仍在不斷探索和改進中。我們期待通過持續的技術創新和用戶反饋,為HarmonyOS開發者提供更好的開發體驗,同時也為鴻蒙生態的發展貢獻一份力量。