【问题标题】:Meteor Loading JS Files Based on Conditional StatementsMeteor 基于条件语句加载 JS 文件
【发布时间】:2013-05-10 20:46:57
【问题描述】:

这是我第一次实际使用 Meteor,我正在尝试使用 Meteor 框架加载 JS 文件,我遇到了一个复杂的问题,我想做以下事情:

    <script type="text/javascript">
        document.write('<script src=' +
        ('__proto__' in {} ? 'js/vendor/zepto' : 'js/vendor/jquery') +
        '.js><\/script>')
    </script>

我想根据特定条件加载特定的 JS 文件。

我知道 Meteor 有一种加载 JS 文件的方法,它们会先加载最深,然后按字母顺序加载。显然,如果我将脚本放在客户端文件夹中,那么无论如何它都会加载两个 js 文件,而无需担心。像上面的代码那样动态加载文件的最佳方法是什么?

谢谢

【问题讨论】:

    标签: javascript jquery meteor zepto


    【解决方案1】:

    使用 Meteor 1+,您应该只从您的私人和公共文件夹中“加载”文件。由于文件路径在 Meter 开发和部署之间发生变化,因此对私有和公共目录之外的路径使用直接读/写可能会失败。

    对于客户端,您可以使用相对于您的公共目录的路径访问您的公共目录中的任何文件。例如 $.getScript() 可用于访问公共文件夹中的脚本。对于服务器,您可以使用 Assets.getText() 或 Assets.getBinary() 再次使用私有目录中的相对路径访问私有目录中的任何文件。

    在这两种情况下,都不要在相对路径中包含私有或公共。如果您的文件位于“public/foo/yoo.js”,请仅指定“foo/yoo.js”。

    【讨论】:

      【解决方案2】:

      Meteor 会忽略以“.”开头的文件夹

      一种解决方案是将有条件包含的所有内容放入名为 '.includes' 之类的文件夹中,并在 Meteor 项目的其他任何地方使用条件语句将它们包含在类似 的文件夹中p>

      require(path_to_that_folder + 'filename.js');
      

      见:

      http://docs.nodejitsu.com/articles/getting-started/what-is-require

      http://nodejs.org/api/modules.html

      【讨论】:

      • 感谢您的回答。我想解决方法是我需要做的。 ;)
      • 没问题,如果您需要更多帮助,请告诉我
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2017-02-03
      相关资源
      最近更新 更多