人妻一区日韩二区国产欧美的无码-人妻制服出轨中字在线-人妻中文字幕无码系列-人禽乱H交老女人片-人禽无码做爰在线观看-人禽无码做爰在线观看视频-人犬兽人高清在哪看-人人-人人app-人人av

首頁 > 產品大全 > 基于 Vue、ExtJS 與 Spring Boot 的雙版本通訊錄管理系統設計與實現

基于 Vue、ExtJS 與 Spring Boot 的雙版本通訊錄管理系統設計與實現

基于 Vue、ExtJS 與 Spring Boot 的雙版本通訊錄管理系統設計與實現

基于 Vue、ExtJS 與 Spring Boot 的雙版本通訊錄管理系統設計與實現

引言

隨著企業信息化建設的不斷深入,通訊錄管理系統已成為組織內部溝通協作的基礎設施。不同團隊對前端技術棧的偏好各異:部分團隊青睞現代輕量級的 Vue.js 生態,而傳統企業環境則可能已深度綁定 ExtJS 框架。為滿足多樣化需求,本文介紹如何利用 Spring Boot 構建統一后端,同時提供 Vue 和 ExtJS 兩套前端實現,打造雙版本通訊錄管理系統。該系統不僅支持聯系人管理、分組、搜索等核心功能,還兼具良好的可擴展性和維護性。

1. 系統總體架構

系統采用前后端分離架構:

  • 后端:Spring Boot + Spring MVC + Spring Data JPA + MySQL,提供 RESTful API,負責數據持久化、業務邏輯和權限控制(可根據需要擴展)。
  • 前端版本 A:Vue 3 + Vue Router + Pinia + Element Plus + Axios,構建現代化單頁應用(SPA)。
  • 前端版本 B:ExtJS 7 + 原生 AJAX,構建傳統重量級企業級界面。

兩套前端共用同一套后端接口,通過 HTTP 協議交互,數據格式為 JSON。這種設計保證了業務邏輯的統一,同時讓用戶根據習慣選擇前端。

2. 后端設計(Spring Boot)

2.1 技術選型

  • Spring Boot 3.x:快速構建獨立運行的應用。
  • Spring Data JPA:簡化數據庫操作。
  • MySQL 8.0:存儲聯系人數據。
  • Lombok:減少樣板代碼。
  • Validation:請求參數校驗。

2.2 數據模型

核心實體為 Contact(聯系人)和 Group(分組),關系為一對多。

`java @Entity @Data public class Contact { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String phone; private String email; private String company; private String address; @ManyToOne @JoinColumn(name = "group_id") private Group group; }

@Entity
@Data
public class Group {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "group", cascade = CascadeType.ALL)
private List contacts;
}
`

2.3 REST API 設計

提供如下接口:

  • GET /api/groups:獲取分組列表
  • POST /api/groups:新建分組
  • PUT /api/groups/{id}:更新分組
  • DELETE /api/groups/{id}:刪除分組
  • GET /api/contacts?name=&groupId=:分頁查詢聯系人
  • POST /api/contacts:新增聯系人
  • PUT /api/contacts/{id}:修改聯系人
  • DELETE /api/contacts/{id}:刪除聯系人

控制器示例:

`java @RestController @RequestMapping("/api/contacts") @RequiredArgsConstructor public class ContactController { private final ContactService contactService;

@GetMapping
public Page list(@RequestParam(required = false) String name,
@RequestParam(required = false) Long groupId,
Pageable pageable) {
return contactService.findContacts(name, groupId, pageable);
}

@PostMapping
public Contact create(@Valid @RequestBody Contact contact) {
return contactService.save(contact);
}
// 其他方法省略
}
`

2.4 跨域與安全

通過 @CrossOrigin 或全局配置允許前端域名訪問。可集成 Spring Security + JWT 實現認證授權(本文從簡)。

3. Vue 版本實現

3.1 項目結構

使用 Vite 創建 Vue 3 項目,安裝 Vue Router、Pinia、Element Plus、Axios。視圖包括聯系人列表、編輯表單、分組管理。

src/
├── api/          # Axios 封裝及接口定義
├── stores/       # Pinia 狀態管理
├── views/
│   ├── ContactList.vue
│   └── GroupManager.vue
├── router/
└── App.vue

3.2 核心組件

ContactList.vue 使用 Element Table 展示數據,配合 SearchBar 和分頁:

<template>
<el-table :data="contacts">
<el-table-column prop="name" label="姓名" />
<el-table-column prop="phone" label="電話" />
<el-table-column prop="email" label="郵箱" />
<el-table-column label="分組">
<template #default="scope">{{ scope.row.group?.name }}</template>
</el-table-column>
<el-table-column label="操作">
<template #default="scope">
<el-button @click="edit(scope.row)">編輯</el-button>
<el-button type="danger" @click="remove(scope.row.id)">刪除</el-button>
</template>
</el-table-column>
</el-table>
</template>

使用 Pinia 管理聯系人列表狀態,Axios 調用后端接口:

// api/contact.js
import axios from 'axios';
export const getContacts = (params) => axios.get('/api/contacts', { params });
export const createContact = (data) => axios.post('/api/contacts', data);
// ...

優點是響應式開發體驗好、組件生態豐富。

4. ExtJS 版本實現

4.1 項目搭建

使用 ExtJS 7 的 Sencha Cmd 或直接通過 CDN 引入。這里采用 CDN 引入方式快速演示。

<link rel="stylesheet" href="https://cdn.sencha.com/ext/gpl/7.5.1/build/classic/theme-neptune/resources/theme-neptune-all.css">
<script src="https://cdn.sencha.com/ext/gpl/7.5.1/build/ext-all.js"></script>

4.2 視圖與數據綁定

使用 Ext.grid.Panel 展示聯系人,Store 配置 proxy 指向后端 API:

`javascript Ext.define('Contacts.view.ContactList', { extend: 'Ext.grid.Panel', title: '通訊錄', store: { fields: ['id', 'name', 'phone', 'email', 'groupId'], proxy: { type: 'ajax', url: '/api/contacts', reader: { type: 'json', rootProperty: 'content' } }, autoLoad: true }, columns: [ { text: '姓名', dataIndex: 'name', flex: 1 }, { text: '電話', dataIndex: 'phone', flex: 1 }, { text: '郵箱', dataIndex: 'email', flex: 1 }, { text: '操作', renderer: function(value, meta, record) { return ''; } } ], dockedItems: [{ xtype: 'pagingtoolbar', store: 'this.store', dock: 'bottom' }] });

Ext.application({
name: 'Contacts',
launch: function() {
Ext.create('Contacts.view.ContactList', { renderTo: Ext.getBody() });
}
});
`

ExtJS 具備強大的表格和表單組件,適合企業級復雜界面。

5. 雙版本整合與部署

5.1 開發環境

后端運行在 localhost:8080。Vue 開發服務器(默認 5173)、ExtJS 頁面可通過簡單 HTTP 服務器(如 serve)運行在另一端口,需處理跨域。

5.2 生產部署

將 Vue 構建的靜態文件(dist)和 ExtJS 靜態文件放置于 Spring Boot 的 src/main/resources/static 不同子目錄下,如 /vue-app 和 /extjs-app,后端通過配置 CORS 允許請求來源。訪問方式:

  • http://localhost:8080/vue-app/ 使用 Vue 版本
  • http://localhost:8080/extjs-app/ 使用 ExtJS 版本

可通過 Nacos 或類 Nginx 反向代理實現統一入口。

6. 與展望

本文詳細闡述了基于 Spring Boot 后端同時提供 Vue 和 ExtJS 兩個版本前端的通訊錄管理系統解決方案。Vue 版本適合追求輕量、現代化開發體驗的團隊;ExtJS 版本滿足傳統企業應用需求。后端統一管理業務邏輯和數據,保證了雙版本功能一致性。未來可引入 GraphQL、WebSocket 實現實時更新,或增加聯系人智能分組、權限精細控制等特性,進一步提升系統價值。

雙版本設計符合技術多元化的現狀,為不同背景的開發者提供了靈活選擇,具有較高的實用性和借鑒意義。

如若轉載,請注明出處:http://www.slys888.cn/product/43.html

更新時間:2026-11-09 03:07:12

主站蜘蛛池模板: 国产福利第二页 | 免费不卡看黄网址 | 精品福利导航 | 欧美第一页福利 | 亚洲āv | 欧美日韩在线国产 | 伊人青青草在线 | 日本一不卡视频 | 四虎直播观看 | 欧美成人手机 | 中文字幕在线欧美 | 国产精选在线视频 | 一区国产在线观看 | 国产高清hd | 免费h片网址| 日韩高清视频 | 中日韩欧一级影院 | 孕妇视频一区二区 | 欧美人妖自蔚 | 激情亚洲区第一页 | 国产福视频网站 | 三级带黄色无码 | 茄子91| 午夜精品福利网址 | 最新91网站 | 午夜叉叉叉永久九 | 91精品国产视频 | 无码色网视频 | 欧美成人一区二 | 久草最新在线视频 | 91论坛九色| 国产激情精品一 | 蜜臀tv| 日韩经典电影 | 草逼免费| 国产婷婷五月天 | 日本电影片 | 日韩午夜兔费电影 | 丝袜女同 | 在线视频日韩欧美 | 乱伦理论片 |