gpt4 book ai didi

Javascript - 分解具有多次重复js block 的代码

转载 作者:行者123 更新时间:2023-11-30 16:28:33 26 4
gpt4 key购买 nike

我有一个非常基本的 javascript 代码,但我多次重复相同的代码块作为旁注,我使用 ruby​​ 作为后端代码。

如何在我的文件 example.js 中分解它

<% if x= 0 %>
var msg;
msg = Messenger().post({

<% if y = 2 %>
message: 'example',
type: 'error',
hideAfter: 3000
<% elsif y = 3 and z =5%>
message: 'example',
type: 'error',
hideAfter: 3000
<% else %>
message: 'different'
type: 'different'

<% elsif y>2 and y < 7 %>
<% if y = 2 %>
message: 'example',
type: 'error',
hideAfter: 3000
<% elsif y = 3 and z =5%>
message: 'example',
type: 'error',
hideAfter: 3000
<% else %>
message: 'different'
type: 'different'

<% else %>
you're a cool dude
<% end %>

这只是一个例子,但我不知道如何用一个很短的属性简单地替换一大块代码并重新使用它

我认为这是不可能的,但这是我本着精神想做的:

CHUNK= 
message: 'example',
type: 'error',
hideAfter: 3000


<% if x= 0 %>
var msg;
msg = Messenger().post({

<% if y = 2 %>
CHUNK
<% elsif y = 3 and z =5%>
CHUNK
<% else %>
message: 'different'
type: 'different'

<% elsif y>2 and y < 7 %>
CHUNK
<% elsif y = 3 and z =7%>
soso
<% else %>
CHUNK

<% else %>
you're a cool dude
<% end %>

当你有类似的代码块像上面一样重复很多次时,是否可以分解代码。怎么样?

最佳答案

一切皆有可能。此外,删除代码重复通常是个好主意。 DRY 是 Rail 的基本原则之一。

但是,这里还有 2 个更严重的问题:

  1. 1个文件中有2种不同的语言
  2. 你的 View 逻辑过多

下面是我将如何修复#2。我更喜欢使用提前返回而不是嵌套的 if/else/elsif。此代码将放在一个单独的文件中,也许是一个 View 助手。

def message_for y, z
if y == 2
return { message: 'example',
type: 'error',
hideAfter: 3000 }
...

如果你让这个方法对你的 View 可用,你可以使用

<%= message_for y, z %>

话虽如此,您也可以重用chunk

<% @chunk = { message:  'example',
type: 'error',
hideAfter: 3000 } %>

关于Javascript - 分解具有多次重复js block 的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33722223/

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