详解如何在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面向对象特性代码实例
Jun 12 Javascript
jQuery的css() 方法使用指南
May 03 Javascript
JS特效实现图片自动播放并可控的效果
Jul 31 Javascript
JavaScript中的对象和原型(一)
Aug 12 Javascript
微信小程序 实战小程序实例
Oct 08 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
Oct 21 Javascript
vue2的todolist入门小项目的详细解析
May 11 Javascript
谈谈VUE种methods watch和compute的区别和联系
Aug 01 Javascript
浅谈webpack 构建性能优化策略小结
Jun 13 Javascript
JavaScript数组方法的错误使用例子
Sep 13 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
Sep 30 Javascript
js实现轮播图效果 纯js实现图片自动切换
Aug 09 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
js中null与空字符串&quot;&quot;的区别讲解
2019/01/17 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
使用python实现个性化词云的方法
2017/06/16 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
python复制文件到指定目录的实例
2018/04/27 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
高中毕业自我鉴定
2013/12/13 职场文书
大学生旅游业创业计划书
2014/01/29 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python
详解CSS故障艺术
2021/05/25 HTML / CSS