当前位置:首页 > 知识

web程序是什么

打开浏览器,输入网址,按下回车——你正在使用一个Web程序。它可能是一个在线文档编辑器,一个电商网站,或者你公司内部那个打卡系统。本质上,Web程序就是跑在浏览器里的软件,不需要你下载安装包,也不用管操作系统是Windows还是macOS。

这跟传统桌面软件差别很大。比如Photoshop,你得先下载几个G的安装文件,装好后每次更新还得重新来一遍。而Web程序把大部分计算放在远程服务器上,浏览器只负责显示界面和接收用户操作。你点一下“保存”,数据通过HTTP请求发到服务器,服务器处理完再返回结果。整个过程你感觉不到,但背后已经跑了几百毫秒的网络往返。

我最早接触Web程序是十几年前的一个在线计算器。页面很简陋,就几个输入框和一个按钮。按下按钮后整个页面刷新,等两三秒才出结果。现在完全不同了。比如你在Google Docs里打字,每个字符都实时同步到服务器,别人在同一文档里的光标位置也能看到。这种体验靠的是WebSocket长连接,浏览器和服务器之间保持一条随时可以推拉数据的通道。传统HTTP是“请求-响应”模式,服务器不能主动发消息给浏览器。WebSocket打破了这个限制。

技术上讲,Web程序分前端和后端。前端跑在浏览器里,用HTML搭结构,CSS管样式,JavaScript写逻辑。后端跑在服务器上,处理业务规则、读写数据库、做身份验证。前后端通过API通信,最常见的是RESTful接口,返回JSON格式的数据。举个例子,你在Twitter上发一条推文,前端把文字打包成JSON,POST到某个API地址。后端验证你的登录状态,把推文存进数据库,然后返回成功状态码。前端收到后更新页面,显示你的新推文。

但别以为Web程序就是“网页”。很多桌面应用其实也是Web程序套了个壳。比如Slack、Visual Studio Code、Discord,它们用Electron框架把网页打包成可执行文件。你双击图标打开,里面运行的还是Chromium浏览器内核。好处是开发一次就能跨平台,坏处是内存占用比原生应用高不少。我笔记本上开三个Electron应用,风扇就开始转。

还有一类叫PWA(渐进式Web应用)。它能让网页像原生应用一样离线工作、发送通知、添加到主屏幕。星巴克的PWA点单页面就是个典型。你断网了还能看到菜单,恢复网络后订单自动同步。这靠的是Service Worker,一个在浏览器后台运行的脚本,能拦截网络请求并返回缓存内容。

Web程序的安全问题也值得一说。因为代码全在浏览器里,用户能看到所有前端逻辑。有人以为把验证放在JavaScript里就够了,比如“密码必须大于8位”。这没用,用户改一下JS就能绕过。真正的验证必须在后端做。跨站脚本攻击(XSS)和跨站请求伪造(CSRF)是常见漏洞。XSS是攻击者往页面里注入恶意脚本,CSRF是诱导你点击链接去执行非本意的操作。防御方法包括转义输出、使用CSRF令牌、设置CSP头。这些细节做不好,用户数据就危险了。

性能方面,Web程序受网络影响很大。一个页面加载3秒,53%的移动用户会离开。所以前端优化很关键:压缩图片、合并CSS文件、用CDN分发静态资源、做代码分割按需加载。后端则要优化数据库查询、加缓存、用负载均衡。我见过一个电商网站,首页加载了200多个请求,光JavaScript就2MB。用户等5秒才看到内容,转化率低得可怜。后来他们做了懒加载和Tree Shaking,首屏时间降到1.2秒,订单量涨了15%。

Web程序不是万能药。它依赖网络,处理复杂图形计算不如原生应用,对硬件访问也受限。但它的优势太明显:无需安装、自动更新、跨平台、易于分享。一个链接发过去,对方点开就能用。这种低摩擦的体验,正是Web程序统治互联网的原因。

分享到: