【问题标题】:module.exports update valuemodule.exports 更新值
【发布时间】:2021-05-12 14:44:06
【问题描述】:

是否可以更新已导出模块的值。

例如:- 颜色.js

module.exports = {
   main: {
    primaryColor: 'red',
   },
   buttons: {
    backGround: 'blue',
   },
}

primaryColor 和 backGround 在我的应用程序中的多个位置(样式按钮、scss)使用。 根据某些事件,我想全局更改 primaryColor 和 backGround,以便将其应用于使用它的所有组件。 有没有办法实现这一点。

【问题讨论】:

    标签: javascript reactjs sass react-redux


    【解决方案1】:

    这取决于但通常是的。每次导入模块时,每个导入它的地方都会得到相同的 single 对象。这是由于模块缓存系统。实际上,这使得所有模块都是单例的。

    因此,每次您修改任何文件中的值时,所有文件都会获得修改后的值。例如,如果你这样做:

    colors.main.primaryColor = 'yellow';
    

    它会随处改变这个值。

    但是,这个新值是否会在您的 css/scss 中更新取决于您如何设置代码来编译 sass。如果我们谈论的是 javascript,那么是的,这些值是 live 并且会得到更新。但对于生成的文件,如 html、css、json、pdf、xml 等,这取决于您何时生成这些文件。

    【讨论】:

    • 感谢您的快速响应。我能够更改文件中提到的颜色。但是,它没有更新我的 scss 文件中的值。我在哪里使用sass::map。认为我必须使用此处指定的 sass map.setsass-lang.com/documentation/modules/map),但这些只能在 scss 文件中识别。这些事件发生在 js 文件中。所以不知道如何在 js 中更新或使用 sass map。有什么想法吗?
    • 您需要了解您的构建过程。您的 Web 浏览器无法呈现 scss 文件,因此在某些时候(通常在运行程序开始时)您的 scss 文件会被编译成 css。如果你想重新生成你的 css 文件,你需要手动而不是使用 babel/webpack/babel 等。此外,你的浏览器通常只会在加载页面开始时加载你的 css 一次。变量更改时,Web 浏览器不会重新加载 css 文件。您需要自定义 javascript 来加载新生成的 css 文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2021-04-08
    • 2018-07-16
    相关资源
    最近更新 更多