我有一个使用ASP.NET开发的单页Web应用程序.我最近使用SignalR库将许多Web方法转换为基于推送的方法.这真的大大增加了页面,减少了页面上的大量服务器调用.
与此同时,我也一直在寻找RESTful ASP.NET WebAPI的一些服务器端方法,真正的美妙之处在于它允许在我开发的同时为外部应用程序创建API.核心应用程序(这对我正在做的事情很重要).
然而,在看了几篇文章和这 两个问题后,似乎推送和WebAPI方法似乎是两种完全不同的客户端 - 服务器通信范例.我敢肯定我可以创建各种方法,可以通过任何协议访问,但我不确定是否有这个陷阱或如果这被认为是草率 - 也许有一个更优雅的方式来实现我的目标对于.
在某种情况下,我希望RESTful WebAPI通过SignalR集线器广播事件......相反(SignalR需要访问WebAPI)似乎不太可能,但我认为仍然可能.
有没有人这样做过?有没有人对如何进行有任何建议或提示?这里最优雅的方式是什么?
我有一个将config对象作为参数的函数.在函数内,我也有default对象.这些对象中的每一个都包含基本上用作函数内其余代码的设置的属性.为了防止必须指定config对象中的所有设置,我使用jQuery的extend方法来填充一个新对象,如果未在对象中指定,则使用对象中的settings任何默认值:defaultconfig
var config = {key1: value1};
var default = {key1: default1, key2: default2, key 3: default 3};
var settings = $.extend(default, config);
//resulting properties of settings:
settings = {key1: value1, key2: default2, key 3: default 3};
Run Code Online (Sandbox Code Playgroud)
这很好用,但我想在不需要jQuery的情况下重现这个功能.是否有一个同样优雅(或接近)的方法用普通的'javascript做到这一点?
这个问题与" 如何动态合并两个JavaScript对象的属性? "问题不重复.虽然这个问题只是想创建一个包含来自两个独立对象的所有键和值的对象 - 我特别想要解决如何在两个对象共享一些但不是所有键以及哪个对象将优先的情况下执行此操作(如果存在重复键,则生成的对象的默认值.更具体地说,我想解决使用jQuery的方法来实现这一点,并找到一种没有jQuery的替代方法.虽然这两个问题的许多答案都重叠,但这并不意味着问题本身是相同的.
我正在尝试重构一些冗长,丑陋的Javascript(可耻地,这是我自己的).我开始学习Javascript时开始了这个项目; 这是一次很棒的学习经历,但是我的代码中有一些垃圾,我使用了一些相当不好的做法,其中主要是全局命名空间/对象(在我的情况下,window对象)的严重污染.在我努力减轻污染的过程中,我认为衡量它会有所帮助.
我的直觉是window在加载任何代码之前简单地计算附加到对象的对象的数量,再次在加载第三方库之后,最后在我的代码执行之后.然后,当我重构时,我会尝试减少与加载我的代码相对应的增加量.要做到这一点,我正在使用:
console.log(Object.keys(window).length)
在我的代码中的各个地方.这似乎工作正常,我看到数字增长,特别是在我自己的代码加载后.但...
只需window在Chrome Developer控制台中查看对象的内容,我就可以看到它不计算附加到对象的所有内容.我怀疑它不包括一些更基本的属性或对象类型,无论它们属于浏览器,库还是我自己的代码.无论哪种方式,任何人都可以想到一种更好,更准确的方法来衡量有助于重构的全局命名空间污染吗?
提前致谢!
我正在尝试使用Grunt在项目中创建一个目录,以便在博客上发布新帖子.它本质上会在一个posts名为的目录中创建一个目录YYYYMMDDDD-PostNameInPascalCase.
为了做到这一点,我每次执行任务时都必须提示用户输入帖子名称.我知道grunt-init会提示用户从项目模板创建项目,但我很好奇是否有办法在Gruntfile.js已经建立的项目的文件中执行此操作.
有什么想法吗?
我正在使用jQuery" contains " 的扩展,如下所示:
$.extend($.expr[':'],{
containsExact: function(a,i,m){
return $.trim(a.innerHTML.toLowerCase()) === m[3].toLowerCase();
},
containsExactCase: function(a,i,m){
return $.trim(a.innerHTML) === m[3];
},
containsRegex: function(a,i,m){
var regreg = /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})$/,
reg = regreg.exec(m[3]);
return RegExp(reg[1], reg[2]).test($.trim(a.innerHTML));
}
});
Run Code Online (Sandbox Code Playgroud)
我有一个表格,我正在尝试有条件地格式化某些单元格,所以我在td选择器中使用该containsRegex函数的扩展.我快到的问题是,很多,我试图用(我已经对JavaScript的正则表达式测试仪测试一样从正则表达式这和他们为之奋斗)不使用此功能工作.这些是我想要匹配的各种字符串:
注意,"x"可以是ax,t,f或v,"X"可以是X,T,F或V.最后,"(mb)"可以是括号中的任何两个小写字母az.
- ,(mb),x*,x*(mb),x,x(mb),X*,X*(mb),X
以下是我正在使用的几个正则表达式语句的代码:
$("td:containsExact('-')").addClass("0 queue"); // -
$("td:containsRegex('/[^xtfv*]\([a-z]{2}\)/g')").addClass("1 active"); // (mb)
$("td:containsRegex('/\b[xtfv]\*(?!\()/g')").addClass("2 queue review"); // x*
$("td:containsRegex('/\b[xtfv]\*(?:\([a-z]{2}\))/g')").addClass("3 active review"); // x*(mb)
$("td:containsRegEx('/\b[xtfv](?![*\(])/g')").addClass("4 queue"); // x
$("td:containsRegEx('/\b[xtfv](?:\([a-z]{2}\))/g')").addClass("5 active"); // x(mb)
$("td:containsRegEx('/\b[XTFV]\*(?!\()/g')").addClass("6 queue review"); // X*
$("td:containsRegEx('/\b[XTFV]\*(?:\([a-z]{2}\))/g')").addClass("7 active review"); // X*(mb) …Run Code Online (Sandbox Code Playgroud) 我有一个multiple属性集的选择框.我也使用<optgroup>标签来分隔我选择框中的类别.我正在寻找一种方法,使用javascript或jQuery,让每个组中的各种选项使用"单选按钮逻辑"而不是"复选框逻辑".例如:
<optgroup label="cat1">
<option>item 1.1</option>
<option>item 1.2</option>
</optgroup>
<optgroup label="cat2">
<option>item 2.1</option>
<option>item 2.2</option>
</optgroup>
Run Code Online (Sandbox Code Playgroud)
item 1.1在列表中选择.item 1.1按预期选择.item 2.1在列表中选择.现在,这两个item 1.1和item 2.1选择.item 1.2在列表中选择.现在item 1.1被取消选择,item 2.1而且item 1.2都被选中. 那有意义吗?提前致谢!
我正在使用D3.js而我在为多个系列的区域图表设置堆叠布局时遇到了问题.我有两种可能的数据结构(如果有帮助的话).一个是提供给脚本的原始数据,在这个结构中:
var data = [{key: 'Group1', value: 37, date: '04/23/12'},
{key: 'Group2', value: 12, date: '04/23/12'},
{key: 'Group3', value: 46, date: '04/23/12'},
{key: 'Group1', value: 32, date: '04/24/12'},
{key: 'Group2', value: 19, date: '04/24/12'},
{key: 'Group3', value: 42, date: '04/24/12'},
{key: 'Group1', value: 45, date: '04/25/12'},
{key: 'Group2', value: 16, date: '04/25/12'},
{key: 'Group3', value: 44, date: '04/25/12'},
{key: 'Group1', value: 24, date: '04/26/12'},
{key: 'Group2', value: 52, date: '04/26/12'},
{key: 'Group3', value: 64, date: '04/26/12'}]
Run Code Online (Sandbox Code Playgroud)
第二个是使用此代码创建的嵌套结构:
pData = d3.nest() …Run Code Online (Sandbox Code Playgroud) 我在SQL Server环境中设置了一个表,其中包含我正在跟踪的各种活动的日志.特定日志项使用唯一代码对正在进行的活动进行分类,并使用日期时间字段跟踪该活动发生的时间.
我想,使用单个查询或存储过程,获得平均每小时活动计数,按星期几分组.例:
Day | Hour | Average Count
-------------------------------
Monday | 8 | 5
Monday | 9 | 5
Monday | 10 | 9
...
Tuesday | 8 | 4
Tuesday | 9 | 3
...etc
Run Code Online (Sandbox Code Playgroud)
现在我有一个查询设置,每天每小时吐出计数,但我的问题是更进一步,并按星期几取得平均值.这是我当前的查询:
SELECT CAST([time] AS date) AS ForDate,
DATEPART(hour, [time]) AS OnHour,
COUNT(*) AS Totals
FROM [log] WHERE [code] = 'tib_imp.8'
GROUP BY CAST(time AS date),
DATEPART(hour,[time])
ORDER BY ForDate Asc, OnHour Asc
Run Code Online (Sandbox Code Playgroud)
关于如何实现这一目标的任何建议?
提前致谢!
关于如何将JavaScript 数组拆分为 chunks有一个很好的问题。我目前正在将它用于我正在编写的一些统计方法,我使用的答案如下(尽管我选择不像他们在答案中那样扩展 Array 原型):
var chunk = function(array, chunkSize) {
return [].concat.apply([],
array.map(function(elem,i) {
return i%chunkSize ? [] : [array.slice(i,i+chunkSize)];
})
);
};
Run Code Online (Sandbox Code Playgroud)
这需要一个数组,例如[1,2,3,4,5,6],并给定 a chunkSizeof 2 返回[[1,2],[3,4],[5,6]]。我很好奇如何修改它以创建一组“重叠”块(或者对于那些熟悉诸如移动平均线、“移动子组”等方法的人)。
提供与上述相同的数组和chunkSize3,它将返回[[1,2,3],[2,3,4],[3,4,5],[4,5,6]]. A chunkSizeof 2 将返回[[1,2],[2,3],[3,4],[4,5],[5,6]]。
关于如何解决这个问题的任何想法?
我想Model.save()使用自定义日志记录方法追加Backbone的本机方法,该方法记录成功和错误.我知道在每个型号的基础上我可以称之为:
myModel.save().success(function() {
// do something cool
});
Run Code Online (Sandbox Code Playgroud)
但是,我不想调整对各种模型的保存事件的每次调用,而是只想在任何模型上监听保存事件.我认为我想避免的Backbone.Model.prototype.save一种方法实际上是修改方法(尽管如果某人有一种优雅的方式来做到这一点,我会对它开放).
有关如何创建这样的事件监听器的任何想法?
javascript ×8
jquery ×3
object ×2
arrays ×1
asp.net ×1
backbone.js ×1
charts ×1
contains ×1
count ×1
d3.js ×1
events ×1
extend ×1
group-by ×1
gruntjs ×1
html ×1
multi-select ×1
namespaces ×1
node.js ×1
refactoring ×1
regex ×1
rest ×1
signalr ×1
splice ×1
sql ×1
sql-server ×1