我正在使用backbone.js构建一些复杂的视图关系,我想知道从javascript性能角度看是否存在任何问题:
var viewOne = Backbone.View.extend({
tagName : 'li',
initialize : function() {
this.v2 = new viewTwo({parent:this});
},
clickHideOne : function() {
$(this.el).removeClass('selected');
}
});
var viewTwo = Backbone.View.extend({
tagName : 'a',
initialize : function() {
this.bind('click', this.clickHide, this);
},
clickHide(){
$(this.el).removeClass('selected');
this.options.parent.clickHideOne();
}
});
Run Code Online (Sandbox Code Playgroud)
这是两个视图之间循环引用的一个非常简单的示例,为了使一个视图中的事件容易在视图链中向上传播,或者保持对父视图中对象的任何引用.是否有任何情况会出现问题,特别是与IE7 +中DOM元素引用的潜在泄漏有关,或者是否有另一个推荐的最佳实践来引用父视图.
另外,我明白我可以做$(this.el).parent('li').removeClass('selected'); 在视图中,这不是重点......这只是我对循环引用的一个非常简单的例子.
我正在为Sublime/TextMate语言文件中的一些语法高亮处理正则表达式,它要求我在非自我关闭的html标记上"开始",并在相应的结束标记上结束:
开始: (<)([a-zA-Z0-9:.]+)[^/>]*(>)
结束: (</)(\2)([^>]*>)
到目前为止,一切都很好,我能捕捉到标签名称,它匹配才能够应用适当的图案为标记之间的区域.
jsx-tag-area:
begin: (<)([a-zA-Z0-9:.]+)[^/>]*>
beginCaptures:
'1': {name: punctuation.definition.tag.begin.jsx}
'2': {name: entity.name.tag.jsx}
end: (</)(\2)([^>]*>)
endCaptures:
'1': {name: punctuation.definition.tag.begin.jsx}
'2': {name: entity.name.tag.jsx}
'3': {name: punctuation.definition.tag.end.jsx}
name: jsx.tag-area.jsx
patterns:
- {include: '#jsx'}
- {include: '#jsx-evaluated-code'}
Run Code Online (Sandbox Code Playgroud)
现在我也希望能够在开始标记中捕获零个或多个html属性,以便能够突出显示它们.
所以,如果标签是 <div attr="Something" data-attr="test" data-foo>
这将能够匹配attr
,data-attr
和data-foo
,还有<
和div
喜欢的东西(这很粗糙):
(<)([a-zA-Z0-9:.]+)(?:\s(?:([0-9a-zA-Z_-]*=?))\s?)*)[^/>]*(>)
它不需要是完美的,只是为了一些语法高亮,但我很难弄清楚如何在标签内实现多个捕获组,我是否应该使用环顾等,或者这是否是甚至可以使用单个表达式.
编辑:这里有关于具体案例/问题的更多细节 - https://github.com/reactjs/sublime-react/issues/18
假设我有2个表,一个叫做类别,一个叫做cat_pages.
类别表具有列ID,标题和时间戳.例如:
CREATE TABLE categories (
id INT UNSIGNED PRIMARY KEY,
title VARCHAR(32),
`timestamp` TIMESTAMP,
INDEX (title)
) Engine=InnoDB;
Run Code Online (Sandbox Code Playgroud)
cat_pages有2列,cat_id和page_id:
CREATE TABLE cat_pages (
cat_id INT UNSIGNED
REFERENCES categories (id)
ON DELETE CASCADE ON UPDATE CASCADE,
page_id INT UNSIGNED
REFERENCES pages (id)
ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE INDEX (cat_id, page_id),
INDEX (page_id, cat_id),
) Engine=InnoDB;
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用ID上的cat_pages表加入类别表,这样就可以了
查询:
SELECT * FROM categories as c
LEFT JOIN cat_pages as p ON c.id = p.cat_id
Run Code Online (Sandbox Code Playgroud)
生成一个重复多次类别的结果集(因为cat_pages表中有多个匹配项.我需要什么才能使每个类别只显示一次,如果cat_pages表中没有匹配则根本不显示?
backbone.js ×1
dom ×1
javascript ×1
join ×1
jquery ×1
mysql ×1
react-jsx ×1
regex ×1
sql ×1
sublimetext2 ×1