gpt4 book ai didi

javascript - Rails 4.1 中将 bug Coffeescript 渲染为 js?

转载 作者:行者123 更新时间:2023-12-03 12:38:21 25 4
gpt4 key购买 nike

我刚刚构建了一个普通的 RoR 4.1 应用程序,没有添加任何内容,来测试一些 CoffeeScript 代码。

这是 CoffeeScript 代码的开始

->
canvas
ctx
code
point
style
drag = null
dPoint
# define initial points
Init (quadratic) ->
point =
p1:
x: 100
y: 250

p2:
x: 400
y: 250

if quadratic
point.cp1 =
x: 250
y: 100
else
point.cp1 =
x: 150
y: 100

point.cp2 =
x: 350
y: 100

当通过 CoffeeScript 网站在 Javascript 中渲染时,它给了我这个,这似乎是正确的

(function() {
canvas;
ctx;
code;
var canvas, code, ctx, drag;
drag = null;
Init(function(quadratic) {
var point, style;
point = {
...

但是当我观看 Rails 生成的代码时,我看到了这一点(但没有任何作用)

(function() {
(function() {
canvas;
ctx;
code;
var canvas, code, ctx, drag;
drag = null;
dPoint;
Init(function(quadratic) {
.....

你知道发生了什么吗?为什么它被封装在另一个函数中?

您需要更多代码吗?

最诚挚的问候

最佳答案

Rails 在编译时将任何 CoffeeScript 包装在匿名函数中,因此这实际上是有效的。

即使是像这样简单的事情:

x = 1

在coffeescript中,被编译为:

(function() {
var x;
x = 1;
}).call(this);

在 Rails JavaScript 中。因此,为什么您的示例会编译为匿名函数中的匿名函数。这是执行此操作的链轮代码:

https://github.com/sstephenson/sprockets/blob/master/lib/sprockets/jst_processor.rb

可以使用全局变量来解决这个问题,但我不建议这样做,而是尝试创建一个模块系统。

关于javascript - Rails 4.1 中将 bug Coffeescript 渲染为 js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23630126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com