2

我只需要在 LiveScript 中使用 prelude-ls 库,但在 REPL 中不需要。在我的小测试中,我有 4 个文件:

  • 主.htm
  • 应用程序.ls
  • 应用程序.js
  • 需要.js

我有require.js(2.1.15)的最新版本,并在我main.htm的加载脚本:

<!DOCTYPE html>
<html>
    <head>
        <script src="./require.js" type="text/javascript"></script>
        <script src="./prelude.js" type="text/javascript"></script>
    </head>
    <body>

    </body>
</html>

然后,我去我application.ls的测试:

require! 'prelude-ls'

[1 2 3] |> prelude-ls.map (* 2)

我的编译命令是:

lsc -cwd $myFilePath 它编译得很好。然后,我去那里得到最终结果,测试并收到以下错误:

Uncaught Error: Module name "prelude-ls" has not been loaded yet for context: _. Use require([])

好吧,我看到这是一个非常常见的错误,它的更正会发生在js文件中,而不是ls中,而且我遵循的链接都没有解决我的问题。我已经在 2 台计算机上尝试过,结果完全一样。

我的最终 js 文件application.js是:

// Generated by LiveScript 1.2.0
(function(){
  var preludeLs;
  preludeLs = require('prelude-ls');
  preludeLs.map((function(it){
    return it * 2;
  }))(
  [1, 2, 3]);
}).call(this);

请帮助我,如果可能的话。我真的阅读了 livescript 的所有文档,它没有引用它与 prelude-ls 的第一次使用。

4

2 回答 2

1

我认为您混淆了 AMD.js(这里是 Require.JS)和 CommonJS。AMD.js 使用

require(['dep1', 'dep2'], function (dep1, dep2) {
  dep1.callSomething();
});

(这允许异步加载)

另一方面,CommonJS(这是 prelude-ls 使用的)基本上是 node 所做的(以及我们用 生成的require!):

var preludeLs = require('prelude-ls')
于 2014-09-15T12:42:15.820 回答
0

起初我不明白,虽然答案是正确的,但我发现答案令人困惑。请让我总结一下。

实际上它非常简单,它的工作原理与 doc 一样

我们必须prelude-ls使用 npm 或 bower 安装。我们需要包含文件prelude-browser.js(at prelude-ls/browser/prelude-browser.js)。

然后我们只需要在代码开头添加前奏:

prelude = require 'prelude-ls'

我们可以打电话prelude.sum等。

第二种选择是准确导入我们需要的函数,如下所示:

{map, filter, lines} = require 'prelude-ls'

所以我们可以直接调用它们。

这适用于 gulp 和 angularjs 仅供参考。

这个答案很明确。

于 2015-10-27T15:55:07.023 回答