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)
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) 我知道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和类.
我们公司从移动dojox/DataGrid到dgrid一段时间回来.现在我们发现,dgrid似乎不支持开箱即用的dijit/dojox小部件.
dojox/DataGrid有一个formatter()可以返回小部件.在那里很容易做到!GitHub上的API比较说
"dgrid支持格式化程序函数,但不支持从它们返回一个小部件.dgrid也有renderCell,它应该返回一个DOM节点.这可能表面上用于显示小部件(编辑器列插件就是这样做的).请注意,出于单元格编辑的目的,强烈建议使用编辑器列插件."
究竟怎么样?
我尝试过使用编辑器插件{editor: ' ', editorArgs:' '}.这确实渲染了一个小部件但限制性太强.例如,如何渲染a dijit/Button,其标签是单元格的值?或更复杂的东西,我怎么使用(鲜为人知的)dojox/image/MagnifierLite与<img>从格式化函数生成与src实体店的存在价值?
我们在一个项目中有一个特殊要求,我们必须通过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)
根据我的研究,这些是我们的选择:
一个TinyMCE解析器.问题?我想我们需要包括一个编辑.如何解析我们不需要编辑器的HTML?
John Resig的Parser.应该是我们最好的选择.不幸的是,当给出页面的全部内容时,解析器会崩溃!
jQuery $(htmlString)或dojo.toDom(htmlString).双方依靠的DocumentFragment,从而吞噬<head>和<body>!
编辑:我们想序列化HTML,以便我们可以通过RegExp捕获某些自定义HTML Commnet.我们需要让用户有机会编辑元标记,标题标记等HTML Parser.
哦,我觉得我会在Stack Overflow中被谋杀,即使我只是暗示通过RegExp解析HTML!
对于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 操作基本上用于两个主要领域:
诸如JointJS之类的库以类的形式(扩展了Backbone视图)具有自己的抽象,以存储与视图(屏幕上的SVG图)关联的模型数据。
就像WebComponents最终可以以标准方式替代Framework X的jQuery插件一样,为什么不对SVG这样做呢?
最后,
Polymer 0.5如何做到这一点?
此修补程序如何在Polymer 1.0中做到这一点?
https://github.com/Polymer/polymer/pull/3372
现在有什么替代方案?
我想我们可以扩展HTMLElement。在我们ShadowDOM使用的<svg>元素,然后附上所有我们其实是想延长,如SVG标签<rect>,<polyline>等等!也许更干净的方法呢?
将来会实施吗?
javascript ×3
dojo ×2
jquery ×2
css ×1
datagrid ×1
dgrid ×1
dojox.grid ×1
events ×1
html-parsing ×1
less ×1
node.js ×1
parsing ×1
performance ×1
polymer ×1
svg ×1