在编译器中,"implementer" 是什么意思?

In the compiler, what does "implementer" mean?

我想弄清楚 libsass 和 node-sass

之间的关系

libsass的官方页面是这样写的:

  1. LibSass 是原始 Ruby Sass CSS 编译器的 C++ 端口,带有 C API.

  2. LibSass 只是一个图书馆。要 运行 本地代码(即编译样式表),您需要一个 实现者 或“包装器”

我对编译器了解不多 什么是实施者?我想知道 node-sass 是如何编译的

Tl;dr - 它包装了其他东西,例如库或 API 以使其更易于使用(或使其可供当前编程语言访问)。

长答案:

很简单。包装器是一个库,它......好吧......包装了一些其他东西,通常是为了让它更容易。让我们以 Python 为例......这是一个很好的例子,它有一些常见的例子。让我们以 API 为例。假设我有一个 JSON API 来获取我当前位置的天气数据。我将我的邮政编码提供给它,我得到了这样的回复:

{
    "currentTemperature": 70,
    "temperatureUnit": "F",
    "hourlyForcast": [68, 71]
}

没什么复杂的,对吧?但是...我想在 Python 中使用它。我 可以 解析 JSON 并手动提取每个值。那行得通。但我会使用包装器:

from weather import get_weather
zip_code = int(input("Enter your zip code"))
weather = get_weather(zip_code)
print(weather.current_temperature)

基本上,包装器 包装 其他东西,例如另一个 (lower-level) 库,或者在我的例子中,API。但它也可以使其使用起来更加方便。例如,API 可能是 return 华氏度。包装器可能会接受它,并有代码自动将其转换为用户想要的任何单位。

还有很多其他的可能性。它可以:

  • 让包装器在内部使用 highly-optimized C 库
  • ,使您能够在 Node.js 中进行非常快速的复杂数学计算
  • API 的界面简洁明了。另外,想象一下明天 API 的变化。如果您有包装器,请更新包装器以进行更改。否则,您必须手动搜索您的代码以更新它...如果您忘记了某个地方,那就太可惜了。
  • 允许您在 Python 中执行快速 GPU 操作,并为包装器提供快速 CUDA-based 后端