vue 项目动态引入css(sass)文件(判断后加载对应的 sass 文件)

vue 项目动态引入css文件

preface

最新在写后台 管理, 应 业务需求, 众多菜单业务中 有个菜单需要独立出来给领导使用,改领导有独特喜欢的颜色格调。

快速开发, 只是做了菜单的权限控制, 然后和样式 控制,通过两个域名分别访问到 “两个平台” 的 两个登录页面

问题

通过域名判断 来 确定 某些 css 文件是否加载

首先想到的是 对 link 元素 dom 操作 加载 css 文件, 感觉有点 low

采用的 import 方式动态 加载 scss 文件

解决方案

  1. 尝试 if + import 静态引入方式 项目报错
if(...) {
	import ".....";
}
  1. 尝试 require 方式, 开发环境没问题,打包后有问题

因为打包后 scss样式全部打包进入 app.css 文件中,所以 样式才会有问题

if(...) {
	import ".....";
}

3. 尝试 import 动态引入方式 ,成功了(推荐)

因为 该scss 文件被单独打包成一个模块,来确定是否引入了,如下图

if(...) {
	import(".....");
}

if (global.location.hostname === liftDomain) {
    // require("@/assets/sass/smart-lift/index.scss");
    import("@/assets/sass/smart-lift/index.scss");
    // require.ensure("@/assets/sass/smart-lift/index.scss")
  }

在这里插入图片描述
4. require.ensure

开发环境没问题

if(...) {
  require.ensure([], function(require) {
       require("@/assets/sass/smart-lift/index.scss");
     });
}
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值