小编Chr*_*hka的帖子

在Firefox中,ES2015导入不起作用(即使在顶层)

这些是我的示例文件:

<!DOCTYPE html>
<html>
<head>
  <title>Test</title>
  <script src="t1.js"></script>
</head>
<body></body>
</html>
Run Code Online (Sandbox Code Playgroud)

t1.js:

import Test from 't2.js';
Run Code Online (Sandbox Code Playgroud)

t2.js:

export const Test = console.log("Hello world");
Run Code Online (Sandbox Code Playgroud)

当我在Firefox 46中加载页面时,它返回"SyntaxError:import declarations可能只出现在模块的顶层" - 但我不确定import语句可以在这里获得多少顶级.此错误是否为红色鲱鱼,导入/导出是否尚不支持?

javascript firefox ecmascript-6

65
推荐指数
4
解决办法
6万
查看次数

Javascript中的"new self()"等价物

我有一个类如下:

const Module = {
  Example: class {
    constructor(a) {
      this.a = a;
    }

    static fromString(s) {
      // parsing code
      return new Module.Example(a);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是有效的,但通过全局名称访问当前的类构造函数Module.Example是一种丑陋和容易破坏.

在PHP中,我会使用new self()或者new static()在这里引用定义静态方法的类.在Javascript中是否有类似这样的东西不依赖于全局范围?

javascript

10
推荐指数
1
解决办法
2242
查看次数

转义CSS类选择器中的字符

我正在尝试在CSS类选择器中实现此W3字符转义的描述.

我遇到了在abc\20 def转义序列之后放置空格的语法问题,以确保def不会被误读为字符代码的一部分.

具体来说,尝试放入abc\XY defHTML类属性或类似命令jQuery().addClass('abc\\20 def')(\\这里是JS字符串文字语法的一部分;字符串值本身有一个斜杠)将赋予元素两个类,abc\20def.

这种语法是不是很难实现,我应该坚持使用六位数的前导零形式?或者该文档仅引用CSS代码中的转义格式,HTML属性/ jQuery参数需要一些不同形式的转义空格字符?

编辑:非常感谢大家的解释!

我现在明白这种语法只适用于CSS代码 - 而不是HTML属性或Javascript中设置的类名本身.

这也意味着指定为空格的字符不能出现在CSS类值中,并且没有任何类型的转义机制允许它们被添加.(具体来说,如果我理解正确的话,CSS选择器.abc\20 def是有效的并且选择具有类的元素abc def,但是没有意义,因为没有元素可以拥有这个类.)

对于我的具体用例,它涉及将任意值(可以有空格)映射到有效的类名,我需要定义自己的转义方案.用-或替换空格_(感谢Praveen)是一种可能性; 如果映射需要一对一,则用六位数的Unicode十六进制值替换它们(例如,它"abc def" -> "abc\000020def" 是一个更强大的值).

要记住的重要一点是,这个替换会影响类名本身 - 要abc\000020def在CSS中引用类,必须再次转义反斜杠,以形成选择器.abc\\000020def.

javascript html5 css-selectors

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

布尔公式的暴力Prolog SAT求解器

我正在尝试编写一种天真寻找布尔公式(NNF,但不是CNF)模型的算法.

我所拥有的代码可以检查一个现有的模型,但是当被要求查找模型时它会失败(或者没有完成),似乎因为它产生了无数的解决方案member(X, Y).[X|_], [_,X|_], [_,_,X|_]...

到目前为止我所拥有的是:

:- op(100, fy, ~).    
:- op(200, xfx, /\).  
:- op(200, xfx, \/).  
:- op(300, xfx, =>).  
:- op(300, xfx, <=>). 

formula(X) :- atom(X).
formula(~X) :- formula(X).
formula(X /\ Y) :- formula(X), formula(Y).
formula(X \/ Y) :- formula(X), formula(Y).
formula(X => Y) :- formula(X), formula(Y).
formula(X <=> Y) :- formula(X), formula(Y).

model(1, _).
model(X, F) :- atom(X), member([X, 1], F).
model(~X, F) :- atom(X), member([X, 0], F). % NNF
model(A /\ B, …
Run Code Online (Sandbox Code Playgroud)

prolog clpb sat

6
推荐指数
1
解决办法
531
查看次数

在JavaScript中保存blob,而blob仍在构建中

有几种解决方案可以将数据blob保存到浏览器环境中的文件中.我通常使用FileSaver.js.

但是,在这种特殊情况下,我的数据来自websocket流,并且生成的文件可能如此之大(数百MB),在内存中连接它确实会导致性能下降.


是否可以打开一个数据可以写入的流?


编辑:

websocket是XMPP连接.使用SI文件传输(XEP-0096)协议通过流启动(XEP-0095)协商文件传输 ; 然后通过带内字节流(XEP-0047)传输数据.

基本上,Web应用程序以4064字节的base64编码块获取数据,我想知道是否有任何方法让用户在收到所有数据之前保存文件.

javascript xmpp blob websocket

6
推荐指数
0
解决办法
153
查看次数

如何在Babel中扩展Array类?

我想定义一个检查堆栈结尾的快捷方法.

以下适用于Firefox:

const Stack = class extends Array {
  last() {
    return this[this.length - 1];
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,在用Babel编译它之后,它不起作用:

var Stack = function (_Array) {
  _inherits(Stack, _Array);

  function Stack() {
    _classCallCheck(this, Stack);

    return _possibleConstructorReturn(this, Object.getPrototypeOf(Stack).apply(this, arguments));
  }

  _createClass(Stack, [{
    key: 'last',
    value: function last() {
      return this[this.length - 1];
    }
  }]);

  return Stack;
}(Array);


console.log(Stack.prototype.last); // works
console.log((new Stack()).last); // doesn't work
Array.prototype.last = Stack.prototype.last;
console.log((new Stack()).last); // works
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我可以向新原型添加函数,但它们不可用于该原型的实例,除非它们直接插入到Array原型中(由于潜在的副作用,这显然是不好的做法).


更新:可能有几种方法可以解决这个问题(包括代理对象,或手动扩展原型而不是使用extends),但由于我Stack并不真正需要大多数Array方法,所以我现在只使用包装器.

  const Stack = …
Run Code Online (Sandbox Code Playgroud)

javascript babeljs

5
推荐指数
1
解决办法
924
查看次数

将多个 .gitignore 文件(本地和远程)保存在同一个存储库中

我有一个带有 .gitignore 文件的存储库,它不包括构建路径(例如vendor/来自 Composer)。

我还有一些.idea我想忽略的本地 IDE 路径(例如来自 PhpStorm),但它们不在存储库的 .gitignore 文件中。

我不知道该怎么做。如果 git.gitignore_*在文件夹中查找文件,那么我可以添加一个.gitignore_local包含(除其他外)自己名称的文件。

git gitignore

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