前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue实战-换皮肤2(使用less实现)

vue实战-换皮肤2(使用less实现)

作者头像
我的小熊不见了丶
发布2019-05-22 21:41:16
1.1K0
发布2019-05-22 21:41:16
举报
文章被收录于专栏:晓月寒·晓月寒·

在项目的main.js中的methods下新增_getLess方法用来根据当前所选皮肤获取样式文件,但是需要使用到mixin:

Vue.mixin({
    computed: {
        ...mapGetters([
            'templates'
        ]),
    },
    created() {
        var theme = localStorage.theme;
        if(theme) {
            this.templatesMu(theme);
        }
    },
    methods: {
        ...mapMutations([
            'templatesMu'
        ]),
        _getLess(filepath, filename) {
            console.log(this.templates)
            return require("./../static/template/" + this.templates + "/" + filepath + "/" + filename + "/index.less");
        },
    },
})

因为用到了vuex,所以还需要import进来: import { mapState, mapGetters, mapMutations } from 'vuex' _getLess方法传入两个用来标识样式文件位置的参数,调用该方法会动态的require一个样式文件。this.theme为store中存储的当前皮肤的信息,我们在选择皮肤时会将这个信息存储下来。并且我们要将皮肤相关的样式文件存储在_getLess方法对应的文件夹下。 在vuex中加入方法用于存储当前皮肤信息:

export default {
    state: {
        templates: "2", 
    },
    getters: {
        templates(state) {
            return state.templates;
          }
    },
    mutations: {
        templatesMu(state, val) {
            if (val) {
              state.templates = val;
            }
          },
    },
    actions: {
    
    }
}
  • 在具体的页面中的created方法中调用_getLess方法:
created: () {
    this._getLess("home","test1");
},

两个标识路径的参数方便程序的扩展。 这样当程序加载这个页面时会首先调用created方法,然后动态加载less样式文件。

  • 然后依旧是那个换皮肤的组件,我们将换皮肤的方法改造一下:
// 存储当前皮肤的信息
    setTheme(themeFile) {
      localStorage.theme = themeFile.data;
      this.$store.commit('templatesMu', themeFile.data);
      this.show = false;
      location.reload();
    }

这样就实现了用less语法来完成换皮肤功能。可以看到换皮肤之后调用了location.reload()方法直接刷新页面,这也是这个换皮肤的方法的最大的不足之处了,如果有更好的思路的话欢迎指正~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.02.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档