【问题标题】:Should I add "use strict" to my meteor files?我应该在我的流星文件中添加“使用严格”吗?
【发布时间】:2014-07-12 20:22:57
【问题描述】:

在 javascript 开发中通过添加以严格模式运行您的代码:

"use strict";

函数的开头是一个常见的最佳实践。但是我还没有看到有人在流星应用程序中这样做。

这种最佳做法是否不适用于 Meteor?

也许是因为它在更高级别上设置了严格模式?我知道可以使用 --use-strict 命令行参数运行该节点来强制执行此操作。但我不知道有什么方法可以在客户端做同样的事情。

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    在 Meteor 中使用 "use strict" 仍然是一个好习惯——毕竟它是 JavaScript。

    【讨论】:

    • 你能扩展一下吗?例如,是否应该将它添加到每个文件的顶部,或者是否可以强制 'use strict'; 用于 Meteor 应用程序中的所有 JavaScript 源?
    • 是的,应该将它添加到您想要启用严格模式的每个文件的顶部。
    【解决方案2】:

    我知道有两个选项,如果您想在 Meteor 文件的顶部使用 'use strict'

    首先是在你的一个顶级 Meteor 文件中定义一个像 APP 这样的全局变量(而不是在 strict 模式下),然后用它来命名你以前的所有全局变量:

    // first file
    APP = {};
    
    // later file
    'use strict';
    
    APP.Stuff = new Mongo.Collection('stuff');
    APP.Stuff.find({});
    

    第二种方法是在第一个文件中创建一个全局别名:

    // first file
    G = this;
    
    // second file
    'use strict';
    
    G.Stuff = new Mongo.Collection('stuff');
    Stuff.find({});
    

    后者的好处是您无需在每次想要使用“全局”引用时都输入 App.- — 它们仍然作为全局引用,您只需使用一次 G.- ——为了你的声明。

    【讨论】:

    • 我喜欢它,您对共享函数和全局常量的命名空间模式是什么?
    • 对于全局变量,在我定义 G 的同一个文件中,我定义 G.glob = {};。然后在客户端条件中,例如:if (Meteor.isClient) { G.glob.MY_CLIENT_GLOBAL = 'something'; }。所以我们可以拥有用于客户端、服务器或共享的全局变量。可以构造类似的对象来容纳实用功能。
    【解决方案3】:

    如果你使用 Harmony (es6) 并且你想使用全局变量,你可以使用export

    "use strict"
    export var Book = new Mongo.Collection('book');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 2012-05-30
      • 1970-01-01
      • 2018-01-26
      相关资源
      最近更新 更多