我在http://www.youtube.com/watch?v=x7cQ3mrcKaY上看到了一个React开发人员的演讲,演讲者提到模型的肮脏检查可能会很慢。 但是,由于在大多数情况下,虚拟DOM应该比模型更大,所以不计算虚拟DOM之间的差异实际上甚至更less。 我真的很喜欢虚拟DOM的潜在力量(特别是服务器端渲染),但我想知道所有的优点和缺点。
随着jQuery等JavaScript框架使客户端Web应用程序更丰富,更实用,我开始注意到一个问题… 你如何保持这种有组织的? 把所有的处理程序放在一个地方,并为所有的事件写function? 创build函数/类来包装所有的function? 写得像疯了一样,只是希望它最好的工作? 放弃并获得新的职业? 我提到了jQuery,但它通常是任何JavaScript代码。 我发现随着线条的堆积,你将很难pipe理脚本文件或find你要找的东西。 我发现的最大的问题是有很多方法可以做同样的事情,很难知道哪一个是目前普遍接受的最佳实践。 是否有任何一般的build议,以保持您的.js文件作为您的应用程序的其余部分一样漂亮和整洁的最佳途径? 或者这只是IDE的问题? 那里有更好的select吗? 编辑 这个问题的目的是更多地关于代码组织,而不是文件的组织。 有一些非常好的合并文件或分割内容的例子。 我的问题是:什么是目前普遍接受的最佳实践方式来组织你的实际代码? 什么是你的方式,甚至推荐的方式来与页面元素进行交互,并创build不会相互冲突的可重用的代码? 有些人列出了名字空间 ,这是一个好主意。 什么是其他方式,更具体地处理页面上的元素,并保持代码组织和整齐?
在网上无数的地方,我已经看到了在JavaScript之前包含CSS的build议。 推理一般是这种forms : 在订购CSS和JavaScript时,首先需要CSS。 原因在于呈现线程具有呈现页面所需的所有样式信息。 如果JavaScript包括第一,JavaScript引擎必须先parsing它,然后继续下一组资源。 这意味着渲染线程不能完全显示页面,因为它没有所需的所有样式。 我的实际testing揭示了非常不同的东西 我的testing线束 我使用下面的Ruby脚本为各种资源生成特定的延迟: require 'rubygems' require 'eventmachine' require 'evma_httpserver' require 'date' class Handler < EventMachine::Connection include EventMachine::HttpServer def process_http_request resp = EventMachine::DelegatedHttpResponse.new( self ) return unless @http_query_string path = @http_path_info array = @http_query_string.split("&").map{|s| s.split("=")}.flatten parsed = Hash[*array] delay = parsed["delay"].to_i / 1000.0 jsdelay = parsed["jsdelay"].to_i delay = 5 […]
对于一个项目,开发者向我们发送一个.js文件,代码如下: var myList = [1,2,3]; var a,b,c; [a,b,c] = myList; 它在Opera 10.30,Firefox 3.6.x中可用,但Opera 10.60和Chrome并不适用。 这只是好奇心,你有没有任何参考或链接,说这个代码是符合JS / ECMA标准或不? 你怎么看?
正如你可能知道的那样,ECMAscript试图变得聪明,如果你没有明确地写入分号 ,它会自动插入分号 。 简单的例子 function foo() { var bar = 5 return bar } 仍然按预期工作。 但是,如果你依赖于这一点,有一些警告。 如果我们重新写这样的function function foo() { var bar = 5 return { bar: bar } } ..这个函数现在会返回undefined因为解释器会在return语句后面插入这个分号(这就是为什么你总是应该在同一行作为一个语句带上大括号的原因)。 但是,知道所有这一切,我想知道现在在不同的浏览器和版本中,像下面这样的return语句是多么的安全 function foo() { var a = true, b = true, c = false; return a && b && c; } 我只是在生产环境中写了一个类似的return statement 。 […]
我一直在运行,并开发了一个分类网站,现在过去8个月,所有的错误只是由于一个原因:用户如何input他们的文字… 我的问题是 :是否有一个PHP类,一个插件,我可以做的 $str = UltimateClean($str)发送$ str到我的sql? PS。 我也注意到当我开始使用JSON时,问题加倍,因为我也必须小心输出JSON结果。 我遇到的一些问题:多语言string(不同的字符集),从Excel工作表复制粘贴。 注意:我不担心SQL注入。
首先,感谢您花时间考虑我的问题和您的帮助。 我正在使用Google Maps API v3和JavaScript将地图添加到网站。 我有一个地址列表,并成功地绘制在地图上。 当用户input一个邮政编码时,地图重新显示他们的位置,显示最接近该点的标记。 现在,我需要创build一个最近的3或5个位置的列表视图到他们的邮政编码与驱动方向的链接。 我被卡住了…并打开build议。 谢谢!
我正在制作一个简单的Chrome扩展程序,将YouTube播放列表中每个video的长度相加,然后在页面中插入总长度。 我已经成功了,但是我的脚本只在刷新页面后才起作用,但是在导航站点时不起作用。 虽然这不是很方便。 是否有可能在Youtube上检测到页面导航,并在浏览器中呈现HTML之前将HTML插入到页面中,以便立即显示添加的内容,且不需要任何页面刷新? 示例链接: https : //www.youtube.com/playlist?list = PL_8APVyhfhpdgMJ3J80YQxWBMUhbwXw8B PS我的问题与在greasemonkey脚本中显示(不是页面完全加载后)立即修改元素是不一样的吗? 因为我试过MutationObserver,问题是一样的 – 需要刷新才能显示对网页的更改: var observer = new MutationObserver(function(mutations) { for (var i=0; i<mutations.length; i++) { var mutationAddedNodes = mutations[i].addedNodes; for (var j=0; j<mutationAddedNodes.length; j++) { var node = mutationAddedNodes[j]; if (node.classList && node.classList.contains("timestamp")) { var videoLength = node.firstElementChild.innerText; observer.disconnect(); var lengthNode = document.createElement("li"); var […]
我想了解.Notation和[]符号之间的区别。 在我使用if (object[key] === true)我得到了正确的答案。 当我使用if (object.key === true)它不起作用。 有人能解释为什么这是不同的。 var myObj = { one: false, two: false, three: false, four: true, five: false, six: false }; var myFunc = function (object) { for (var key in object) { if (object[key] === true) { return "There is a true value in this object"; } else […]
我需要编写一个使用HTML5和canvas的软件。 整个软件应该能够在本地运行,而不需要服务器。 所以我只能使用JavaScript,没有PHP。 困难的部分:我必须dynamic获取操作过程中所需的文本文件的内容。 例如:当软件启动时,我需要“config.json”。 而用户做了一些desicions后,我需要“story1.txt”或“story2.txt”等。 我的问题: 我无法使用Ajax,因为Chrome阻止了它 – 本地文件不允许获取其他文件的内容。 我总是得到一个错误消息。 我到目前为止所尝试的是: 使用Ajax和jQuery加载文件 Chrome不允许我加载文件 将文件加载到script-Tag中 即使我将JSON文件声明为js-Code,我也无法访问加载的文件的内容 将文件加载到不可见的Iframe中,并读取其内容 加载工作,我可以看到代码。 但是,当我尝试访问IFrame的内容时,我又收到了Chrome错误消息: "Uncaught SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match." 题: 有没有办法dynamic加载文本文件,或者我不得不使用Web服务器?