1

LiveScript の仕組みを誤解していると思われますが、別の js ファイルを .ls ファイルにインポートしてコンパイルするにはどうすればよいですか? たとえば、次のような DOM ドキュメントにアクセスしたいと思います。

el = document.getElementById 'app'

mithril.js をロードします (これは同じローカル ディレクトリにあります)。

require! 'mithril.js'

しかし、次のようにコンパイルすると:

lsc -c file.ls

これは現在、「ドキュメント」またはその他のミスリル固有の変数(「m」など)が見つからないことを示しています。

4

2 に答える 2

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);

これは、Mithril 変数への参照を含む通常の JS ファイルになりました。それらを HTML にリンクするときは、このことを覚えておく必要があります。

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

ミスリルが先に来ることが重要だ。


Mithril を require したい場合は、ブラウザーの外で使用するために、require ステートメントを少し再調整する必要があります。

Mithril ソースの34 行目を見ると、それmが単なるローカル関数であることがわかります。次に、1066 行目mで、存在する場合はグローバル変数を作成しようとしますwindow。Node/IO.js では機能しないため、代わりに に値をアタッチしますmodule.exports

これは、によって返される値を使用する必要があることを意味しますrequire

m = require 'mithril.js'
m.module! # works!
于 2015-04-20T23:19:37.660 に答える