浏览器无法直接解析.less或.scss文件,必须预编译为CSS后引入;生产环境唯一可靠方式是服务端预编译(如lessc/sass CLI),开发阶段应使用Vite等工具的HMR而非浏览器端编译。
<link> 引入 Less/Sass 文件会失败浏览器原生不解析 .less 或 .scss 文件,你写 <link rel="stylesheet" href="style.less">,浏览器只会当普通文本下载,不会编译,也不会生效。这不是路径或语法问题,是根本能力缺失。
真正能跑起来的只有两种方式:服务端预编译(推荐),或前端实时编译(仅开发用)。
Less 和 Sass 都提供官方命令行工具,把源文件转成标准 CSS,再在 index.html 里用传统方式引入。这才是上线唯一靠谱做法。
npm install -g less,然后运行 lessc style.less style.css
npm install -g sass,然后运行 sass style.scss style.css
index.html 中只引入编译后的 CSS:<link rel="stylesheet" href="style.css">
.less/.scss 文件部署到生产服务器——它们没用,还暴露源码结构less.js 或 sass.js 不现实虽然 Less 官方提供 less.js(通过 script 标签加载,自动编译页面中的 <style type="text/less">),但实际体验差:
立即学习“前端免费学习笔记(深入)”;
sass.js 是非官方、体积大、功能阉割的移植版,不建议碰把 Less/Sass 写在 index.html 里不解决问题,但你可以手动编译好内容,粘贴进 <style> 标签——这不算“引入”,只是把 CSS 写死了:
<style>body { background: #f0f0f0; font-family: system-ui;}</style>
这种做法绕过了所有工具链,但失去变量、嵌套、mixin 等核心价值,和直接写 CSS 没区别。真要这么干,不如一开始就写 CSS。
真正需要 Less/Sass 的项目,迟早得接入构建流程;卡在 index.html 单文件里硬搞,只会反复踩编译时机、路径解析、缓存失效这些坑。