小编Jus*_*tin的帖子

RegExp的exec()函数和String的match()函数有什么区别?

如果我运行这个:

/([^\/]+)+/g.exec('/a/b/c/d');
Run Code Online (Sandbox Code Playgroud)

我明白了:

["a", "a"]
Run Code Online (Sandbox Code Playgroud)

但如果我运行这个:

'/a/b/c/d'.match(/([^\/]+)+/g);
Run Code Online (Sandbox Code Playgroud)

然后我得到了预期的结果:

["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)

有什么不同?

javascript regex

112
推荐指数
5
解决办法
4万
查看次数

RequireJS模块/包的相对路径

我是RequireJS的新手,我遇到了一些问题.我使用RequireJS编写了一个基于Backbone构建的小框架,我希望它可以在不同的项目中重用.所以,通过一些搜索,我了解到需要允许包.这看起来像我在寻找.我有一个main.js文件来启动我的应用程序,基本上是这样的:

require.config({
  packages: ['framework']
});

require(['framework'], function(framework) {
  framework.createDash();
});
Run Code Online (Sandbox Code Playgroud)

然后在与我的main.js相同的目录中,我有另一个名为"framework"的目录,其中包含另一个main.js,如下所示:

define(function(require, exports, module) {
  exports.createDash = function(dash, element) {
    require(['dash/dash.model', 'dash/dash.view'], function(DashModel, DashView) {
      return new DashView({
        model: new DashModel(dash),
        el: element ? element : window
      });
    });
  };
});
Run Code Online (Sandbox Code Playgroud)

在搜索中我发现这个页面表明'require'参数应该作用于子模块.但是,当我尝试要求它们仍然相对于我原来的main.js. 我已经尝试了很多东西,并且搜索了几个小时无济于事.有没有什么方法可以让我的包中的require/define调用相对于它的root中的main.js包含?

javascript requirejs

28
推荐指数
2
解决办法
3万
查看次数

为什么异常会导致Node.js中的资源泄漏?

如果您查看的Node.js 文档的开头,它指出:

根据throw如何在JavaScript中工作的本质,几乎从来没有任何方法可以安全地"拾取你离开的地方",而不会泄漏引用,或者创建一些其他类型的未定义的脆弱状态.

再次在代码示例中,它在第一部分中给出了:

虽然我们已经阻止了突然重启过程,但我们正在疯狂地泄漏资源

我想明白为什么会这样?什么资源泄漏?他们建议您仅使用域来捕获错误并安全地关闭进程.这是所有例外的问题,而不仅仅是在使用域时?在Javascript中抛出和捕获异常是不好的做法吗?我知道这是Python中的常见模式.

编辑

我可以理解为什么如果抛出异常,非垃圾收集语言中可能存在资源泄漏,因为如果抛出异常,您可能运行的任何清理对象的代码都不会运行.

我可以用Javascript想象的唯一原因是抛出一个异常存储引用异常的范围内的变量引用(也许是调用堆栈中的东西),从而保持引用,然后异常对象被保留,从不得到清理.除非所提到的泄漏资源是引擎内部的资源.

UPDATE

我写了一篇博客,现在解释一下这个问题的答案.看看这个

javascript memory-leaks memory-management exception node.js

24
推荐指数
3
解决办法
2992
查看次数

如何在Elasticsearch中聚合数组字段的一个索引

我的文件看起来像这样:

{  
    "clientId": "FPIev_86RwB",
    "viewId": "FPIewF1aRyU",
    "sessionId": "FPIewE16Rxu",
    "trackingId": "FPIewHfaRx9",
    "type": "view",
    "intVal": [  
        21,
        72,
        37
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想对一组文档中的数组的一个索引进行不同的聚合(例如 sum 或 avg)。但是,我似乎无法像在对象上指定字段一样指定索引。这是我尝试过的:

{
    "size": 0,
    "aggs": {
        "avg_1": {
            "avg": {
                "field": "intVal.1"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我尝试选择字段的索引,intVal.1但这不起作用。我有可以添加到数组中的可变数量的值,但是特定索引位置中的值都是相同的,所以我想对数组索引进行聚合。我有什么办法可以让这项工作成功吗?

aggregation elasticsearch

4
推荐指数
1
解决办法
1756
查看次数

如何使用Socket.io调试Node.js.

我正在使用Eclipse的Google Chrome Developer Tools插件来调试我的Node.js服务器.此服务器使用Socket.io作为我的Web客户端和服务器之间的websocket连接.当我在服务器中设置断点并开始逐步执​​行代码时,问题就来了.客户很快决定服务器不再存在,因为不再有心跳或任何通信,因此它会断开连接.同时,当我逐步执行时,我的代码尝试使用套接字执行某些操作,然后它因为套接字现已关闭而死亡.尝试像这样调试有点棘手.

所以问题是,如何使用开放的websocket连接调试这样的服务器而不关闭连接?我不知道有一个很好的解决方案,但我想我会把它放在那里,看看是否有人有天才的想法.

javascript websocket node.js socket.io

2
推荐指数
2
解决办法
3609
查看次数