详解如何在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 动态创建VML的方法
Oct 14 Javascript
日历查询的算法 如何计算某一天是星期几
Dec 12 Javascript
js展开闭合效果演示代码
Jul 24 Javascript
js传参数受特殊字符影响错误的解决方法
Oct 21 Javascript
jQuery知识点整理
Jan 30 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
Aug 21 Javascript
使用vue.js开发时一些注意事项
Apr 27 Javascript
浅析Angular2子模块以及异步加载
Apr 24 Javascript
Vue 过滤器filters及基本用法
Dec 26 Javascript
Angular6 用户自定义标签开发的实现方法
Jan 08 Javascript
javascript实现自由编辑图片代码详解
Jun 21 Javascript
vue 组件开发原理与实现方法详解
Nov 29 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在不同页面间传递Json数据示例代码
2013/06/08 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
js获取图片大小的函数代码
2011/09/20 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
wxPython色环电阻计算器
2019/11/18 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
Python常用外部指令执行代码实例
2020/11/05 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
2019年分享net面试的经历和题目
2016/08/07 面试题
节约电力资源的建议书
2014/03/12 职场文书
2015年党建工作总结
2015/03/30 职场文书
欠款起诉书范文
2015/05/19 职场文书
小学生读书笔记范文
2015/06/30 职场文书
Python如何配置环境变量详解
2021/05/18 Python
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android