编译导入其他js文件的LiveScript

时间:2015-04-20 17:37:38

标签: javascript livescript mithril.js

我可能误解了LiveScript的工作原理,但是如何在.ls文件中导入另一个js文件并使其编译?例如,我想访问DOM文档,如:

el = document.getElementById 'app'

并加载mithril.js(位于同一个本地目录中):

require! 'mithril.js'

但编译时如:

lsc -c file.ls

目前告诉我它无法找到'文件'或任何其他秘银特定变量(例如'm')。

2 个答案:

答案 0 :(得分:1)

如果您要将文件编译为Javascript并在浏览器中运行它们,那么您无需要求Mithril。

确保在脚本之前添加它。

例如:

# file.ls
element = document.get-element-by-id 'example'
m.module element app

然后运行lsc -c file.ls

// file.js
(function() {
  var element = document.getElementById('example');
  m.module(element, app);
}).call(this);

现在这只是一个常规的JS文件,其中包含对Mithril变量的一些引用。我们需要记住,当我们将它们链接到我们的HTML时。

<script src='https://cdnjs.cloudflare.com/ajax/libs/mithril/0.1.34/mithril.js'></script>
<script src='file.js'></script>

秘银首先非常重要。


如果您想要Mithril,为了在浏览器之外使用它,那么您将需要稍微重新调整您的需求声明。

如果您查看Mithril源的line 34,您会看到m只是一个本地函数。然后在line 1066上,如果存在m,它会尝试创建全局变量window。它不会在Node / IO.js中执行,因此它将值附加到module.exports

这意味着您必须使用require返回的值:

m = require 'mithril.js'
m.module! # works!

答案 1 :(得分:0)

找不到document?你没有在浏览器中运行你的代码吗?

require! 'mithril.js'汇编为var mithril = require('mithril.js');

你想调用秘银m,而不是mithril,所以这样做

require! mithril: m或此m = require 'mithril'