【问题标题】:Sass: How can I decode JSON file directly into a Sass variable?Sass:如何将 JSON 文件直接解码为 Sass 变量?
【发布时间】:2014-04-16 00:43:00
【问题描述】:

是否可以使用 Node-Sass 解码 JSON 文件?

例如:

@import "../data/data.json";

我需要将这些数据直接迭代到一个变量中

欢迎任何帮助:)

【问题讨论】:

  • @import "../data/data.json"; 应该只用于导入 sass 文件。为什么它会神奇地解码json?尝试使用 ruby​​ 为您解码 json,然后将其导入 sass。
  • @agconti 是啊,我的例子有点疯狂,但是如何用 ruby​​ 解码?

标签: css json web sass


【解决方案1】:

我不太确定你会怎么做,但这里有一个很好的例子,说明如何向 sass 添加自定义 ruby​​ 函数:

https://gist.github.com/chriseppstein/1561650

还有一个关于如何解析 json 的内容:

Parsing a JSON string in Ruby

也许将它们放在一起之后,您可以做这样的事情?

module Sass::Script::Functions
  def json(Sass::Script::String)
    require 'rubygems'
    require 'json'
    JSON.parse(string)
  end
end

将其添加到您的 config.rb 文件的末尾,并确保您已安装 json ruby​​ gem:

gem install json

然后运行:

compass compile --force

让一切正常工作。

* 这显然未经测试且不起作用,但它可能会帮助您到达需要去的地方。

【讨论】:

  • @Raul 您需要使用 Grunt 编译 Sass,并需要使用 require:’/path/to/script.rb’ 自定义 ruby​​ 脚本(相对于您项目的根目录)
【解决方案2】:

有一个名为 Sass JSON Vars 的 gem 可以满足您的需求。

您可以使用以下命令行代码安装 gem:

gem install sass-json-vars

如何使用 Sass JSON 变量

对于使用 Sass >= 3.3 的项目

将变量放在 JSON 文件中:

// variables.json
{
    "font-sans": "Helvetica, sans-serif",
    "colors": {
        "red": "#c33"
    }
}

在 Sass 中导入文件以暴露变量名:

@import "variables.json"

body {
    color: map-get($colors, red);
    font: $font-sans;
}

编译时需要 sass-json-vars:

sass style.scss -r sass-json-vars

对于使用 Sass 的项目

将变量放在 JSON 文件中:

// variables.json
{
    "font-sans": "Helvetica, sans-serif",
    "colors-red": "#c33"
}

在 Sass 中导入文件以暴露变量名:

@import "variables.json"

body {
    color: $colors-red;
    font: $font-sans;
}

编译时需要 sass-json-vars:

sass style.scss -r sass-json-vars

更多信息:

【讨论】:

【解决方案3】:

sass-json-vars 是一个优秀的 gem,但不适用于 node-sass(这是原始问题的要求)。

改为尝试node-sass-json-importer,它本质上是相同的,只是重新设计以适应node-sass 的导入器api。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2021-05-13
    • 2019-04-06
    • 2018-03-10
    • 2020-04-01
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多