有没有人知道Mac的一个好的文本编辑器,支持CoffeeScript中的语法高亮?是否可以在TextWrangler或BBEdit中执行此操作?
干杯:)
在Rails 3.1下,我试图找出如何将一些coffeescript类从我的控制器默认coffeescript文件(home.js.coffee)移到另一个文件中,以便整体构建一下.
有谁知道如何将coffeescript文件"包含"到另一个?
在我们的rails rfq.js.coffee中,我们只有一个简单的js代码:
$(function() {
$('#need_report').change(function(){
if ($(this).val() == true) {
$('#report_language').hide();
} // end if
}); // end change()
}); // end ready(function)
Run Code Online (Sandbox Code Playgroud)
但是,此代码会导致错误,指出第一行中的function()是保留字.由于第一行基本上是一个jquery $(document).ready(function () {}),我们不知道为什么会出现这个错误.有什么想法吗?非常感谢.
当我创建一个新的coffeescript文件时,我无法从另一个文件中访问已编译代码中的代码,因为它包含在某个函数范围内.例如:
CoffeeScript的:
class ChatService
constructor: (@io) ->
Run Code Online (Sandbox Code Playgroud)
生成的Javascript:
(function() {
var ChatService;
ChatService = (function() {
function ChatService(io) {
this.io = io;
}
return ChatService;
})();
}).call(this);
Run Code Online (Sandbox Code Playgroud)
当试图调用ChatService另一个文件时,它没有定义.如何使用coffeescript处理多个文件?
我们正在使用CoffeeScript编写的特定jQuery 插件,我希望我可以将项目转换为一些看起来很正常的JavaScript.该库看起来结构非常好(良好的OOP实践),但我真的很喜欢它,如果我可以探索它的源代码而不必学习CoffeeScript所需的所有技巧.
我有以下代码:
class Animal
constructor: (@name) ->
say: () -> console.log "Hello from animal called #{ @name }"
class Dog extends Animal
say: () ->
super.say()
console.log "Hello from dog called #{ @name }"
a = new Animal('Bobby')
a.say()
d = new Dog("Duffy")
d.say()
Run Code Online (Sandbox Code Playgroud)
结果不是
Hello from animal called Bobby
Hello from animal called Duffy
Hello from dog called Duffy
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Hello from animal called Bobby
Hello from animal called Duffy
Uncaught TypeError: Cannot call method 'say' of undefined
Run Code Online (Sandbox Code Playgroud)
为什么超级未定义?如何调用父方法以扩展它?谢谢
在过去的六个月里,我一直在使用Backbone.前两个月一直在搞乱,学习并弄清楚我想如何构建我的代码.接下来的4个月正在掀起一场适合生产的应用.不要误会我的意思,Backbone已经把我从以前成为标准的数千行的客户端代码中解救出来,但它使我能够在更短的时间内完成更多宏伟的事情,从而打开一堆全新的问题.对于我在这里提出的所有问题,有简单的解决方案,感觉像黑客或只是感觉不对.我保证获得300点奖励以获得一个很棒的解决方案.开始:
我们使用这个小代码来模仿加载事件:
window.old_sync = Backbone.sync
# Add a loading event to backbone.sync
Backbone.sync = (method, model, options) ->
old_sync(method, model, options)
model.trigger("loading")
Run Code Online (Sandbox Code Playgroud)
大.它按预期工作,但感觉不正确.我们将此事件绑定到所有相关视图并显示加载图标,直到我们从该模型收到成功或错误事件.有更好,更健全的方式吗?
现在为艰难的:
这是另一个例子:您想在集合中创建一个新项目.按"新建"按钮,即可开始填写表格.您是否立即将该项目添加到集合中?但如果您决定丢弃它会发生什么?或者如果您将整个集合保存在另一个选项卡上?并且,有一个文件上传 - 您需要先保存并同步模型,然后才能开始上传文件(这样您就可以将文件附加到模型中).所以一切都开始渲染震动:你保存模型和列表,表格再次渲染自己 - 它现在已同步,所以你得到一个新的删除按钮,它显示在列表中 - 但现在文件上传完成上传,所以一切再次开始渲染.
添加子视图到混合,一切开始看起来像费里尼电影.
它的子视图一直向下 - 这是关于这些东西的好文章.我不能,因为对所有神圣事物的热爱,找到一种将jQuery插件或DOM事件附加到具有子视图的任何视图的正确方法.地狱随之而来.工具提示会听到渲染很长时间并且开始变得怪异,子视图变得像僵尸一样或者没有响应.这是主要的痛点,因为这里有实际的错误,但我仍然没有一个全面的解决方案.
闪烁 - 渲染速度很快.事实上,它是如此之快,我的屏幕看起来像是癫痫发作.有时它的图像必须再次加载(使用另一个服务器调用!),因此html最小化然后再次最大化 - 该元素的css宽度+高度将解决这个问题.有时候我们可以用fadeIn和fadeOut来解决这个问题 - 这是写作屁股的痛苦,因为有时我们会重复使用视图,有时会重新创建它.
TL; DR - 我在Backbone中遇到了查看和子视图的问题 - 渲染次数太多,渲染时会闪烁,子视图会分离我的DOM事件并吃掉我的大脑.
谢谢!
更多细节:BackboneJS与Ruby on Rails Gem.使用UnderscoreJS模板的模板.
Hubot是Github的聊天室机器人.这是一个很棒的工具,除了我们公司没有人想写Coffeescript ....但似乎我们不能用普通的旧Javascript编写Hubot的脚本.
这是真的?这里有什么我想念的吗?Coffeescript是"只是javascript",但我不能使用Javascript吗?
编辑
我做了2个荒谬简单的错误:
- 我将CoffeeScript注释语法复制到我的JS文件中
- 我在hubot-scripts node_module下有脚本,而不是在主项目的/ scripts /目录下.
现在工作得很好.
我在使用webpack而不是Codekit v1.9.3时遇到了麻烦.我开始努力从CodeKit转移到Grunt和Gulp,然后了解webpack哪些听起来非常酷.我似乎无法让它正常工作.
javascript用coffeescript语法写bootstrap-sass根据需要选择性地包括(scss)框架的组件$brand-primarywebpack --watch在更改脚本和样式时自动编译它们凉亭资源:
我目前正在全球范围内存储这些项目:
~/bower_components/twbs-bootstrap-sass/vendor/assets/stylesheets
Run Code Online (Sandbox Code Playgroud)
因为CodeKit支持指南针,我在我的config.rb文件中有这个:
add_import_path "~/bower_components/twbs-bootstrap-sass/vendor/assets/stylesheets"
Run Code Online (Sandbox Code Playgroud)
项目结构
js/fancybox.js
js/main.js <-- currently the compiled js 'output' file
js/main.coffee
css/styles.css <-- currently the compiled css 'output' file
scss/styles.scss
scss/modules/_bootstrap-customizations.scss
scss/modules/_typography.scss
scss/partials/_header.scss
scss/partials/_footer.scss
Run Code Online (Sandbox Code Playgroud)
styles.scss的内容
@import "modules/bootstrap-customizations"; # local customizations
@import "bootstrap/variables";
@import "bootstrap/mixins";
... # load bootstrap files as required
@import "bootstrap/wells";
Run Code Online (Sandbox Code Playgroud)
我Cannot call 'start' of undefined打电话时得到......
Backbone.history.start()
Run Code Online (Sandbox Code Playgroud)
运行一些检查时,Backbone返回对象,但Backbone.history返回undefined.
可能是什么原因造成的?
谢谢
coffeescript ×10
javascript ×6
backbone.js ×2
jquery ×2
node.js ×2
npm ×2
hubot ×1
json ×1
macos ×1
sass ×1
webpack ×1