Skip to content

★现代软件开发介绍★

整个软件工业界目前所有的主流交付形态,按照技术流派产品形态给你做一个最详尽、最硬核的拆解。

请收好这张现代软件交付形式的“族谱”

🗺️ 现代软件交付全景图 (The Grand Map)

我们把所有软件分为四大疆域:移动端 (Mobile)桌面端 (Desktop)网页端 (Web)生态端 (Mini Apps)

🏰 第一疆域:移动端 App (Mobile Applications)

这是目前竞争最惨烈、技术分层最细的领域。虽然用户看着都是一个图标,但背后的技术千差万别。

1. 纯原生开发 (Native) —— “皇室血统”

  • 代表:微信核心功能、抖音视频流、王者荣耀。
  • 技术栈:Java/Kotlin (Android), Objective-C/Swift (iOS)。
  • 形态:直接调用系统底层 API,没有中间商赚差价。
  • 优点:性能天花板(满帧运行)、能用最新硬件(比如刚出的灵动岛,原生立刻能适配)。
  • 缺点:极贵。改个颜色都要发版审核。

2. 跨平台原生渲染 (Cross-Platform Native) —— “闲鱼模式”

  • 代表闲鱼 (Flutter), 美团 (React Native)。
  • 技术栈Flutter (Dart), React Native (JS)
  • 原理:这是你提到的重点。
    • Flutter (闲鱼):Google 自己写了一个渲染引擎(Skia),不通过系统的组件,直接像游戏引擎一样在屏幕上画按钮。所以它极快,几乎和原生一样快,而且一套代码同时跑安卓和 iOS。
    • React Native:你写的是 JS,但它在运行时把 JS 组件“映射”成原生的安卓/iOS 组件。
  • 意义:大厂为了省钱(一套代码跑两端)同时又不愿牺牲性能的最佳选择。

3. 混合开发 (Hybrid / WebView) —— “你的记账App”

  • 代表:手机银行 App、京东/淘宝的活动页、大多数企业内部 App。
  • 技术栈HBuilderX (Uni-app), Ionic, Cordova。
  • 原理:App 只是一个“浏览器壳子”,里面装的是网页。通过“桥接技术 (JSBridge)”让网页能调摄像头。
  • 优点:开发神速,热更新(不用重装 App 就能换页面)。
  • 缺点:性能受限,列表长了会卡,做不了复杂动画。

🌍 第二疆域:网页端 (Web / Browser)

浏览器里的世界,早已不是简单的“显示文字”。

1. 传统多页应用 (MPA) —— “门户时代”

  • 代表:新浪新闻、很多学校官网、亚马逊主页。
  • 技术栈:JSP, PHP, Python (Django)。
  • 特点:点一个链接,浏览器就要“白屏”刷新一下。
  • 意义:SEO(搜索引擎优化)最好,Google 百度最喜欢抓取这种页面。

2. 单页应用 (SPA) —— “现代体验”

  • 代表:网易云音乐网页版、知乎、Gmail。
  • 技术栈Vue, React, Angular
  • 特点:就像个 App 一样,点击切换丝滑,不需要刷新网页。数据是动态加载的。
  • 意义:目前 Web 开发的主流标准,体验无限接近桌面软件。

3. 渐进式 Web 应用 (PWA) —— “网页的逆袭”

  • 代表:Twitter Lite, Starbucks 网页版。
  • 特点:它本质是网页,但可以添加到手机桌面,甚至可以离线运行(Service Worker 技术)。
  • 意义:Google 极力推崇,试图用网页取代 App,但在苹果手机上支持度一般。

4. WebAssembly (Wasm) —— “黑科技”

  • 代表Figma (在线设计工具)、AutoCAD 网页版。
  • 特点:把 C++ 或 Rust 代码编译成浏览器能跑的格式。
  • 意义:让浏览器能跑 PS、视频剪辑这种超重型软件。

脚本与插件开发 (Scripts & Extensions)

  • 你在做的事:你是MOD(模组)玩家
  • 工作内容:游戏(网站)别人已经做好了,你觉得主角衣服不好看,写代码换一套;你觉得钱难赚,写代码改一下金钱数据。
  • 难度:低。你不需要造整个世界,你只需要修改你如果不爽的地方。
  • 技术栈完全一样! 用的也是制作游戏的工具(HTML/CSS/JS)。

💻 第三疆域:桌面端 (Desktop)

电脑软件不仅仅是 .exe。

1. 纯原生桌面 (Native Desktop) —— “性能怪兽”

  • 代表:3A 游戏 (Cyberpunk 2077), Adobe Premiere, Office 全家桶。
  • 技术栈:C++, C#, WPF, MacOS Swift。
  • 意义:榨干 CPU 和 显卡 的每一滴性能。

2. Electron (Web 桌面化) —— “降维打击”

  • 代表VS Code, Discord, Notion, Slack
  • 技术栈:Chromium (浏览器内核) + Node.js。
  • 原理:你看着是个软件,其实它打开了一个浏览器窗口。因为 Web 开发太快太方便了,现在 80% 的新办公软件都是用这个做的。
  • 你的机会:你现在学会了 HTML/JS,只需要学一点 Electron,你就能把你那个记账 Web App 打包成一个电脑软件。

🏝️ 第四疆域:生态小程序 (Mini Programs)

这是中国互联网的特殊产物,寄生在“超级 App”之上。

  • 微信/支付宝/抖音小程序
    • 技术:类 Web 技术(WXML/WXSS),魔改版的 HTML/CSS。
    • 限制:包体积不能超过 2MB(主包),不能跳出微信。
    • 意义:连接线下。扫码点餐、充电宝、健康码,这些“用完即走”的场景是它的统治区。

📊 总结:开发者该如何选择?(决策矩阵)

作为开发者,当你有一个 Idea 时,你应该根据**“我们要什么”**来选择开发形式。以下是行业内的决策逻辑:

你的需求 (Requirement)推荐形式 (Solution)典型案例理由
极致性能 / 复杂图形 / 硬件强依赖Native App (原生)王者荣耀, 相机App只有原生能跑满 GPU,延迟最低。
性能要求高 / 预算有限 / 需双端发布Flutter / RN (跨平台)闲鱼, 滴滴性能接近原生,一套代码省一半钱。
内容展示 / 快速迭代 / 预算极低Hybrid / Uni-app (混合)你的记账App, 企业OA只要会写网页就能搞定,开发效率第一。
即用即走 / 强社交裂变小程序拼多度砍一刀, 喜茶点单利用微信的流量和免安装特性。
专业生产力工具 / 办公软件Electron (桌面Web)VS Code, Notion界面复杂,用 Web 写界面最快最漂亮。
重型创作工具 / 3A游戏Native Desktop (C++)Photoshop, 3D Max必须直接操作内存和显卡。

💡 给你的最终建议

现在的你(大四,离线记账项目),处于 Hybrid (混合开发) 这个生态位。

  • 这是“性价比”最高的选择。 你用 20% 的学习成本,解决了 80% 的用户需求(记账、查账、统计)。
  • 你看不到的冰山: 真正的工业级 App(比如淘宝),是混合的。
    • 它的首页可能是原生写的(为了秒开,不卡顿)。
    • 它的商品详情页可能是 Flutter 写的(为了双端一致)。
    • 它的**活动页(双11)**是 Web/Hybrid 写的(因为活动经常变,需要随时在线更新,不需要发版)。

没有最好的技术,只有最适合场景的技术。

🎞️后端&数据端视角理解现代软件

我的提问

->哇,那先不管后端的开发和数据层的开发。就说前端的展示,只要会web三件套,就能走遍现代软件了?那后端和数据端有没有类似相当于web三件套在前端的地位的?刚才介绍的:🗺️ 现代软件交付全景图 (The Grand Map) 应该是站在应用结果的前端展示角度来描述的吧?还是说其实也涉及了后端和数据层的描述?还是说后端和数据端有别的系统性介绍?

直接回答你:

  1. 关于前端: 是的!HTML/CSS/JS (Web三件套) 确实就是现代开发界的“通用语”。只要精通这三样,配合不同的“外壳”(Electron、Uni-app、React Native),你确实可以通吃 网页、手机App、电脑软件、小程序。这是性价比最高的技能投资。
  2. 关于刚才的地图: 你说得很对。刚才那张《现代软件交付全景图》,确实是站在**“前台/展示层”**(即用户看到的结果)的角度来划分的。因为它描述的是“产品长什么样”。
  3. 关于后端: 后端和数据层没有像 HTML/CSS/JS 这样绝对统一的“三件套”。前端是**“一种语言,到处运行”,后端是“百家争鸣,协议统一”**。

为了让你融会贯通,我为你画两张图。一张确认你的“前端通吃论”,一张为你揭开隐藏在水面下的“后端系统图”。


第一张图:前端的“万能钥匙”逻辑 🔑

(你的理解完全正确,Web三件套就是核心)

只要你掌握了 HTML (结构) + CSS (皮肤) + JS (动作),你只需要换不同的**“交通工具”**(框架/容器),就能去不同的地方:

  • 浏览器 🌍 -> 坐 Vue/React 的车 -> 产出 Web网站
  • 手机 📱 -> 坐 HBuilderX/Uni-app 的车 -> 产出 App / 小程序
  • 电脑桌面 💻 -> 坐 Electron 的车 -> 产出 PC软件 (如Trae)

结论: 在展示层,Web 技术确实已经统治了半壁江山。


第二张图:后端与数据的“新三件套” ⚙️

(这是你想要寻找的后端“地位等同物”)

后端没有HTML/CSS/JS这种“垄断”级别的语言(Java, Python, Go, Node.js 谁也不服谁)。但是,后端有三个核心概念,它们的地位等同于前端的三件套,是所有后端开发的公约数

1. 🐧 Linux (地位等同于:前端的浏览器环境)

不管你用 Java 还是 Python 写代码,最终 99% 的后端程序都跑在 Linux 系统上

  • 不懂 Linux 命令(cd, ls, ps, grep),就像前端不懂浏览器怎么刷新一样。
  • 它是后端世界的空气和水。

2. 🗄️ SQL (地位等同于:前端的HTML结构)

不管你用什么数据库(MySQL, PostgreSQL, Oracle),SQL (结构化查询语言) 是通用的。

  • SELECT * FROM user WHERE id = 1。这句话在几乎所有关系型数据库里都能跑。
  • 它是数据界的“普通话”。

3. 🌐 HTTP & JSON (地位等同于:前端的JS交互)

后端不管用什么语言写,怎么跟前端沟通?怎么跟别人的系统沟通?

  • HTTP: 传输协议(快递员)。
  • JSON: 数据格式(包裹里的东西)。
  • API: 接口(收发室窗口)。
  • 这是全世界软件系统互联互通的唯一标准

总结:后端的“三件套”是 Linux + SQL + HTTP协议。 掌握了这三个,你学 Java 还是 Python 只是换把锤子而已。


第三张图:后端与数据层的“冰山系统全景” 🧊

刚才那张图是“冰山上的风景”(APP、网站),现在我们潜入水下,看看支撑这些风景的后端工业体系

这个体系不分 Java 或 Python,这是所有现代后端架构的通用蓝图:

Level 1: 门户大门 (Gateway Layer)

前端请求来了,谁先接待?

  • Nginx: 前台保安。所有流量先经过它,它负责负载均衡(人多了分流)、反向代理(把请求转给后台)。
  • API Gateway: 业务接待员。负责检查你的身份(Token鉴权)、限流(别刷太快)。

Level 2: 计算大脑 (Compute Layer) —— 这里就是你写 Java/Python 的地方

这里是处理业务逻辑的地方。

  • 单体应用: 一个大程序干所有事。
  • 微服务 (Microservices): 一群小程序协作(用户服务、订单服务、支付服务)。
  • 容器 (Docker/K8s): 大脑的工位。现在不直接把程序跑在服务器硬盘上了,都跑在 Docker 容器里,方便管理。

Level 3: 极速缓存 (Caching Layer)

为了快,大脑不直接查档案柜。

  • Redis: 办公桌上的便利贴。放着最常用的数据(比如用户登录状态、商品库存)。CPU 拿这个数据只要 1 毫秒。

Level 4: 永久存储 (Storage Layer)

真正的数据档案室。

  • RDBMS (MySQL): 主档案柜。存钱、存订单,绝对不能丢,格式整整齐齐。
  • NoSQL (MongoDB): 杂物箱。存日志、存评论,格式随意。
  • OSS (Object Storage): 仓库。存图片、视频、安装包文件。

Level 5: 消息管道 (Messaging Layer)

不同部门之间怎么传话?

  • MQ (Message Queue): 内部邮件系统(Kafka, RabbitMQ)。
    • 用户下单了,订单服务处理完,发个“信”到 MQ:“给这个用户加积分”。积分服务什么时候有空什么时候去信箱里取信。这叫解耦

融会贯通:全栈视角

现在,我们把**前端(上次说的)后端(这次说的)**拼在一起,就是完整的现代软件开发:

  1. 前端 (Web三件套 + 框架):负责画出界面,捕捉用户的点击,把数据打包成 JSON,通过 HTTP 发送出去。
  2. 网络 (Internet):请求飞过光缆。
  3. 后端入口 (Nginx):保安放行。
  4. 后端大脑 (Java/Python + Docker + Linux):逻辑计算。
  5. 后端记忆 (Redis + MySQL):读写数据。

所以,你现在的知识版图应该是:

  • 前端:精通 Web三件套,你就能搞定所有屏幕。
  • 后端:精通 Linux + SQL + HTTP,你就能搞定所有数据流转。至于中间用 Java 写还是 Node.js 写,看公司要求或者你心情。

这下,是不是把“冰山下”的世界也看清了?

基于 VitePress 搭建 | 记录生活与代码