新手,如何在我的情况下访问JavaScript模块模式?

时间:2011-04-15 10:27:32

标签: javascript javascript-events module

我在 MyModule.js

中定义了以下模块

MyModule.js:

MyModule = {

    controller: {
       paintCar: function(color){
            //PAINTING PROCESS
       }
    },

    tester: {
        ...
    },

};

然后,我有另一个javascript文件 other.js

other.js

MyModule.controller.paintCar('red');

我的index.html

<body>
    <script scr="MyModule.js"></script>
    <script src="other.js"></script>
  </body>

所有这些文件都放在Eclipse Dynamic Web Project的WebContent目录下。

other.js 中,当我尝试运行上面的代码时,出现错误“ MyModule未定义”。为什么呢?

2 个答案:

答案 0 :(得分:1)

您尚未提及您的环境,但通常您必须确保MyModule.js中的JavaScript在other.js中的JavaScript之前执行,因为您需要MyModule.js来设置MyModule变量。

您的工作方式因环境而异。在网络浏览器中,您可以通过输入两个script标记来实现这一点,首先是MyModule.js标记,然后是other.js标记(尽管经常在网站上使用,但您希望有一个构建过程,将您的脚本组合到一个文件中,以最大限度地减少HTTP请求)。在NodeJS中,有整个require机制。

根据您的修改

更新

看起来像是一个错字:

<body>
    <script scr="MyModule.js"></script>
             ^^-- here, they're transposed
    <script src="other.js"></script>
</body>

如果这个拼写错误实际上不在您的文件中,那么请查看这些文件是Web服务器所期望的位置,Web服务器不会被大小写抛出,这类事情。从根本上说,这是正确的。

答案 1 :(得分:1)

你在src拼错<script scr="MyModule.js"><script src="MyModule.js"></script> <script src="other.js"></script> 。这可以由basic automated QA testing获取。

(理论确认之前的原始答案)据推测,因为您没有正确加载脚本文件。既然你没有向我们展示这样做的代码(或者甚至告诉我们你正在使用什么环境),很难确切地说你出错了。

假设您在网页中使用客户端JS,您的代码应该类似于:

{{1}}

订单很重要。结束标记是必需的。自闭标签语法是不可接受的(除非文档作为application / xhtml + xml提供)

(这使用HTML 5语法。对于HTML 4 / XHTML 1,添加类型属性。对于HTML 3.2,添加语言属性)