我感到有点困惑,有很多框架与Node.js相关的'东西'.有人能够给我一个概述 - 以下图书馆/框架/其他相关/互动的方式 - 包含什么或主要目的是什么? - 他们之间的差异
此外,如果还有其他我已经离开我的列表,请随意添加它们以及它们是什么以及它们如何适合的描述.
说我有
msg = "Saved Successfully"
Run Code Online (Sandbox Code Playgroud)
要么
msg = -> "Saved #{@course.title} Successfully"
Run Code Online (Sandbox Code Playgroud)
无论如何要优雅地获取msg的值而不知道它是函数还是常规变量而不是做
success_message = if typeof msg is 'function' then msg() else msg
Run Code Online (Sandbox Code Playgroud) 致力于在Coffeescript中重写我的网站的前端.我理解如何将click函数绑定到类.
$('.song').click ->
//code
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了动态加载内容的一些问题.我知道在JQuery中,解决方法是使用"On"函数,如下所示:
$(document).on('click', '.song', function(){
//code
});
Run Code Online (Sandbox Code Playgroud)
但我不确定这是如何转化为咖啡因的.我的印象是火箭箭头 - >转换为javascript中的匿名函数,但如果函数是其中一个参数,它是如何工作的?我尝试了很多不同的语法,但它们似乎都不起作用,谢谢!
使用这样的数组:
users = [
{ id: 1, fname: 'Fred', lname: 'Flinstone', state: 'CA' },
{ id: 2, fname: 'George', lname: 'Winston', state: 'FL' },
{ id: 3, fname: 'Luke', lname: 'Skywalker', state: 'CA' }
]
Run Code Online (Sandbox Code Playgroud)
并且您希望使用coffeescript按姓氏排序,您可以这样做:
users.sort (a,b) ->
return if a.lname.toUpperCase() >= b.lname.toUpperCase() then 1 else -1
Run Code Online (Sandbox Code Playgroud)
我尝试使用这样的函数:
sortBy = (field, reverse, primer) ->
key = (x) ->
return if primer? then primer x[field] else x[field]
return (a,b) ->
A = key a
B = key b
return (A …Run Code Online (Sandbox Code Playgroud) 是否有快速(简短,明智的)方式来获取数组的最后一个元素(假设数组是非空的)?
我经常这样做:
last = array[array.length-1] 要么 last = array[-1..][0]
在Python中,可以使用'pass'语句来做任何事情:
if true:
pass
Run Code Online (Sandbox Code Playgroud)
coffeescript中有类似的陈述吗?我正在尝试执行switch语句,如果满足某些条件则不执行任何操作.
switch variable:
when 5 then pass
else do variable
Run Code Online (Sandbox Code Playgroud) 数据:
nvd3TestData = [
{
values:[
{x:"M",y:1},
{x:"T",y:2},
{x:"W",y:3},
{x:"R",y:3},
{x:"F",y:4},
{x:"S",y:5},
{x:"U",y:6}
],
key:"Apples"
},
{
values:[
{x:"M",y:5},
{x:"T",y:2},
{x:"W",y:6},
{x:"R",y:8},
{x:"F",y:2},
{x:"S",y:4},
{x:"U",y:1}
],
key:"Zebras"
}
]
Run Code Online (Sandbox Code Playgroud)
创建图表(从angularjs指令中提取):
nv.addGraph - > chart = nv.models.multiBarChart().stacked(true).showControls(false)
chart.xAxis
.axisLabel(attrs.xAxisLabel)
chart.yAxis
.axisLabel(attrs.yAxisLabel)
.tickFormat(d3.format(',r'))
console.log element
d3.select(element[0].children[0])
.datum(nvd3TestData)
.call(chart)
nv.utils.windowResize(chart.update)
Run Code Online (Sandbox Code Playgroud)
输出:

预期输出将包含所有7个标签:MTWRFSU
我似乎无法使用setTimeout()来调用我自己的函数之一.我可以使用setTimeout来调用alert(),但不能使用我自己编写的函数.这是重现问题的最简单的代码:
我有以下coffeeScript
setTimeout(run, 1000)
run = () ->
console.log("run was called!")
Run Code Online (Sandbox Code Playgroud)
这会生成以下Javascript
// Generated by CoffeeScript 1.6.3
(function() {
var run;
setTimeout(run, 1000);
run = function() {
return console.log("run was called!");
};
}).call(this);
Run Code Online (Sandbox Code Playgroud)
控制台上没有任何内容.
我知道你可以在Chrome开发者工具的Source面板中实时编辑JS,我知道有用于实时重新加载CSS的系统,但是你可以从源位置(URL或本地磁盘,重新加载JS)或以某种方式利用工作区,甚至可能作为Chrome开发者工具插件)?特别是这对于CoffeeScript-to-JS设置非常有用.
尝试使用socket.io-client连接到用Go编写的websocket服务器.我已经使用节点WebSocket库(npm)成功连接.所以工作的Websocket代码如下所示:
goSocketPort = 6060
url = "ws://localhost:#{goSocketPort}/streamresults/"
ws = new WebSocket(url)
ws.on('open', ->
log "socket opened"
)
ws.on('message', (message) ->
console.log('received: %s', message)
#log "Socket message: #{JSON.stringify message}"
)
Run Code Online (Sandbox Code Playgroud)
非常简单且有效 - 另一端的套接字以固定频率发送消息.但我最初尝试socket.io-client(npm)并且无法让它去.它肯定会将websocket列为首选的传输方式,但该死的如果我可以连接它:
socket = ioClient.connect("#{url}", {port: goSocketPort, transports: ['xhr-polling', 'websocket']})
socket.on("connect", (r) ->
log "connected to #{url}"
)
Run Code Online (Sandbox Code Playgroud)
连接永远不会发生,因此没有任何on事件被触发,代码立即退出.我已经尝试过:将端口从网址中删除并将其添加到选项中,不使用传输选项(根据文档意味着"全部")并使用http网址.是socket-io.client不是能够连接到一个"标准"的WebSocket的?
coffeescript ×10
arrays ×2
node.js ×2
ajax ×1
angularjs ×1
backbone.js ×1
d3.js ×1
express ×1
javascript ×1
jquery ×1
livereload ×1
nvd3.js ×1
socket.io ×1
sorting ×1
syntax ×1
websocket ×1