详解如何在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 动态生成私有变量访问器
Dec 06 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
Dec 14 Javascript
js和php如何获取当前url的内容
Sep 22 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
Jun 17 Javascript
JS平滑无缝滚动效果的实现代码
May 06 Javascript
Vue组件之Tooltip的示例代码
Oct 18 Javascript
webpack实现一个行内样式px转vw的loader示例
Sep 13 Javascript
mpvue性能优化实战技巧(小结)
Apr 17 Javascript
JS中比较两个Object数组是否相等方法实例
Nov 11 Javascript
原生js实现五子棋游戏
May 28 Javascript
vant自定义二级菜单操作
Nov 02 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 mssql 日期出现中文字符的解决方法
2009/03/10 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
python根据日期返回星期几的方法
2015/07/06 Python
解读Python编程中的命名空间与作用域
2015/10/16 Python
python中 logging的使用详解
2017/10/25 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
用python制作个视频下载器
2021/02/01 Python
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
JSF界面控制层技术
2013/06/17 面试题
汽车专业毕业生推荐信
2013/11/12 职场文书
中文专业自荐书
2014/06/29 职场文书
融资合作协议书范本
2014/10/17 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
Python 如何实现文件自动去重
2021/06/02 Python