- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以HAML 4 includes a coffeescript filter,它使我们喜欢咖啡的人可以做这样的整洁的事情:
- word = "Awesome."
:coffeescript
$ ->
alert "No semicolons! #{word}"
:javascript
过滤器慢?使用coffeescript过滤器是否意味着会在每次页面加载时将coffeescript编译为javascript(这显然会导致性能下降),还是仅在启动应用程序时才发生一次?
最佳答案
这取决于。
Haml编译过滤器时,它将检查过滤器文本是否为contains any interpolation(#{...}
)。如果没有,则将在每个请求上转换相同的文本,因此转换在编译时执行一次,结果包含在模板中。
如果过滤器文本中存在插值,则要转换的实际文本将根据每个请求而有所不同,因此,每次都需要编译Coffeescript。
这是一个例子。首先没有插值:
:coffeescript
$ ->
alert "No semicolons! Awesome"
haml -d
查看生成的Ruby代码):
_hamlout.buffer << "<script>\n (function() {\n $(function() {\n return alert(\"No semicolons! Awesome\");\n });\n \n }).call(this);\n</script>\n";
- word = "Awesome."
:coffeescript
$ ->
alert "No semicolons! #{word}"
word = "Awesome."
_hamlout.buffer << "#{
find_and_preserve(Haml::Filters::Coffee.render_with_options(
"$ ->
alert \"No semicolons! #{word}\"\n", _hamlout.options))
}\n";
:coffeescript
过滤器内不进行任何插值来避免在每个请求上编译Coffeescript。
:javascript
过滤器的行为类似,检查是否存在插值,但是由于
:javascript
过滤器在运行时仅将一些文本输出到缓冲区,因此使用它对性能的影响要小得多。您可以结合使用
:javascript
和
:coffeescript
过滤器,将插值数据放入
:javascript
中,并使
:coffeescript
保持静态:
- word = "Awesome"
:javascript
var message = "No semicolons! #{word}";
:coffeescript
alert message
关于ruby-on-rails - 使用:coffescript filter inside HAML templates?对性能的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17560864/
我喜欢使用 http://jsfiddle.net/ 用于测试,当我从一些教程中学习 coffeescript 时。我想注释掉多行。所以我点击我的 Mac cmd + / ,在大多数编辑器中,与注释掉
我在coffescript中有两个方法,它们看起来像这样: amount_calculation_when_unit_price_change = (parent) -> $(".unit_p
所以我有两个 Controller ,hotels和 videos .我想要 hotels.js.coffee能够访问在 videos.js.coffee 中创建的函数但我收到“未定义”错误。 我是
我试图递归地解析一个对象,但不知道下一个元素是字符串还是下一个嵌套对象。我正在考虑通过查看值的类型来做到这一点;它将是一个字符串或一个对象。但奇怪的事情正在发生...... 这段 Coffescrip
我认为 Karma CoffeeScript 代码覆盖率预处理器可能有问题。或者我不确定我做错了什么!所以我来找你 StackOverflow。基本上,我正在尝试设置 karma 测试套件,以 lco
首先,我知道我应该使用 javascript 而不是 coffeescript,但我只是在调整其他人的代码以查看是否可行。但是,我认为这并不重要......所以问题是,我如何获取日期的详细信息并可能在
我在 test.js 中有以下 Coffeescript yo () -> console.log("yo") 当通过 coffee -o public/javascripts/-cw public/
当我传递带有粗箭头的匿名函数作为 socket.io 回调,然后调用同一对象中的另一个方法时(如下所示),@ 的范围是正确的: module.exports = class InviteCreateS
这里有什么方法可以在不转换为 js 或 coffee 命令的情况下如何在 Nodejs 中执行 Coffescript 脚本。 可以即时翻译 coffeesctipts 的东西, Node 将如何请求
我在位于 Assets 管道的 CoffeScript 文件上尝试类似的操作。 但是我得到以下错误 throw Error("NoMethodError: undefined method `ren
我正在尝试使用 vim-coffee-script 插件 https://github.com/kchmck/vim-coffee-script但它没有将测试文件检测为 CoffeeScript 文件
我正在尝试创建动态 channel 供用户聊天,但无法将 room_id 传递到 App.cable.subscriptions.create 调用中在 room.coffee 文件中。任何有助于澄清
我是 CoffeeScript 的新手,对此非常兴奋。我做了一些基本循环 here .现在,CoffeeScript 正在为 every 循环定义一个循环变量,如下所示: var food, _i,
我有一个 HighCharts javascript,我正在尝试使用一些在线转换器将其转换为 CoffeeScript。 然而,它们都因“缺少操作数”而出错 这是代码 $(function() {
这段 JavaScript 代码工作正常。 function goToByScroll(id){ $('html,body').animate({scrollTop: $("#"+id)
我们在项目中使用 JavaScript(一种 DSL),并使用 Java Scripting API 运行它。 。 CoffeScript 看起来比 JS 好得多,所以我们想要它。 由于没有用于 Ja
我有以下项目结构 assets --javascripts ----controllers ------somefile.js ------somefile.js.coffee 我想编译 coffes
我正在expressJS中创建一个API,并且我想在每次文件更改时重新加载服务器 我试过了 gulp.task('server', function () { // Start the server
在 Ruby 中,我可以这样做: hash = ['foo', 'bar'].each_with_object({}) { |i, h| h[i] = 0 } 我如何在 CoffeeScript 中做
所以HAML 4 includes a coffeescript filter,它使我们喜欢咖啡的人可以做这样的整洁的事情: - word = "Awesome." :coffeescript $
我是一名优秀的程序员,十分优秀!