軟件工程學習日志2025.10.27
?? 今日目標
完成基于Trae框架的IT崗位求職記錄系統(tǒng)開發(fā),重點訓練數(shù)據(jù)庫的增刪改查操作能力
?? 項目啟動:9:00 AM
技術選型確定
今天開始著手開發(fā)老師布置的IT崗位求職記錄系統(tǒng)。經(jīng)過技術調(diào)研,我決定采用以下技術棧:
? 前端框架:Vue.js 3(組合式API)
? HTTP客戶端:Trae(輕量級HTTP庫)
? UI組件庫:Element Plus
? 模擬后端:JSON Server
? 開發(fā)工具:VS Code + Vue Devtools
初始化項目
vue create job-tracker-system
cd job-tracker-system
npm install trae element-plus
npm install -g json-server
項目結(jié)構(gòu)設計
src/
├── api/
│ └── trae.js # Trae配置
├── services/
│ └── jobService.js # 崗位相關API
├── components/
│ ├── JobList.vue # 崗位列表
│ ├── AddJob.vue # 添加崗位
│ └── EditJob.vue # 編輯崗位
├── views/
│ ├── Home.vue # 首頁
│ └── Jobs.vue # 崗位管理
└── App.vue
?? 核心開發(fā):10:30 AM - 12:00 PM
- Trae配置實現(xiàn)
首先配置Trae作為HTTP客戶端,這是本次訓練的重點:
// src/api/trae.js
import trae from 'trae';
import { ElMessage } from 'element-plus';
const api = trae.create({
baseUrl: 'http://localhost:3001',
mode: 'cors'
});
// 請求攔截器
api.before((request) => {
console.log(?? 發(fā)送請求: ${request.method} ${request.url});
return request;
});
// 響應攔截器
api.after((response) => {
if (response.status >= 200 && response.status < 300) {
return response.data;
} else {
ElMessage.error(請求失敗: ${response.status});
throw new Error(HTTP Error: ${response.status});
}
});
export default api;
- 崗位服務層封裝
封裝了完整的CRUD操作服務:
// src/services/jobService.js
import api from '@/api/trae';
export default {
// 獲取崗位列表(帶篩選)
async getJobs(filters = {}) {
try {
const params = {};
if (filters.company) params.company_like = filters.company;
if (filters.position) params.position_like = filters.position;
const response = await api.get('/jobs', { params });
console.log('?? 獲取到崗位數(shù)據(jù):', response.length, '條');
return response;
} catch (error) {
console.error('? 獲取崗位列表失敗:', error);
throw error;
}
},
// 添加新崗位
async addJob(jobData) {
try {
const newJob = {
...jobData,
createdAt: new Date().toISOString().split('T')[0],
id: Date.now() // 簡單ID生成
};
const response = await api.post('/jobs', newJob);
console.log('? 添加崗位成功:', response);
return response;
} catch (error) {
console.error('? 添加崗位失敗:', error);
throw error;
}
}
};
?? 午休時間:12:00 - 13:30
簡單休息后,整理了上午的開發(fā)思路,發(fā)現(xiàn)Trae的攔截器配置比axios更簡潔明了。
?? 功能開發(fā):13:30 PM - 16:00 PM
- 崗位列表組件開發(fā)
實現(xiàn)了帶篩選功能的列表頁面:
開發(fā)者:張三 - 信2105-1
系統(tǒng)開發(fā)時間:2023年10月25日
<!-- 篩選區(qū)域 -->
<el-card class="filter-card">
<el-form :model="filterForm" inline>
<el-form-item label="企業(yè)名稱">
<el-input
v-model="filterForm.company"
placeholder="輸入企業(yè)名稱"
@keyup.enter="handleSearch"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSearch">
?? 搜索
</el-button>
<el-button @click="handleReset">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<!-- 崗位表格 -->
<el-table :data="jobList" stripe style="width: 100%">
<el-table-column prop="company" label="企業(yè)" width="180" />
<el-table-column prop="position" label="崗位名稱" width="150" />
<el-table-column prop="salary" label="薪資范圍" width="120" />
<el-table-column prop="requirements" label="具體要求" show-overflow-tooltip />
<el-table-column label="操作" width="150">
<template #default="scope">
<el-button size="small" @click="handleEdit(scope.row)">
?? 編輯
</el-button>
<el-button size="small" type="danger" @click="handleDelete(scope.row.id)">
??? 刪除
</el-button>
</template>
</el-table-column>
</el-table>
- 添加崗位功能
實現(xiàn)了表單驗證和數(shù)據(jù)提交:
// 在AddJob組件中的提交邏輯
async handleSubmit() {
try {
// 表單驗證
await this.$refs.jobForm.validate();
// 顯示加載狀態(tài)
this.loading = true;
// 調(diào)用Trae服務
await jobService.addJob(this.formData);
// 成功反饋
ElMessage.success('?? 崗位添加成功!');
// 跳轉(zhuǎn)回列表頁
this.$router.push('/jobs');
} catch (error) {
if (error.name !== 'ValidationError') {
ElMessage.error('? 添加失敗,請重試');
}
} finally {
this.loading = false;
}
}
? 技術難點突破:16:00 PM - 17:30 PM
遇到的挑戰(zhàn)與解決方案
難點1:Trae的響應攔截器配置
? 問題:初始配置時對錯誤處理不完善
? 解決:增加了狀態(tài)碼判斷和統(tǒng)一錯誤處理
難點2:篩選查詢的實現(xiàn)
? 問題:JSON Server的模糊查詢語法不熟悉
? 解決:使用_like參數(shù)實現(xiàn)模糊匹配
難點3:組件間數(shù)據(jù)傳遞
? 問題:編輯頁面數(shù)據(jù)回顯問題
? 解決:使用Vuex進行狀態(tài)管理,確保數(shù)據(jù)一致性
數(shù)據(jù)庫設計優(yōu)化
// db.json 數(shù)據(jù)結(jié)構(gòu)
{
"jobs": [
{
"id": 1,
"company": "字節(jié)跳動",
"position": "前端開發(fā)工程師",
"salary": "25-40K",
"requirements": "熟悉Vue/React,有大型項目經(jīng)驗",
"status": "active",
"createdAt": "2023-10-25",
"updatedAt": "2023-10-25"
}
]
}
?? 項目成果展示:18:00 PM
功能完成情況
? ? 崗位添加功能(包含完整表單驗證)
? ? 崗位列表展示(支持分頁)
? ? 條件篩選查詢(按企業(yè)/崗位名稱)
? ? 崗位信息編輯(數(shù)據(jù)回顯+更新)
? ? 崗位刪除功能(確認對話框)
? ? 響應式布局設計
技術亮點
- Trae的優(yōu)雅使用:配置了完整的請求/響應攔截器
- 組件化設計:高復用的表單和表格組件
- 錯誤處理:統(tǒng)一的錯誤提示和加載狀態(tài)
- 用戶體驗:操作反饋和確認機制
?? 今日學習總結(jié)
掌握的新技能
- Trae深度使用:相比axios,Trae更輕量,API設計更簡潔
- RESTful API設計:規(guī)范的接口設計思想
- 前端工程化:項目結(jié)構(gòu)組織和代碼分割
- 用戶體驗優(yōu)化:加載狀態(tài)、錯誤處理等細節(jié)
需要改進的地方
? 可以增加更多篩選條件(薪資范圍、工作地點等)
? 添加數(shù)據(jù)導出功能(Excel格式)
? 實現(xiàn)權(quán)限管理(不同用戶的數(shù)據(jù)隔離)

浙公網(wǎng)安備 33010602011771號