当前位置:首页 > 探索

web脚本

打开一个网页,右键“查看网页源代码”,你会看到一堆尖括号包裹的文本。这就是web脚本的起点——HTML。它不是编程语言,只是标记,告诉浏览器“这里是标题”“那里是段落”“这张图放这儿”。但它构成了所有网页的骨架。

很多人把HTML、CSS、JavaScript混为一谈。简单说:HTML是名词,负责“有什么”;CSS是形容词,负责“长什么样”;JavaScript是动词,负责“做什么”。三者合起来,才是一个完整的web脚本环境。

我最早接触web脚本是改一个博客模板。当时想把侧边栏从右边挪到左边,翻了半天CSS文件,找到float: right;改成left,刷新页面,成了。那种即时反馈很上瘾。你写一行代码,浏览器立刻告诉你结果,错了就调,对了就笑。比编译型语言那种等半天的节奏舒服太多。

HTML的容错性高得离谱。少写一个闭合标签,浏览器照样渲染,它自己猜。你写<p>hello<p>world,它也能显示两段。这种宽容让初学者不容易被劝退,但也埋下隐患——不同浏览器猜的方式不一样,早年IE和Firefox打架,多半是这种“猜”惹的祸。

JavaScript才是真正让页面活起来的东西。没有它,网页就是一张电子海报。有了它,按钮能点,表单能验,数据能异步加载。我见过一个老系统,整个前端用jQuery堆了几千行,一个点击事件绑了七层回调。维护的人骂娘,但跑得挺稳。脚本这东西,能跑和优雅是两码事。

说到异步,ajax是个分水岭。2005年之前,每次交互都要刷新整页。之后,XMLHttpRequest让局部更新成为可能。现在fetch和async/await写起来更顺眼,但底层逻辑没变——发请求,等响应,改DOM。只是语法糖换了几茬。

DOM操作是另一个坑。直接document.getElementById然后改innerHTML,简单粗暴,但性能差。页面元素一多,重排重绘能把风扇吹起来。后来有了虚拟DOM,React、Vue这些框架帮你算好最小改动再批量更新。代价是多了层抽象,调试时得在框架的源码里绕。

脚本安全不能不提。用户输入永远不能信。你把innerHTML直接塞进用户提交的内容,XSS漏洞就来了。有人写个<script>alert(1)</script>,你的页面就替别人执行代码。防御也简单——用textContent替代innerHTML,或者转义尖括号。但总有人偷懒。

工具链越来越重。以前一个.html加个.js就能跑,现在得配webpack、babel、eslint,node_modules动辄几百兆。小项目真没必要。我试过用原生ES模块加import maps搭页面,清爽得很。工具是为人服务的,别反过来。

浏览器兼容性依然是个话题。Can I use这个网站我常开。新API像IntersectionObserver、ResizeObserver好用,但老设备上得加polyfill。移动端更复杂,iOS Safari和Chrome Android的行为差异能让你调一晚上。

最后说个观察:web脚本的生态更新快得离谱。今天学的框架,两年后可能就没人提了。但底层三件套——HTML、CSS、JavaScript——二十年没大变。把基础打牢,上层的东西学起来就是几天的事。反过来,只追框架不碰原生,遇到坑就卡死。

写脚本跟写文章一样,先跑通,再优化。能一行搞定的别写十行。浏览器不骗人,你偷的懒,它迟早用bug还给你。

分享到: