PhoneGap CoffeeScript Hello World

时间:2012-05-12 19:00:29

标签: cordova coffeescript

我是PhoneGap / CoffeeScript的新手,试图在iOS上运行一个Hello World应用程序,并想知道我做错了什么。

这将是我的标准index.html:

<!DOCTYPE html>
<html>
  <head>
  <title></title>

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
  <meta charset="utf-8">


  <script type="text/javascript" charset="utf-8" src="cordova-1.6.0.js"></script>
  <script type="text/javascript" charset="utf-8" src="app.js"></script>

  </head>
  <body onload="onBodyLoad()">
  <h1>Hey, it's Cordova!</h1>
  <p>Don't know how to get started? Check out our <em><a target="_blank" href="http://docs.phonegap.com/en/edge/guide_getting-started_ios_index.md.html#Getting%20Started%20with%20iOS">Getting Started Guide</a></em>

  </body>
</html>

app.coffee生成的app.js如下所示:

(function() {
    var onBodyLoad, onDeviceReady;

    onBodyLoad = function() {
        return document.addEventListener("deviceready", onDeviceReady, false);
    };

    onDeviceReady = function() {
        return navigator.notification.alert("This alert never happens!");
    };

}).call(this);

当我删除第一行“(function(){”和最后一行“})。调用(此); ”的app.js获取警报和一切正常。 但我想每次CoffeeScript编译成JavaScript时都有比删除这些行更好的方法。

非常感谢你, 雅各布

2 个答案:

答案 0 :(得分:3)

Coffeescript将每个文件包装在一个函数中,以防止它污染全局命名空间。如果确实希望以这种方式执行此操作,则可以将onBodyLoad的声明更改为window.onBodyLoad,但最佳做法明确反对将Javascript调用放在HTML {{1}等HTML元素中}}

这是popular question的变体。 Here是一个示例,说明如何使用事件侦听器在页面加载时不引人注意地调用函数。

答案 1 :(得分:1)

CoffeeScript提供bare选项-b,禁用包装。