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


Posted in Javascript onNovember 13, 2019

在环境之间共享变量是编程的圣杯。以下是在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 相关文章推荐
JavaScript中将一个值转换为字符串的方法分析[译]
Sep 21 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
Mar 25 Javascript
js动态修改整个页面样式达到换肤效果
May 23 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
Jan 28 Javascript
js实现跨域的方法实例详解
Jun 24 Javascript
JavaScript中Promise的使用详解
Feb 26 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
Aug 08 jQuery
JS改变页面颜色源码分享
Feb 24 Javascript
axios发送post请求springMVC接收不到参数的解决方法
Mar 05 Javascript
sortable+element 实现表格行拖拽的方法示例
Jun 07 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
Jul 17 Javascript
JavaScript数组及常见操作方法小结
Nov 13 #Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
Nov 13 #Javascript
javascript操作元素的常见方法小结
Nov 13 #Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 13 #Javascript
vue项目中锚点定位替代方式
Nov 13 #Javascript
微信小程序后端(java)开发流程的详细步骤
Nov 13 #Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 #jQuery
You might like
php中字符集转换iconv函数使用总结
2014/10/11 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
IE与firefox之jquery用法区别
2008/10/03 Javascript
javascript 写类方式之六
2009/07/05 Javascript
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
js表单验证实例讲解
2016/03/31 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
2017/02/28 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
python集合用法实例分析
2015/05/30 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
某科技软件测试面试题
2013/05/19 面试题
土木工程专业本科生求职信
2014/10/01 职场文书
领导欢迎词范文
2015/01/26 职场文书
建议书格式
2015/02/04 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
学校党员干部承诺书
2015/05/04 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python