重组流星应用程序

时间:2014-05-20 04:30:28

标签: javascript meteor

我正在重构我的流星应用程序,突然每个视图(html模板)的逻辑(JS脚本)与初始文件分离后停止工作。

最初我的项目看起来像这样

-project
   -.meteor
   -client
      -templateA.html
      -templateB.html
      -templateC.html
      -client.js <-- contain JS for all template
      -display.css 
   -server
      -server.js
   -model.js <--collections
   -router.js <-- iron-router router

但随着项目的发展,我很难在一个文件中管理整个js代码。所以我决定把它分成更小的模块。所以它就像这样

 -project
    -.meteor
    -client
       -views
          -templateA.html
          -tempplateA.js 
          -templateB.html
          -templateB.js
          -templateC.html
          -client.js <---templateC JS is still in client.js
       -stylesheets
          -display.css

    -server
       -server.js
    -model.js
    -router.js

每个视图(模板)都不起作用。浏览器只生成空白页面。但是,我设法生成了templateC。所以我的推论是,templateC可以工作,因为JS仍然在原始文件中。

我该怎么做才能使其适用于其他模板?

1 个答案:

答案 0 :(得分:1)

/client/compatibility是解决问题的关键。

您在JS文件中定义的变量是该文件的本地变量。 See this section.


基本上,Meteor用(function(){ ... })();模式包装每个单独的文件。这意味着当你定义:

var something = {};

在一个文件中,something在另一个文件中为undefined。如果要创建将在整个应用程序中共享的变量,则需要将其设置为全局变量。幸运的是,这很简单 - 只需删除var关键字:

something = {};

现在,您可以在代码中的任何位置使用something