2015-04-20 8 views
1

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

el = document.getElementById 'app' 

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

require! 'mithril.js' 

Но при компиляции, как:

lsc -c file.ls 

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

ответ

1

Если вы компилируете ваши файлы Javascript и запуская их в браузер, тогда вам не нужно требовать Мифрила.

Просто убедитесь, что он добавлен перед вашим скриптом.

Например:

# 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 приходит первый.


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

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

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

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

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

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

Вы хотите позвонить мифрил m, а не mithril, так что это

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

 Смежные вопросы

  • Нет связанных вопросов^_^