现在浏览器已经支持 css
导入了
import style from './index.css' assert { type: 'css' };
// style 是样式表对象
document.adoptedStyleSheets = [style];
但是,如果 vite
构建后,就会把css
打包编译成字符串,而不再是样式表对象
本来是这样的,原生请求
vite 编译后就成字符串了
结果导致报错
目前通过下面这种方式暂时解决了
import style from './index.css' assert { type: 'css' };
if (style.type) {
shadowRoot.adoptedStyleSheets = [ style ];
} else {
const sheet = new CSSStyleSheet();
sheet.replace(style)
shadowRoot.adoptedStyleSheets = [ sheet ];
}
但是感觉对于原生来说有点浪费?或者说对于组件本身是多余的,仅仅是为了 vite 编译而解决的
CSSstylesheet vite支持的还不太好,能找到的解决方式是使用
rollup-plugin-import-assert 这个插件可以把css 按CSSstyleSheet加载,但是在VITE里直接使用还是不行, 要把css文件后缀改一下。
具体看以下页面,翻到最后
https://github.com/vitejs/vit...