如何使用手写笔访问 vue 文件中的 javascript 变量?

Posted

技术标签:

【中文标题】如何使用手写笔访问 vue 文件中的 javascript 变量?【英文标题】:How to use stylus to access javascript variables in vue file? 【发布时间】:2018-12-13 04:36:03 【问题描述】:

例如:

<script>
    export default 
        data() 
            return
                varinjs: 1,
            
        
    
</script>
<style lang="stylus">
    varincss = varinjs

    body
      if varincss  == 0
        background-color red
      else varincss == 1
        background-color blue
</style>

有没有办法在css中访问javascript变量?可以使用sass或less,但我会 更喜欢手写笔。

【问题讨论】:

【参考方案1】:

我知道这不是“这个”问题的答案(我想发表评论),但我会尝试提供替代解决方案。

Stylus 支持内置函数json(path[, options]),这意味着您可以将所有变量放入 JSON 文件中,并将它们提供给您的 JS 文件和 Stylus 文件。

您无法使用 JS 访问 stylus 变量,除非您找到某种可以将指定的 js 文件/变量转换为 stylus 变量的构建时库,否则您可能无法做到这一点。

【讨论】:

我认为这是一个非常好的答案。它没有直接回答问题,但提出了解决问题的好方向。【参考方案2】:

您可以使用 CSS 自定义属性来实现。

将手写笔变量与它们绑定,然后只处理 JavaScript 上的更改。

<script>
  export default 
    data () 
      return 
        theme:  background: '#ff0000' 
      ;
    ,
    watch: 
      'theme.background':  immediate: true, handler: 'applyVariables' 
    ,
    methods: 
      applyVariables () 
        const scope = document.documentElement.styles;
        scope['--theme-background'] = this.theme.background;
      
    
  ;
</script>

<style lang="stylus">
  theme-background = var(--theme-background, #ff054a);
  // The first argument is variable name and second is placeholder value.

  .theme-button
    background-color: theme-background
</style>

CSS Custom Properties reference on MDN

【讨论】:

以上是关于如何使用手写笔访问 vue 文件中的 javascript 变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何访问 Vue 组件中的 Sass 变量?

javasc多文件的作用域&模块中的作用域

Vue3.0 手写放大镜效果

Vue源码-手写mustache源码

vue3 less 的使用 手写header/context/menu 组件

vue3 less 的使用 手写header/context/menu 组件