详解如何在Javascript和Sass之间共享变量

 更新时间:2019年11月13日 14:30:13   作者:jason1992  
这篇文章主要介绍了详解如何在Javascript和Sass之间共享变量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在环境之间共享变量是编程的圣杯。以下是在Javascript和

Sass(或CSS!)之间共享变量的方法。

随着大型单页应用程序的兴起,Javascript和CSS越来越交织在一起。通常在两个值之间复制值(例如,与React的CSSTransitionGroup一起使用的动画持续时间或将品牌颜色传递到图形库中)。但是,保持两个具有相同值的副本不可避免地导致仅更新一个副本并最终导致令人沮丧的错误。幸运的是,使用webpack和CSS模块,有更好的方法。在此博客文章中,我们将通过上述示例为共享动画持续时间,探讨如何在脚本和样式之间共享变量CSSTransitionGroup。

第一步是安装我们的依赖项:

npm install sass-loader node-sass webpack --save-dev

接下来,我们需要配置webpack以便使用,sass-loader以便我们可以从Javascript访问我们的Sass代码。

  // webpack.config.js
  module.exports = {
   module: {
    rules: [
     {
      test: /\.css$/,
      use: ['style-loader', 'css-loader', 'sass-loader']
     }
    ]
   }
  }

现在开始有趣的部分。我们在Sass中定义实际的变量值,并将其导出到Javascript。CSS模块有一个名为的简洁实用程序:export。该:export指令的工作原理基本上类似于ES6的export关键字。您的Sass代码将导出一个对象,其中包含要在Javascript中使用的变量名称及其关联的值。这些值都导出为字符串。

  // styles/animation.scss
  $animation-length: 250;
  $animation-length-ms: $animation-length + 0ms;

  :export {
   animationMillis: $animation-length-ms;
  }

  .component-enter {
   ...

   transition: all $animation-length-ms ease-in;
  }

您会注意到,我们首先在一个变量中声明整数值,然后在另一个变量中将0ms其添加。这样一来,我们就只能导出,"250"而不是"250ms"在Javascript方面更容易解析(将0ms数字强制将其“类型”插入ms)。

现在,在Javascript中,我们只需要从样式表中导入样式,然后从导出的变量中解析出一个int即可!

// js/animation.js
import styles from '../styles/animation.scss'
import CSSTransitionGroup from 'react-transition-group/CSSTransitionGroup'

const millis = parseInt(styles.animationMillis)

...

<CSSTransitionGroup
 transitionName="component"
 transitionEnterTimeout={millis}
 transitionLeaveTimeout={millis}
/>

...

这种方法非常简单,但是当您避免在Javascript和Sass之间同步更改的麻烦时,它会成倍地回报。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JavaScript中${pageContext.request.contextPath}取值问题及解决方案

    JavaScript中${pageContext.request.contextPath}取值问题及解决方案

    这篇文章主要介绍了JavaScript中${pageContext.request.contextPath}取值问题及解决方案的相关资料,需要的朋友可以参考下
    2016-12-12
  • js实现图片和链接文字同步切换特效的方法

    js实现图片和链接文字同步切换特效的方法

    这篇文章主要介绍了js实现图片和链接文字同步切换特效的方法,涉及javascript操作文字及图片的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • 用户代理字符串userAgent可实现的四个识别

    用户代理字符串userAgent可实现的四个识别

    用户代理字符串:navigator.userAgent ,本文给大家分享用户代理字符串userAgent可实现的四个识别,需要的朋友可以参考下
    2015-09-09
  • js如何判断不同系统的浏览器类型

    js如何判断不同系统的浏览器类型

    正如标题所言使用js如何判断不同系统的浏览器类型,下面有个不错的示例,感兴趣的朋友可以参考下
    2013-10-10
  • js canvas实现俄罗斯方块

    js canvas实现俄罗斯方块

    这篇文章主要为大家详细介绍了js canvas实现俄罗斯方块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • js 弹出菜单/窗口效果

    js 弹出菜单/窗口效果

    想象一下,你把一个重要内容放在一个弹出窗口,又不聚集到这个窗口。让使用屏幕阅读器的同学情何以堪,只有当他们 tab 到这页面结束,还继续 tab,才可能找到这个弹窗
    2011-10-10
  • js+canvas实现网站背景鼠标吸附线条动画

    js+canvas实现网站背景鼠标吸附线条动画

    这篇文章主要为大家详细介绍了js+canvas实现网站背景鼠标吸附线条动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • openLayer4实现动态改变标注图标

    openLayer4实现动态改变标注图标

    这篇文章主要为大家详细介绍了openLayer4实现动态改变标注图标,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • JavaScript中5个重要的Observer函数小结

    JavaScript中5个重要的Observer函数小结

    浏览器为开发者提供了功能丰富的Observer,本文主要介绍了JavaScript中5个重要的Observer函数小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • js中关于require与import的区别及说明

    js中关于require与import的区别及说明

    这篇文章主要介绍了js中关于require与import的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10

最新评论