小编Gau*_*nan的帖子

JavaScript中PubSub /过多事件和事件处理程序的性能成本?

Pub Sub/Event Driven架构是客户端和服务器端JavaScript的常见做法.我的任务是使用 Dojo作为前端和 node.js作为后端来构建一个非常大的Web应用程序.Pub/Sub似乎非常吸引人,因为它允许团队之间的大量并行.我担心,如果会有性能后果.

我有一个关于JavaScript中事件和事件处理程序成本的一般性问题.我已经看过这个,这个,这个,甚至是这个这个.但我似乎仍然没有看到一个通用的答案.独立于框架,假设我们有两种方法

publish() //Like jQuery's / Dojo's trigger(), EventEmitter's emit()
Run Code Online (Sandbox Code Playgroud)

subscribe() //Like jQuery's / Dojo's / EventEmiter's / DOM's on() connect() live() addEventListener()
Run Code Online (Sandbox Code Playgroud)

问题1:每个事件触发器的成本是多少?

案例1:清洁(松散耦合)代码强调Pub/Sub

object.publish('message1', data);
object.publish('message2', data);
...
object.publish('message100', data);

//All these are in separate files / modules    
subscribe (object, 'message1', function (data) { A()...})
subscribe (object, 'message2', function (data) { B()...})
subscribe (object, 'message100', …
Run Code Online (Sandbox Code Playgroud)

javascript performance events publish-subscribe node.js

16
推荐指数
1
解决办法
2611
查看次数

使用通用选择器作为LESS CSS中的mixin

我知道mixins和参数mixins.我们正在寻找的是一种将CSS/LESS中的任何通用选择器转换为mixin的方法.

例如在Twitter BootStrap中,我们在这里

.navbar .nav > li {
  float: left;
} 
Run Code Online (Sandbox Code Playgroud)

如果我必须在课堂上使用它,请说.mynavbar我希望能够做到这一点

INPUT->
.mynavbar {
  .navbar .nav >li;
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT->
.mynavbar {
  float:left;
}
Run Code Online (Sandbox Code Playgroud)

现在我知道当前版本的LESS无法做到这一点,因为编译器会标记解析器错误.我希望有人帮我改变less.js的源代码,以便这是可行的.

我已经设法达到mixin解析器的源代码.我已经尝试在那里更改RegExp,但它会干扰解析器的其他部分.我知道我们只需要进行一些更改,因为它不仅仅是接受.mixin而且#mixin我们必须接受任何mixin之类的标签/属性选择器input[type=text].

目前需要开发使用Bootstrap的UI框架.不幸的是,引导程序中的许多地方都充斥着直接标记选择器而不是id和类.

css css-selectors less twitter-bootstrap

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

dojo dgrid里面的小部件

我们公司从移动dojox/DataGriddgrid一段时间回来.现在我们发现,dgrid似乎不支持开箱即用的dijit/dojox小部件.

dojox/DataGrid有一个formatter()可以返回小部件.在那里很容易做到!GitHub上API比较

"dgrid支持格式化程序函数,但不支持从它们返回一个小部件.dgrid也有renderCell,它应该返回一个DOM节点.这可能表面上用于显示小部件(编辑器列插件就是这样做的).请注意,出于单元格编辑的目的,强烈建议使用编辑器列插件."

究竟怎么样?

我尝试过使用编辑器插件{editor: ' ', editorArgs:' '}.这确实渲染了一个小部件但限制性太强.例如,如何渲染a dijit/Button,其标签是单元格的值?或更复杂的东西,我怎么使用(鲜为人知的)dojox/image/MagnifierLite<img>从格式化函数生成与src实体店的存在价值?

dojo datagrid dojox.grid dojox.grid.datagrid dgrid

9
推荐指数
1
解决办法
7641
查看次数

DOM的JavaScript解析器

我们在一个项目中有一个特殊要求,我们必须通过JavaScript解析一串HTML(来自AJAX响应)客户端.多数民众赞成在PHP或Java中没有解析!我整整一周都在浏览StackOverflow并且还没有得到可接受的解决方案.

有关要求的更多细节:

  • 我们可以使用任何库(最好是dojo和/或jQuery)或者原生!

  • 我们需要解析作为字符串接收整个HTML文档,包括<head><body>.

  • 我们还需要有时将解析后的DOM结构序列化为字符串.

  • 最后,我们不希望将解析后的DOM附加到当前Document.相反,我们会将其发送回服务器以进行永久存储.

例如:我们需要类似的东西

var dom = HTMLtoDOM('<html><head><title> This is the old title. </title></head></html>');
    dom.getElementsByTagName('title')[0].innerHTML = "This is a new Title";
Run Code Online (Sandbox Code Playgroud)

根据我的研究,这些是我们的选择:

  1. 一个TinyMCE解析器.问题?我想我们需要包括一个编辑.如何解析我们不需要编辑器的HTML?

  2. John Resig的Parser.应该是我们最好的选择.不幸的是,当给出页面的全部内容时,解析器会崩溃!

  3. jQuery $(htmlString)或dojo.toDom(htmlString).双方依靠的DocumentFragment,从而吞噬<head><body>!

编辑:我们想序列化HTML,以便我们可以通过RegExp捕获某些自定义HTML Commnet.我们需要让用户有机会编辑元标记,标题标记等HTML Parser.

哦,我觉得我会在Stack Overflow中被谋杀,即使我只是暗示通过RegExp解析HTML!

javascript jquery dojo parsing html-parsing

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

自定义元素/ WebComponents是否可以与SVG一起使用?

对于CustomElements,我可以这样做:

class MyElement extends HTMLElement {}
Run Code Online (Sandbox Code Playgroud)

我可以对SVG Elements做同样的事情吗?喜欢

class MyOwnRectangle extends SVGRectElement {}
Run Code Online (Sandbox Code Playgroud)

如果可行,我可以麻烦别人使用jsbin吗?

如果没有,为什么不呢?

这有一些很好的用例,例如能够将模型数据存储在元素本身中。SVG 操作基本上用于两个主要领域:

  1. 动画制作
  2. 诸如ER,组织结构图,流程等图。

诸如JointJS之类的库以类的形式(扩展了Backbone视图)具有自己的抽象,以存储与视图(屏幕上的SVG图)关联的模型数据。

就像WebComponents最终可以以标准方式替代Framework X的jQuery插件一样,为什么不对SVG这样做呢?

最后

Polymer 0.5如何做到这一点?

Polymer.js是否支持内部SVG元素?

此修补程序如何在Polymer 1.0中做到这一点?

https://github.com/Polymer/polymer/pull/3372

现在有什么替代方案?

我想我们可以扩展HTMLElement。在我们ShadowDOM使用的<svg>元素,然后附上所有我们其实是想延长,如SVG标签<rect><polyline>等等!也许更干净的方法呢?

将来会实施吗?

javascript jquery svg web-component polymer

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