【问题标题】:What's the correct way to use script files from other script files Meteor?使用其他脚本文件 Meteor 中的脚本文件的正确方法是什么?
【发布时间】:2013-06-18 16:09:37
【问题描述】:

根据an answer to this question 和 Meteor 文档,Meteor 将自动将所有脚本递归地包含在包文件夹结构中,最深的在前。但是,当我在 MyProject/sever 文件夹中的脚本中定义 js 类时,如果从顶级 .js 文件引用该类是未定义的。如果我将类定义移动到 if (Meteor.isServer) 上方的顶级 .js 文件,则该类定义正确。从外部文件构建或包含我的 javascript 时我缺少什么?

编辑: 这个问题比仅仅看到我的 js 类更根本。我无法在流星 0.6 创建的私有命名空间中调用函数或查看 anything。显然必须有某种方式来引用另一个文件中定义的东西,否则大项目在流星中是不可能的。

【问题讨论】:

  • 这似乎是流星 0.6 的 js 文件范围的问题。显然,这并不总是我们想要的。在客户端上,使用 client/compatibility 文件夹可以解决问题,但在服务器上却不行。针对这种情况有任何已知的解决方法或最佳做法吗?
  • 它是在浏览器上还是在服务器上未定义。如果您有一个文件位于服务器目录中,它将仅在服务器上加载。如果您随后在加载到服务器和客户端的顶级 js 文件中引用它,那么由于 /server 中的文件仅在服务器上运行,它将在客户端上未定义。
  • 它在服务器上未定义并在 if(Meteor.isServer){} 块中被引用。

标签: javascript include meteor


【解决方案1】:

正如我所怀疑的,这与我对 javascript (goofy hack) 类声明和全局变量的误解有关。改变:

function ClassFoo(){
   this.bar = function(){}
}

ClassFoo = function ClassFoo(){
   this.bar = function(){}
}

通过将 ClassFoo 设为全局来修复它。 FWIW,请注意 var ClassFoo = ... 将不起作用,因为它会成为自动生成的闭包命名空间的本地。一定会喜欢 javascript 的怪癖。

【讨论】:

    猜你喜欢
    • 2016-12-03
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多