我想使用"javascript派生语言"来学习和使用今天的一些常用Web技术,如node.js,jquery等.
在用功能概念和语言(主要是F#)玩弄一段时间后,我在寻找Javascript世界中是否有类似的东西.到目前为止,我发现并考虑的是:
在考虑了所有这些之后,我没有真正的结论,所以如果人们习惯使用javascript,CoffeeScript等可以指导我关注这个问题的真正重要性,那就太棒了.
以防万一......我还没有真正考虑使用Pit(因此继续使用F#),因为虽然它编译为javascript,但我认为它没有与上面的任何javascript库集成,并且不遵循相同的工作流程或与javascript生态系统以及列出的选项集成.
非常感谢!
我已经使用LiveScript很长一段时间了,我注意到在undefined隐式返回的情况下,使用表达式void 8代替.
当然,我理解使用void,但我无法弄清楚为什么特别使用整数8.
例如,以下LiveScript:
x = if truthy then \success!
Run Code Online (Sandbox Code Playgroud)
将编译为:
var x;
x = truthy ? 'success!' : void 8;
Run Code Online (Sandbox Code Playgroud) 更新
这肯定与我如何重新缩放画布有关.如果我将相同的场景绘制到画布上并且我不改变它的宽度和高度以填充屏幕,它可以完美地工作.

为全屏环境调整画布大小的正确方法是什么?
我正在编写一个用于画布的游戏引擎,并且我遇到了图像被放大和混淆的问题,我通过几个答案为有类似问题的人阅读.我修改了我的代码,以便在我的每个画布上启用以下设置.
context.webkitImageSmoothingEnabled = false;
context.mozImageSmoothingEnabled = false;
context.imageSmoothingEnabled = false;
Run Code Online (Sandbox Code Playgroud)
为了确保,我还包括了这些规则的CSS替代方案.
canvas {
image-rendering: optimizeSpeed; // Older versions of FF
image-rendering: -moz-crisp-edges; // FF 6.0+
image-rendering: -webkit-optimize-contrast; // Webkit (non standard naming)
image-rendering: -o-crisp-edges; // OS X & Windows Opera (12.02+)
image-rendering: crisp-edges; // Possible future browsers.
-ms-interpolation-mode: nearest-neighbor; // IE (non standard naming)
}
Run Code Online (Sandbox Code Playgroud)
这是我试图绘制的原始图像之一的示例.

然后我从16x16升级到64x64,而不是看起来像使用最近邻插值,它呈现这样.

我在Chrome和Firefox中获得了相同的结果.我也不想做一个预处理步骤来升级图像.它必须是可能的,因为这个演示对我有用.
另外要提的是,引擎设计用于全屏,所以我手动保持画布的大小与此功能.
fill-screen = (canvas) ->
canvas.width = document.body.clientWidth
canvas.height = document.body.clientHeight
Run Code Online (Sandbox Code Playgroud)
画布绝对位于其父级的左上角,除此之外,没有非浏览器CSS规则对它们进行操作.
也许我正在做一些愚蠢的事情,但我已经看了好几年了,而且我已经没有接近了.我正在创建画布和上下文的文件的代码在这里:https://gist.github.com/code-curve/9273248
如何在另一个LS文件的LiveScript文件中使用代码?例如:
# In script-one.ls
foo = 5
# In script-two.ls
bar = -> foo + 3
Run Code Online (Sandbox Code Playgroud)
简单地通过script标签在HTML中包含这两个文件似乎不起作用.在第二个脚本中将第一个脚本更改为export foo = 5和使用require! './script-one'(或变体)也不起作用.
那循环依赖呢?
nums = [2 5 3 7]
result = []
result.push {x:nums[0]}
for n in nums.slice(1)
result.push {n:n + result[-1].x}
log result
# [{x:2} {x:7} {x:10} {x:17}]
Run Code Online (Sandbox Code Playgroud)
使用该函数很难在功能上表达,map因为每个元素都依赖于前一个元素.这个算法的正确功能解决方案是什么?
我有这个有效的CoffeeScript,并希望将其转换为LiveScript.有人可以解释为什么它无法转换?还要转换一个吗?
TodoCtrl = (scope) ->
scope.addTodo = ->
scope.todos.push
text: scope.todoText
done: false
scope.todoText = ''
Run Code Online (Sandbox Code Playgroud)
您可以使用它来编译CoffeeScript.
您可以使用它来编译LiveScript.
例如:
$.get('/path/to/api').then(
function(data) {
alert( "$.get succeeded" );
}, function(error) {
alert( "$.get failed!" );
}
);
Run Code Online (Sandbox Code Playgroud)
是否可以在两个回调中应用回调运算符?
如何在lifecript中写一个闭包
for i from 1 to 10
cb = -> console.log i
set-timeout cb, i*1000
Run Code Online (Sandbox Code Playgroud)
获得1到10而不是10倍10?