技术栈
本页只记录工作区代码中实际使用的技术。仓库全景见 仓库总览。
鸿蒙应用(qxj_harmony_next_pad_nsp_browser)
| 技术 | 实际版本 / 口径 | 用途 |
|---|---|---|
| HarmonyOS SDK | target 6.1.1(24),compatible 5.0.5(17) | 目标 / 兼容版本 |
| ArkTS / ArkUI | V1(@Component 为主)与 V2(@ComponentV2,多标签等新功能)混用 | 开发语言 / UI |
| hvigor | 工程自带 wrapper | 构建系统 |
| hpack | 独立工具仓(自研 Python 脚本) | 打包 / 签名(hpack pd / hpack pr) |
| 一多架构 | 6 HAR(common + browser/device/helloworld/showcase/qxj_sdk)+ 3 entry HAP(tablet / phone / pc) | 模块组织 |
| @nsp/qxj-sdk | 内置 HAR(file:),AKI ^1.2.21 + C 库 libnspsm2handshake / libnspsmapi | 国密握手与算法 |
| @pura/harmony-utils / picker_utils | ^1.4.2 / ^1.0.1 | 工具与文件选择 |
| @amap amap_lbs_common/location/map3d | ≥11.1.103 | 定位与地图 |
products/tablet 实际依赖(oh-package.json5):
json5
{
"dependencies": {
"@ohos/common": "file:../../common",
"@ohos/helloworld": "file:../../features/helloworld",
"@ohos/device": "file:../../features/device",
"@ohos/browser": "file:../../features/browser",
"@ohos/showcase": "file:../../features/showcase",
"@nsp/qxj-sdk": "file:../../features/qxj_sdk",
"@pura/harmony-utils": "^1.4.2",
"@pura/picker_utils": "^1.0.1",
"@amap/amap_lbs_common": ">=11.1.103",
"@amap/amap_lbs_location": ">=11.1.103",
"@amap/amap_lbs_map3d": ">=11.1.103"
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
📖 相关阅读:鸿蒙应用架构 · 仓库详解 · harmony-browser · 辅助工具 · hpack
Web 前端
qxj-frontend-admin(pnpm,Node ≥ 20.19;dev 端口 5173):
| 技术 | 实际版本 | 用途 |
|---|---|---|
| Vue | 3.5 | 框架 |
| Vite | 7 | 构建 |
| TypeScript | 5.6 | 类型 |
| Element Plus | 2.11 | PC UI |
| ECharts | 6 | 图表 |
| Pinia | 3(+ persistedstate) | 状态 |
| Vue Router | 4.5 | 路由 |
| Tailwind CSS | 4 | 样式 |
| Sass | 1.81 | 预处理样式 |
| axios | 1.x | HTTP |
| vue-i18n | 9.14 | 前端国际化 |
| qxj-frontend-sdk | 0.2.3(vendor tgz) | JSBridge / 国密 |
| qrcode.vue | 3.x | 二维码渲染 |
| crypto-js | 4.x | 通用杂凑工具 |
| xlsx / xgplayer / wangeditor | 0.18 / 3.x / 5.x | Excel 导入导出 / 视频播放 / 富文本 |
| highlight.js | 11.x | 代码高亮 |
其他 Web 站点:apps.nsp.ac.cn(Vue 3.5 + Vue Router 4.5 + Vite 6,无 UI 库)、 env-config-helper-web(Vue 3 + Element Plus,端口 5174)、 qrcode-helper / test-sm2-jwt(原生 HTML/JS 静态页,CDN 引入 qrcodejs / sm-crypto)。
📖 相关阅读:仓库详解 · frontend-admin · 前端架构 · 应用商店仓库 · 辅助工具汇总
服务端(qxj-backend-admin,默认端口 4607)
| 技术 | 实际版本 | 用途 |
|---|---|---|
| Python | 3.8+(建议 3.11) | 语言 |
| Django | 4.2.25 | Web 框架 |
| DRF | 3.15.2 | REST |
| simplejwt | 5.3.1 | 仅复用其异常类(InvalidToken / TokenError);令牌为自定义 NSP-SM(alg 标识 NSP-SM,签名算法 SM2withSM3) |
| django-redis | 5.4.0 | 缓存 / 会话密钥 |
| django-filter | 24.3 | 过滤 |
| drf-spectacular | 0.29.0 | OpenAPI |
| django-cors-headers | 4.4.0 | CORS |
| gunicorn | 23.0.0 | WSGI(生产,原生支持 HTTPS 参数) |
| whitenoise | 6.7.0 | 静态文件(生产可直接托管前端构建产物) |
| pyOpenSSL / Werkzeug / django-extensions | 26.2.0 / 3.0.6 / 3.2.3 | TLS 证书生成 / runserver_plus(HTTPS 自签) |
| alibabacloud captcha / dypnsapi | requirements 内 | 阿里云验证码 2.0 / 阿里云短信验证码服务 |
| python-dotenv / qrcode / requests | requirements 内 | .env 加载 / 二维码生成 / HTTP 客户端 |
| qxj_backend_sdk | 0.1.0(vendor wheel) | Token / 加密封装 |
- 数据库:默认 SQLite,
DB_ENGINE=mysql切 MySQL; - Redis:django-redis,JSONSerializer(禁 pickle),KEY_PREFIX=
qxj、VERSION=1; - 共 14 个本地 app(users/auth/keymgr/devices/device_public_keys/roles/user_roles/ geofences/role_geofences/time_rules/role_time_rules/security_logs/sms/captcha);
docker/目录提供安全基线的 Dockerfile + compose(Redis 不发布端口、web 默认只绑 loopback、必填密钥变量);当前生产实际以裸机 gunicorn + 宿主机 Redis 运行;- 未使用 Celery、未使用 Casbin,无 CI 流水线文件。
📖 相关阅读:后端架构 · 仓库详解 · backend-admin · 部署文档
SDK 与分发形态
| SDK | 形态 | 版本 | 分发方式 |
|---|---|---|---|
| qxj-backend-sdk | Python wheel(三包:sdk / auth / cryptography) | 0.1.0 | 各工程 vendor/ 本地 wheel |
| qxj-frontend-sdk | npm tgz(cjs/mjs/umd,发布仅 dist) | 0.2.3 | 各工程 vendor tgz |
| @nsp/qxj-sdk | 鸿蒙 HAR(C++ MIRACL + NAPI/AKI) | 随浏览器工程 | file: 内置 |
开发工具
| 工具 | 用途 |
|---|---|
| DevEco Studio | 鸿蒙开发(API 6.1.1(24)) |
| VS Code | Web / 文档开发 |
| Wireshark + qxj.lua | 二进制帧抓包分析 |
| qxj-envcheck | 前后端 .env 校验 CLI |
| repo(Google) | 多仓库工作区管理(.git 为符号链接,git 走 WSL) |