Coffeescript看起来很酷.有人用过吗?它的优点和缺点是什么?
在javascript中检查变量是否从未创建过,我们就这么做了
if (typeof MyVariable !== "undefined"){ ... }
Run Code Online (Sandbox Code Playgroud)
我很想知道我是如何在coffeescript中做到的?...我尝试了类似的东西
if (MyVariable?false){ ... }
Run Code Online (Sandbox Code Playgroud)
但是这检查if是否MyVariable是一个函数,如果是这样,将调用MyVariable(false),如果不是,那将调用void(0)或类似的东西.
如何在coffeescript中写这个?
f = (function(){
// something
})();
Run Code Online (Sandbox Code Playgroud)
谢谢你的任何提示:)
我有这个代码检查空字符串或空字符串.它正在测试中.
eitherStringEmpty= (email, password) ->
emailEmpty = not email? or email is ''
passwordEmpty = not password? or password is ''
eitherEmpty = emailEmpty || passwordEmpty
test1 = eitherStringEmpty "A", "B" # expect false
test2 = eitherStringEmpty "", "b" # expect true
test3 = eitherStringEmpty "", "" # expect true
alert "test1: #{test1} test2: #{test2} test3: #{test3}"
Run Code Online (Sandbox Code Playgroud)
我想知道的是,还有更好的方法not email? or email is ''.我可以通过string.IsNullOrEmpty(arg)一次调用在CoffeeScript中完成相当于C#的操作吗?我总是可以为它定义一个函数(就像我一样),但我想知道是否有一些我缺少的语言.
我想在coffeescript中编写一个静态帮助器类.这可能吗?
类:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
Run Code Online (Sandbox Code Playgroud)
使用:
Box2DUtility.drawWorld(w,c);
Run Code Online (Sandbox Code Playgroud) 我已经使用ui-router实现了angularjs单页面应用程序.
最初我使用一个不同的URL来识别每个州,但这是为了不友好的GUID打包网址.
所以我现在将我的网站定义为一个更简单的状态机.状态不是由URL标识的,而是根据需要简单地转换为,如下所示:
定义嵌套状态
angular
.module 'app', ['ui.router']
.config ($stateProvider) ->
$stateProvider
.state 'main',
templateUrl: 'main.html'
controller: 'mainCtrl'
params: ['locationId']
.state 'folder',
templateUrl: 'folder.html'
parent: 'main'
controller: 'folderCtrl'
resolve:
folder:(apiService) -> apiService.get '#base/folder/#locationId'
Run Code Online (Sandbox Code Playgroud)
过渡到定义的国家
#The ui-sref attrib transitions to the 'folder' state
a(ui-sref="folder({locationId:'{{folder.Id}}'})")
| {{ folder.Name }}
Run Code Online (Sandbox Code Playgroud)
这个系统工作得很好,我喜欢它干净的语法.但是,由于我没有使用URL,后退按钮不起作用.
如何保持我的整洁的ui-router状态机,但启用后退按钮功能?
有人知道如何在CoffeeScript中创建私有的,非静态的成员吗?目前我正在这样做,它只是使用以下划线开头的公共变量来澄清它不应该在类之外使用:
class Thing extends EventEmitter
constructor: (@_name) ->
getName: -> @_name
Run Code Online (Sandbox Code Playgroud)
将变量放在类中使它成为静态成员,但是如何将其设置为非静态?甚至可能没有"花哨"?
我正在尝试使用react创建一个简单的表单,但是在数据正确绑定到表单的defaultValue时遇到困难.
我正在寻找的行为是这样的:
但是,现在,我发现每次刷新页面时Text输入字段都是空白的.(虽然我在输入中键入的内容确实保存并保持不变.)我认为这是因为输入文本字段的html在AwayMessage为空对象时加载,但在farMessage加载时不刷新.此外,我无法为该字段指定默认值.
为清晰起见,我删除了一些代码(即onToggleChange)
window.Pages ||= {}
Pages.AwayMessages = React.createClass
getInitialState: ->
App.API.fetchAwayMessage (data) =>
@setState awayMessage:data.away_message
{awayMessage: {}}
onTextChange: (event) ->
console.log "VALUE", event.target.value
onSubmit: (e) ->
window.a = @
e.preventDefault()
awayMessage = {}
awayMessage["master_toggle"]=@refs["master_toggle"].getDOMNode().checked
console.log "value of text", @refs["text"].getDOMNode().value
awayMessage["text"]=@refs["text"].getDOMNode().value
@awayMessage(awayMessage)
awayMessage: (awayMessage)->
console.log "I'm saving", awayMessage
App.API.saveAwayMessage awayMessage, (data) =>
if data.status == 'ok'
App.modal.closeModal()
notificationActions.notify("Away Message saved.")
@setState awayMessage:awayMessage
render: ->
console.log "AWAY_MESSAGE", this.state.awayMessage
awayMessageText = if this.state.awayMessage then this.state.awayMessage.text else "Placeholder Text"
`<div …Run Code Online (Sandbox Code Playgroud) javascript forms 2-way-object-databinding coffeescript reactjs
昨天我做了一个深夜编码会话并创建了一个小node.js/JS(实际上是CoffeeScript,但CoffeeScript只是JavaScript,所以我们说JS)应用程序.
目标是什么:
第1步完成.
服务器现在有一个字符串a la
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt...
Run Code Online (Sandbox Code Playgroud)
我的问题是:我将接下来的步骤"流"/上传到Amazon S3并在那里创建实际图像是什么?
knox https://github.com/LearnBoost/knox似乎是一个很棒的库,可以将东西输入S3,但我缺少的是base64-encoded-image-string和实际上传动作之间的粘合剂?
任何想法,指示和反馈欢迎.
我注意到在CoffeeScript中,如果我使用以下方法定义函数:
a = (c) -> c=1
Run Code Online (Sandbox Code Playgroud)
我只能得到函数表达式:
var a;
a = function(c) {
return c = 1;
};
Run Code Online (Sandbox Code Playgroud)
但是,我个人经常使用函数声明,例如:
function a(c) {
return c = 1;
}
Run Code Online (Sandbox Code Playgroud)
我确实使用了第一种形式,但我想知道CoffeeScript中是否有一种生成函数声明的方法.如果没有这种方式,我想知道为什么CoffeeScript会避免这样做.我不认为JSLint会声明声明的错误,只要函数声明在作用域的顶部.
coffeescript ×10
javascript ×6
amazon-s3 ×1
angularjs ×1
forms ×1
jslint ×1
node.js ×1
oop ×1
reactjs ×1
undefined ×1