让 emberjs 入门套件与 coffeescript 一起工作

Posted

技术标签:

【中文标题】让 emberjs 入门套件与 coffeescript 一起工作【英文标题】:Getting the emberjs starter-kit to work with coffeescript 【发布时间】:2012-07-24 20:49:57 【问题描述】:

我正在尝试让 ember.js 的入门套件示例直接与用 coffeescript 编写的应用程序一起工作(使用 http://coffeescript.org/extras/coffee-script.js)。 我想在开发环境中使用它,而无需先将 coffescript 转换为 javascript(手动或使用 jitter 等工具)。

基本上我只是换了行

<script src="js/app.js"></script>

用线条

<script src="js/libs/coffee-script-1.3.3.min.js"></script>
<script type="text/coffeescript" src="coffee/app.coffee"></script>

在 index.html

我所做的所有更改都可以在我的 github 上的 fork 中找到,地址为 https://github.com/GordonSchmidt/starter-kit

coffescript 本身似乎很好,因为当我首先将其转换为 javascript 时,starter-kit 应用程序可以使用此 javascript。但是当我直接使用coffeescript时,它会在ember-0.9.8.1.js的第45行抛出错误“断言失败:无法在路径'App.MyView'处找到视图”。 coffee-script.js 本身似乎也能正常工作(参见 demo.html)。所以肯定是ember.js和coffee-script.js有冲突。

但是我找不到这个错误。有人可以指出我正确的方向吗?

【问题讨论】:

【参考方案1】:

来自咖啡脚本.org

适用于 CoffeeScript 的常见注意事项 — 您的内联脚本将 在闭包包装器中运行,所以如果你想公开全局 变量或函数,将它们附加到窗口对象。

您的咖啡脚本应如下所示:

<script type="text/coffeescript">
    window.App = App = Em.Application.create()

    App.MyView = Em.View.extend(
      mouseDown: -> window.alert "hello world!"
    )​
</script>

请参阅here 以获得小提琴

【讨论】:

您的小提琴正在工作,但在我的独立版本中仍然无法使用。我没有看到咖啡脚本是如何在 jsfiddle 上转换为 javascript 的,所以我无法在 jsfiddle 之外重现它。 您是否尝试过将咖啡脚本放在标签中而不是单独的文件中?因为我不认为coffeescript 能够加载外部资源。 啊,这确实是问题所在。谢谢! 好吧,我可能对我的最后一条评论太快了。执行外部 *.coffee 脚本(至少在没有 emberjs 存在的情况下)。请参阅我的 github 存储库中的 demo.html。 window.App = App 只是解决方案的一小部分。问题似乎是,咖啡脚本的编译可能在错误的时间执行。因此脚本可能不会按照定义的顺序运行。有关详细信息,请参阅咖啡脚本问题:github.com/jashkenas/coffee-script/issues/1054 在我上次提交中,我添加了 require.js 来处理脚本加载和一个用于 require.js 的咖啡脚本插件来解决问题。

以上是关于让 emberjs 入门套件与 coffeescript 一起工作的主要内容,如果未能解决你的问题,请参考以下文章

React + React Native入门套件

emberjs 基金会 5 手风琴

带有霓虹动画页面的聚合物入门套件

如何设定 滚动目标到聚合物入门套件的“文档”

如何分辨Freenove Arduino套件中主动蜂鸣器与被动蜂鸣器的区别

EmberJS RSVP onerror 处理程序中的上下文