There Is a Monster in the Foresta year agohttps://bsky.app/profile/joles.bsky.social/post/3logjuqggkk2q该网络应用具有高度交互性,需要JavaScript支持。简单的HTML界面虽可实现,但在此场景并不适用。该帖子来自joles.bsky.social,用户DID为:plc:3kssplu7pwdx7cmntm7jgzze。用户提到自己正在重新求职。帖子发布于2025年5月5日14:03:05.498(UTC时间)。
The Height Enigma (CSS)a year agohttps://www.joshwcomeau.com/css/height-enigma/CSS的height属性有时会因为父元素与子元素之间的循环计算而失效CSS中width和height的计算方式不同:width取决于父元素,而height取决于子元素基于百分比的高度要求父元素具有'可确定'的高度(不能依赖于子元素的高度)在父元素上使用明确的高度单位(如px或rem)才能使子元素的百分比高度生效根<html>标签可以使用height:100%,因为它参照的是视口而非父元素Flexbox和Grid布局可以通过改变元素填充可用空间的方式来避免高度问题min-height无法解决循环高度问题,因为它仍然依赖于子元素的内容不同的CSS布局算法(常规流、Flexbox、Grid)会影响高度的计算方式
Ports that are blocked by browsersa year agohttps://www.keenformatics.com/ports-that-are-blocked-by-browsers实验使用Docker和Flask时发现,某些端口因安全漏洞被浏览器拦截。端口6000被Chrome、Safari和Firefox同时屏蔽,但各浏览器针对同一问题显示不同的错误信息。这种拦截源于跨协议脚本漏洞防护机制,旨在防止攻击者利用IMAP、SMTP等服务实施攻击。Firefox提供了最详细的错误提示,明确显示请求在到达服务器前已被取消。使用cURL可以绕过浏览器限制,证实该问题仅存在于浏览器层面。常见被屏蔽端口列表包括FTP、SSH、SMTP等服务端口,以防止潜在漏洞被利用。
Why I Use WebAssemblya year agohttps://nasso.dev/blog/why-i-use-wasmWebAssembly (WASM) 让原生代码(如FFmpeg)能在浏览器中直接运行,彻底改变了网页应用的能力边界正如Figma通过C++渲染器实现3倍加载速度提升,WASM显著提高了应用性能WASM的隔离特性使其应用远超浏览器范畴,有望替代Docker等技术客户端WASM消除了服务器往返通信,简化了文件转换器等应用的状态管理WASM实现跨平台核心逻辑共享,减少网页版与原生应用分别开发的需求Tauri作为Electron的轻量替代方案,利用系统原生Web视图构建带网页UI的原生应用Nema Studio展示了WASM构建跨平台数字音频工作站的范例,先吸引浏览器用户再引导至原生应用
Stop using REST for state synchronization (2024)a year agohttps://www.mbid.me/posts/stop-using-rest-for-state-synchronization/REST在网页应用状态同步中显得笨拙繁琐REST这类状态传输协议会导致重复且脆弱的代码示例展示了简单文本输入场景中REST的问题问题包括请求顺序、加载动画逻辑和状态分歧CRDTs等状态同步机制可能是更好的解决方案现有工具(Automerge/Yjs/Braid/Electric SQL)前景广阔但需完善针对本地优先场景的优化可能无法满足常见网页应用需求
Just Fucking Use Reacta year agohttps://justfuckingusereact.comReact(或类似框架)对于构建复杂、交互式网页应用至关重要,而不仅仅是静态页面。React等框架中的组件允许创建可复用、封装的UI元素,从而提高可维护性和一致性。框架能智能处理UI更新,通过仅重绘页面必要部分来优化性能。使用框架更易于实现大规模可访问性,确保复杂UI无需手动操作即可保持无障碍访问。框架显著改善开发者体验(DX),提供热模块替换和TypeScript集成等工具。框架的性能不仅关乎初始加载,还包括感知性能和交互流畅度。框架适用于具有重要客户端状态、可复用UI组件和复杂交互的应用程序。真正问题不在于框架本身,而在于开发者将工具误用于不合适的任务。对于复杂应用,推荐使用React等框架而非原生JS,以获得更好的可维护性和效率。
Popcorn: Run Elixir in WASMa year agohttps://popcorn.swmansion.com/Popcorn是一个支持在浏览器中通过WASM运行Elixir代码的库编译后的Elixir代码运行在客户端的AtomVM运行时中,提供JS与Elixir交互的APIPopcorn提供序列化、通信处理机制,并确保浏览器响应能力配置步骤包括添加Popcorn依赖项,设置JS和Elixir的WASM入口点JS配置需生成WASM目录并在HTML中包含脚本Elixir需要包含`start/0`函数的WASM入口模块及配置JS与Elixir通过消息传递和直接执行JS代码实现通信Popcorn API包含消息发送、JS执行和事件处理等方法当前限制包括缺失OTP的NIF支持、不支持大整数及API尚未稳定底层采用Emscripten编译的AtomVM运行时,通过iframe加载Popcorn由专注Web/移动/多媒体解决方案的Software Mansion团队开发
CSS Attr() Gets an Upgradea year agohttps://developer.chrome.com/blog/advanced-attr重新设计的CSS `attr()`函数现在适用于任何CSS属性,不再仅限于伪元素的`content`属性。它能将HTML属性值解析为多种CSS数据类型,例如`<color>`、`<custom-ident>`以及像`px`这样的长度单位。示例包括使用`attr()`从`data-color`属性设置`color`,或从元素的`id`属性设置`view-transition-name`。该函数支持回退值,例如`attr(data-foo type(<color>), red)`在解析失败时会默认使用`red`。若未指定类型,`attr()`会默认将值解析为CSS字符串,以保持向后兼容性。
Really Really Simple "Pure CSS" Squirclesa year agohttps://gist.github.com/pouyakary/136fafc75a14abd867e0100856add5a0纯CSS实现圆角矩形是网页开发者期待的功能使用SVG进行剪裁操作复杂且存在性能问题CSS Houdini能渲染圆角矩形但缺乏Safari支持且非纯CSS方案CSS的`shape()`函数现已获得主流浏览器支持提供的代码片段展示了如何结合`clip-path`和`shape()`实现圆角矩形效果
Ash AI: A Comprehensive LLM Toolbox for Ash Frameworka year agohttps://alembic.com.au/ash-frameworkAsh框架是Elixir语言中一种声明式、面向资源的后端框架它通过将资源作为核心构建模块来简化Web应用开发Ash能自动完成模式生成、API创建和授权等后端任务关键特性包括自动生成API、内置安全系统、实时系统支持以及简易迁移Ash与Phoenix框架互补:处理应用层逻辑,而Phoenix负责Web层既适用于全新项目扩展,也支持存量项目的渐进式迁移该框架具备高性能、可观测性和无缝部署能力拥有不断壮大的社区和详尽的文档体系常见误解包括对其灵活性、学习曲线和生产就绪度的担忧
OCaml Web Development: Essential Tools and Libraries in 2025a year agohttps://tarides.com/blog/2025-05-15-ocaml-web-development-essential-tools-and-li...OCaml因其函数式编程优势(如不可变性和可扩展性)在Web开发领域日益受到关注。主流OCaml Web框架包括全栈框架Ocsigen、后端框架Dream和前端框架Bonsai。Ocsigen支持多层级编程,允许用OCaml编写客户端和服务器端代码作为单一程序。Dream是极简可配置的后端框架,具备出色的开发者体验和安全特性。Bonsai是Jane Street开发的客户端框架,支持用OCaml构建可扩展的交互式界面。通过Js_of_ocaml、Wasm_of_ocaml和Melange等工具,OCaml可与JavaScript和WebAssembly集成。Melange提供无缝的JavaScript互操作性,使OCaml成为TypeScript的可行替代方案。OCaml-vdom实现了类似Elm的响应式Web界面架构。MirageOS提供轻量级Unikernel部署方案,适用于安全高效的微服务。OCaml支持通过Soupault、Stog和YOCaml等工具进行静态网站生成。
Don't Guess My Languagea year agohttps://vitonsky.net/blog/2025/05/17/language-detection/IP地理位置不应被用于确定语言偏好,因为这种方法不可靠。国家通常拥有多种官方语言,因此基于IP的语言假设往往是错误的。浏览器会发送'Accept-Language'请求头,它能准确反映用户的语言偏好。强制根据IP设置语言可能让用户感到困扰,尤其是那些使用VPN或正在旅行的人。最佳实践是使用'Accept-Language'请求头,并允许用户在需要时手动更改语言。GeoIP可用于其他用途,如货币或物流,但不适用于语言设置。
Have I Been Pwned 2.0 is Now Livea year agohttps://www.troyhunt.com/have-i-been-pwned-2-0-is-now-live/经过漫长的开发过程,新版Have I Been Pwned(HIBP)网站现已正式上线。关键功能包括改进的搜索功能——部分用户触发搜索时会显示庆祝彩带,强调趣味性和亲和力设计。网站已移除用户名和手机号搜索支持,但API接口仍保留该功能。新增专属数据泄露页面,为受影响用户提供详细漏洞信息和可操作建议。仪表盘整合了所有需要邮箱验证的功能,未来计划增强密码钥匙支持等特性。域名搜索功能全面升级,提供更清晰的结果展示和全新筛选选项。API接口保持不变,未来计划采用OpenAPI标准更新文档。新推出官方周边商店,所有HIBP品牌商品均按成本价销售。技术优化包括缩减页面体积和请求数,采用Bootstrap和TypeScript等现代框架。重建过程中大量使用ChatGPT等AI工具,从图标筛选到脚本编写均有应用。上线工作包含大量幕后准备,包括法律条款更新及团队成员的健康挑战。
Biff – a batteries-included web framework for Clojurea year agohttps://biffweb.comBiff将生态系统中的库和工具整合打磨成一套完善体系通过Malli模式强制实现数据库不可变性后端支持富交互式界面,可选_hyperscript进行客户端脚本编写提供无密码邮件认证方案(含魔法链接和一次性验证码)支持Ubuntu VPS资源调配或通过Docker部署Uberjar具备文件保存时实时代码评估及REPL连接功能,支持动态开发包含教程、参考文档及带注释的入门项目供探索
Clojuring the web application stack: Meditation Onea year agohttps://www.evalapply.org/posts/clojure-web-app-from-scratch/index.html文章讨论了Clojure中缺乏标准Web框架的现状,强调需要同时理解Web框架和应用架构的重要性。介绍了Ring项目作为Clojure标准HTTP工具集的地位,重点分析了其设计决策对生态系统的深远影响。作者通过Ring和Jetty构建了一个极简Web应用示例,演示了如何使用Clojure哈希映射处理请求/响应。详细阐释了Ring中间件的函数式机制,说明其如何优雅处理状态管理、错误处理和请求/响应转换等横切关注点。指出路由功能是Ring未包含的关键组件,推荐使用Compojure和Reitit等库实现多态分发。最后为初学者提供了实用建议:推荐从Ring+Jetty+Compojure+Hiccup+next-jdbc组合入门,并介绍了Kit、Biffweb和Edge等进阶技术栈供探索。
Slack, Notion, and VSCode Improved Electron App Performancea year agohttps://palette.dev/blog/improving-performance-of-electron-apps通过适当优化,Electron应用可以达到媲美原生应用的性能表现主要性能挑战:启动缓慢和交互性能不佳关键优化策略包括使用打包工具(Webpack、esbuild、Vite)替代同步的`require()`调用通过基于路由的代码分割和异步导入延迟非关键资源加载将计算密集型任务迁移到WebAssembly或原生模块以获得更好性能采用V8快照减少初始化时间(Atom和VSCode团队已验证该技术)监控终端用户性能指标:点击延迟、按键延迟、滚动延迟等实施生产环境JavaScript性能分析以定位和修复性能瓶颈Notion通过Palette等生产环境分析工具将性能指标提升了15-20%
HTML5 elements you didn't know you needa year agohttps://dev.to/maxprilutskiy/html5-elements-you-didnt-know-you-need-ganHTML5包含了许多强大的原生元素,却常被忽视而选择使用JavaScript库<dialog>元素提供了自带无障碍功能的原生模态窗口支持<details>和<summary>元素无需JavaScript即可创建可折叠内容区块<datalist>元素为输入框提供原生自动补全功能<meter>通过阈值语义化颜色显示区间范围内的数值<output>是专门用于显示表单计算结果的语义化元素<mark>提供文本高亮的语义化标记,特别适合搜索结果场景<time>用机器可读的格式对日期时间进行语义化标注<figure>和<figcaption>为图片等媒体内容提供标准化的标题结构使用这些原生元素能减少对JavaScript的依赖并提升无障碍性
Tab Roving – focus management for element groupsa year agohttps://nik.digital/posts/tab-roving交互式数据网格中的焦点管理具有挑战性,尤其对键盘用户而言通过允许方向键在网格内移动焦点,标签漫游改善了导航体验,将网格视为单一交互元素`tabindex`属性对于控制焦点顺序及决定元素是否可被Tab键选中至关重要实现标签漫游需要跟踪焦点元素、处理按键事件,并通过编程方式更新焦点位置React可用于管理状态和引用,动态更新网格中的焦点单元格额外的无障碍改进包括添加导航快捷键,以及考虑边界循环行为标签漫游技术不仅适用于数据网格,还可应用于巨型菜单或自定义数字输入框等场景
Wake Up, Remixa year agohttps://remix.run/blog/wake-up-remix去年夏天的React Conf大会上,Remix宣布将'暂时休眠'。Remix v2成为React Router的轻量封装层,导致项目间出现人为割裂。Remix的打包器和服务器运行时代码被迁移至React Router v7,将其功能整合到React Router的'框架模式'中。React Router v7于去年11月发布,上周展示了RSC支持,为Remix v1和v2用户提供稳定平台。React Router v7已具备强大能力,可直接在loader和action中使用服务端组件,并提供纯服务端路由。React Router v7被Shopify、X.com、GitHub等头部企业采用,支撑近1100万个GitHub项目。Remix v3正被重新构想为全栈、RSC优先的React框架,聚焦简洁性、清晰度与性能。Remix v3目标成为模块化工具包,内置一流数据库驱动和组件库,从Preact的分支起步开发。Remix v3的开发原则包括轻量化、快速、符合Web标准的体验,无关键依赖(甚至不强制依赖React)。预览版尚未就绪,但进展将在Remix Jam大会上分享。
An Interactive Guide to Flexbox in CSSa year agohttps://www.joshwcomeau.com/css/interactive-guide-to-flexbox/Flexbox是一种强大的布局模式,用于创建动态响应式布局。Flexbox属性包括`flex-direction`、`justify-content`、`align-items`、`flex-grow`、`flex-shrink`和`flex-basis`。Flexbox采用主轴和交叉轴系统,通过`justify-content`(主轴)和`align-items`(交叉轴)控制对齐。`flex-grow`和`flex-shrink`控制项目如何扩展或收缩以填充可用空间或避免溢出。`flex-basis`设置项目沿主轴的初始尺寸,类似于`width`或`height`。`gap`属性为Flexbox项目间添加间距,提升布局质量。Flexbox中的自动边距(auto margins)可精确分配额外空间。`flex-wrap`允许项目换行,实现多行/多列布局。`min-width`和`min-height`属性可覆盖默认最小尺寸,防止意外收缩。Flexbox适合一维布局,而CSS Grid更适用于二维布局。