Скомпилируйте LiveScript, который импортирует другие файлы js

Я, вероятно, неправильно понимаю, как работает LiveScript, но как мне импортировать другой файл js в файл.ls и заставить его скомпилировать? Например, я хотел бы получить доступ к документу DOM, например:

el = document.getElementById 'app'

и загрузите mithril.js (который находится в том же локальном каталоге):

require! 'mithril.js'

Но при компиляции вроде:

lsc -c file.ls

в настоящее время это говорит мне о том, что он не может найти "документ" или любые другие специфичные для мифрила переменные (например, "m").

2 ответа

Решение

Если вы компилируете свои файлы в 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 с некоторыми ссылками на мифриловые переменные. Мы должны помнить это, когда мы связываем их с нашим HTML.

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

Важно, чтобы мифрил был первым.


Если вы хотите использовать Mithril, чтобы использовать его вне браузера, вам придется немного изменить настройку оператора require.

Если вы посмотрите строку 34 источника Mithril, вы увидите, что m это просто локальная функция. Затем в строке 1066 он пытается создать глобальную переменную m, если window существует. Это не будет делать в Node/IO.js, поэтому вместо этого он придает значение module.exports,

Это означает, что вам придется использовать значение, возвращаемое require:

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

Не могу найти document? Вы не запускаете свой код в браузере?

require! 'mithril.js' компилируется в var mithril = require('mithril.js');

Вы хотите назвать мифрил mне mithrilтак сделай это

require! mithril: m или это m = require 'mithril'

Другие вопросы по тегам