我有一些简单的CSS:
#someElement {
background-color:black;
color:white;
}
Run Code Online (Sandbox Code Playgroud)
它在浏览器中看起来不错,但是当我在Firefox中打印它时,它在白色背景上显示为黑色文本.我想这是一种节省墨水的功能,但有什么方法吗?
当我第一次玩CoffeeScript时,我遇到了一个问题.为了调试我的问题,我尝试用咖啡脚本站点中的一个示例代码替换我的整个文件:
kids =
brother:
name: "Max"
age: 11
sister:
name: "Ida"
age: 9
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译该代码时,我得到:
Error: In coffee/main.coffee, Parse error on line 3: Unexpected 'INDENT'
at Object.parseError (/usr/lib/coffeescript/parser.js:501:11)
at Object.parse (/usr/lib/coffeescript/parser.js:573:32)
at Object.compile (/usr/lib/coffeescript/coffee-script.js:23:22)
at /usr/lib/coffeescript/command.js:99:27
at /usr/lib/coffeescript/command.js:72:28
at fs:84:13
at node.js:773:9
In coffee/main.coffee, Parse error on line 3: Unexpected 'INDENT'
Run Code Online (Sandbox Code Playgroud)
由于这是来自CoffeeScript网站的代码,我认为代码本身不是问题.但是,编译器似乎也正常工作; 如果我编译:
a = 2
Run Code Online (Sandbox Code Playgroud)
它生成一个文件:
(function(){
var a;
a = 2;
})();
Run Code Online (Sandbox Code Playgroud)
正如所料.所以换句话说,代码很好,编译器很好,但不知怎的,我得到了这个意外的'IDENT'错误......任何人都可以帮我理解发生了什么?
如何将属性标记为必须是DOM元素?
这个页面说这PropTypes.element实际上是一个React元素,那么DOM元素的等价物是什么?
Eclipse是一个很棒的编辑器,其中有许多精彩的功能,我最喜欢的是Mark Occurrences功能.但是,我最近安装了Aptana插件,在尝试配置它时,我设法在我的Eclipse安装中破坏了Mark Occurrences.
该功能仍然有些作用,但它现在只突出显示首次创建它的位置,而不是突出显示给定对象的所有实例.换句话说,在:
1. Dog dog = new Dog();
2. dog.bark();
3. dog.bark();
Run Code Online (Sandbox Code Playgroud)
只会突出显示第1行中的"狗",而不是2或3中的"狗".
然而,在我知道我已经配置好所有三个"狗"引用之前,Eclipse将突出显示.有谁知道我更改了什么配置选项以"打破"这样的事件标记?
所以,JSON.stringify提供了一个转换JS对象的好方法:
var baz = {"foo":1, "bar":someFunction};
Run Code Online (Sandbox Code Playgroud)
进入JSON字符串,如:
{"foo":1}
Run Code Online (Sandbox Code Playgroud)
它使用可选的第二个参数来控制应该序列化哪些字段:
JSON.stringify(baz, ["foo"]);
Run Code Online (Sandbox Code Playgroud)
那很好,但是有一个问题.假设您的"baz"实际上是另一个对象的属性,并且您想序列化该另一个对象:
someObject.baz = {"foo":1, "bar":someFunction};
JSON.stringify(someObject, ["baz"]);
Run Code Online (Sandbox Code Playgroud)
好吧,通常你只需要在baz上定义一个toJSON方法,例如:
someObject.baz = {"foo":1, "bar":someFunction};
someObject.baz.toJSON = function() { /* logic to "toJSON" baz*/ }
JSON.stringify(someObject, ["baz"]);
Run Code Online (Sandbox Code Playgroud)
现在,正如我之前提到的,我们已经有了"toJSON"baz的完美逻辑:
someObject.baz.toJSON = function() {
return JSON.stringify(baz, ["foo"]);
}
Run Code Online (Sandbox Code Playgroud)
但是如果你尝试把它放到你的toJSON中,你会得到一个递归错误,因为stringify会触发toJSON,这将触发stringify,这将... :-(
你可以通过黑客解决这个问题:
someObject.baz.toJSON = function() {
var oldToJON = this.toJSON;
this.toJSON = null;
var ret = JSON.stringify(baz, ["foo"]);
this.toJSON = oldToJON;
return ret;
}
Run Code Online (Sandbox Code Playgroud)
但是......这似乎是错的.所以,我的问题是:是否有可以利用任何方式漂亮的内置JSON.stringify的系列化电源内部对象的方法的toJSON(不必隐藏在字符串化操作过程中的toJSON方法本身)?
我正在尝试调试我的webapp中的内存泄漏.
我拍摄堆的快照并比较不同的堆.
我发现我的一些物体正在某处被引用.但是,我的所有对象都通过看起来像我内部的对象来保留,例如:

正如您所看到的,这个SectionNavView对象是由我创建的一些方法引用的:cleanUp,hide,isShown等,使用我的局部变量,但这些方法是从我无法控制的东西中引用的:idToWrappedObject.有时,还有另一个中介 - 一个injectScript对象.
如果我的对象仅被内部V8引用引用,那么它们是否应该在分析器在GC期间拍摄快照之前被释放?
在Eclipse中,您可以启用"Mark Occurrences",然后它将突出显示当前范围中给定变量的每个匹配项.这很好,但我真的想从一个这样的事件转移到下一个事件.
到目前为止,我已经找到了两条关于如何做到这一点的建议,但两项都没有奏效.首先是这个SO帖子:Eclipse导航到下一个/上一个标记的出现,这表明ctrl+k.但是,这对我不起作用:在我的Eclipse中,键映射必然是"查找下一个",而不是"下一次出现"(在Eclipse键绑定中似乎没有"下一次出现",但是也许我不是用正确的名字来称呼它.
然后我找到了一个论坛帖子,建议点击工具栏中的黄色向上箭头并检查事件,然后使用ctrl+,.如果它有效的话,这本来是次优的,因为我已经ctrl+,习惯在错误/警告之间移动,但至少它本来就是......但它根本不起作用(ctrl+,只是让我转到下一个警告).
所以,我的问题是:如何在Eclipse中从一个事件移动到下一个事件(最好通过键盘快捷键)?
Rails ActiveResource很棒......除了一件事:据我所知,没有办法看到它在幕后使用的是什么URL.例如,假设我有一个名为Issue的ActiveResource,用于myIssues.com/issues.xml上的web服务.如果我做:
Issue.find(:all, :params => {:page => 2})
Run Code Online (Sandbox Code Playgroud)
我希望ActiveResource可以调用:
myIssues.com/issues.xml?page=2
Run Code Online (Sandbox Code Playgroud)
......但我实际上并不知道.据我所知,ActiveResource可能已经决定它不喜欢单词"page",所以它实际上使用:
myIssues.com/issues.xml?mod_page=2
Run Code Online (Sandbox Code Playgroud)
这使调试变得困难.现在我有一种情况,如果我转到我认为 ActiveResource正在使用的URL ,它可以正常工作.但是,当我实际使用ActiveResource时,它不起作用.看到它的GETing会对此非常有帮助,所以...
有没有人知道记录(或以其他方式输出;如果有一些资源,也可以很好地工作的方法)的方法,ActiveResource用来做它的东西的URL?
在Webpack之前,我总是依赖于以下模式来进行"缓存清除":
<script src="foo.js?cacheBust=12345" />
Run Code Online (Sandbox Code Playgroud)
哪个12345是服务器在每个构建时为我生成的标记(它可能是Git哈希,尽管在我的情况下它不是).
有了Webpack,我现在有两个文件:build.js和chunk.1.js.由于我使用正常的脚本标记带来第一个,我可以使用上面的模式:
<script src="build.js?cacheBust=12345" />
Run Code Online (Sandbox Code Playgroud)
但是,此时build.js会进行提取chunk.1.js,并且当它执行时,它不包括缓存无效的后缀.
我想让Webpack自动附加?cacheBust=12345,但我不知道12345构建时的部分,所以我不能把它包含在我的webpack.config.相反,我必须等到HTML页面被评估,此时我从服务器获取令牌.
所以,我的问题是,有没有办法让Webpack查看用于获取初始文件的参数(例如.?cacheBust=12345)并在获取其他文件时附加相同的参数?
在Javascript中,某些运算符先于其他运算符处理:
1 + 2 * 3
// 1 + (2 * 3)
// 7 because * has higher precedence than +
1 === 0 + 1
// 1 === (0 + 1)
// true because + has a higher precedence than ===
Run Code Online (Sandbox Code Playgroud)
MDN具有所有运营商及其优先级的完整细分 ......除外await.
await getFoo() * 2; // await (getFoo() * 2) or (await getFoo()) * 2?
await getFoo() === 5; // await (getFoo() === 5) or (await getFoo()) === 5?
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释在等待之前/之后处理哪些运营商?
现在我觉得我必须添加一些可能不必要的括号,因为我不确定在之前/之后会处理什么await …
javascript ×4
eclipse ×2
async-await ×1
coffeescript ×1
css ×1
debugging ×1
firefox ×1
json ×1
logging ×1
memory-leaks ×1
print-css ×1
printing ×1
profiler ×1
reactjs ×1
webpack ×1