【问题标题】:Auto-formatting of JavaScript code in EclipseEclipse 中 JavaScript 代码的自动格式化
【发布时间】:2014-02-05 08:23:08
【问题描述】:

考虑这段 JavaScript 代码的格式:

$("#dataTable").jqGrid({
    url: base + "products-all",
    datatype: "json",
    jsonReader: {repeatitems: false, id: "ref"},
    colNames:["ID","Product name","Price"],
    colModel:[
        {name:"id",index:"id", width:40, align:"right", classes:"grid-col"},
        {name:"name",index:"name", width:600, align:"left", classes:"grid-col", editable:true, editoptions:{size:25}},
        {name:"price",index:"price", width:100, align:"right", classes:"grid-col", formatter:'currency', formatoptions:{decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "$ "}}
    ],
    rowNum:5,
    rowList:[5,10,20],
    height:114,
    shrinkToFit: true,
    sortname: 'id',
    sortorder: "asc",
    pager: "#pagingDiv",
    viewrecords: true,
    caption: "Products"
});

我应该如何在 Eclipse 中配置 JavaScript 格式化程序(即,Preferences > JavaScript > Code Style > Formatter)以确保此代码在自动格式化后看起来可以接受(SHIFT kbd> + CTRL + F) 被应用到了吗?我可以让 Eclipse 将 JSON 对象的每个字段放在一个新行上,但结果会看起来很乱。我还可以禁用在每个字段后插入换行符,然后整个对象将在一行中。

是否可以禁用 JSON 对象内的任何换行符的插入/删除?如果不可能,我应该如何处理这段代码的自动格式化?

我还有一个例子:

jQuery("#dataTable").jqGrid(
    'navGrid',
    '#pagingDiv',
    {}, 
    {reloadAfterSubmit:false},
    {reloadAfterSubmit:false},
    {reloadAfterSubmit:false},
    {sopt:['cn','bw','eq','ne','lt','gt','ew']}
);

这是一个方法调用。通常,所有方法参数都应该在同一行。但在这里我希望每个论点都在一个新的行上。如何使此代码通过自动格式化?

更新:

我使用 Eclipse Kepler for Java EE 开发人员。我认为我的 JavaScript 编辑器是 JavaScript Development Tools 插件的一部分,而该插件又是 Eclipse Web Developer Tools 包的一部分。

【问题讨论】:

  • 我认为很难根据自己的喜好来区分每条规则。我启用格式化程序标志(与@Keyur 描述相同的位置)并将 //@formatter:off 放在 json 之前的行上。
  • @cox 我用我的 Eclipse 安装的详细信息更新了我的问题。我的 //@formatter:off 功能仅适用于 Java 代码。我可以为 JavaScript 获得此功能的唯一方法是安装 Aptana Studio plugin 并使用它自己的 JavaScript 编辑器。但是 Aptana Studio 是一个比较重的东西,如果可以的话,我想避免使用它。我很好奇,你使用 Aptana Studio 插件吗?如果没有,你的 Eclipse 中安装了什么 JavaScript 编辑器插件?
  • 对不起!我使用 Eclipse、Aptana(独立)和 LiClipse(试用/重试...)。那是来自 Aptana,它们看起来一样!
  • @cox 谢谢!无论如何,您的评论很有帮助。
  • 现在有 Eclipse Wild Web Developer:projects.eclipse.org/proposals/eclipse-wild-web-developer

标签: javascript eclipse


【解决方案1】:

如果你不想每次都按SHIFT + CTRL + F 那么你只需要去Preferences -> Javascript -> Editor ->Save Actions 然后选中“格式化源代码”复选框。

【讨论】:

    【解决方案2】:

    这个问题是没有希望的,因为即使是 jQuery 也不会被正确验证/格式化!

    Eclipse 中的 JavaScript 插件在几年前就充满了 bug 和邪恶。

    由于浏览器的不可估量,它永远不会改变(即,有些需要;,有些不需要,有些有 JSON-Notation,有些不需要)!我投票赞成从 Eclipse 中删除 javascript 以清理 Eclipse。

    【讨论】:

    • 我每天都用它,但你是如此真实。我们可能会完全删除 eclipse 本身以保持其清洁。
    • @DamienMIRAS 哈哈哈。经过多年的 Eclipse 后,我转向了 IntelliJ
    • 我稍后再试一试!
    • @LppEdd 您无需尝试。我有这个截图:i.stack.imgur.com/zQyN6.png.
    • @PeterRader Nah 他们通常非常专业。我认为这是一个错误,应该修复。为什么我不应该举报?我的意思是,这是一个相对简单的修复,我想我可以在公共 GitHub 存储库中完成。
    【解决方案3】:

    这些选项在 Eclipse Preferences 中。

    要达到它,请按照此操作。

    窗口菜单 >> 首选项 >> Web >> JavaScript >> 格式化程序强>

    这将为您提供 Javascript 的活动格式配置文件。

    选择您要更改的配置文件并对其进行编辑或创建新的配置文件。 这将为您提供一个新窗口,该窗口将为您提供定义代码格式样式所需的所有选项。

    您也可以对 HTML、Java 和其他代码执行相同的操作。

    【讨论】:

    • Keyur,感谢您的回复,但我知道选项的位置。我和他们一起玩,但我无法让我的代码片段看起来可以接受。
    • 您想更改整个 javascript 的自动格式设置,还是只是以不同的方式自动设置片段的格式?
    • 我想更改整个 JavaScript 的自动格式。我想设置一次,然后让它为我格式化代码。
    • 所以你基本上不想每次都按SHIFT + CTRL + F
    • 感谢您的提示。如果找不到完全自动化的解决方案,我会这样做。
    【解决方案4】:

    对于 Eclipse 中的 Java(不是 JavaScript)代码格式化程序,类似的问题有一个答案 here。两个最受欢迎的答案建议使用// @formatter:off 标签和Never join already wrapped lines 选项。不幸的是,这些功能在 Eclipse 的默认 JavaScript 编辑器中都不可用(我认为,它是 JavaScript 开发工具 / Eclipse Web 开发工具 的一部分)。

    一种可能的解决方法是安装 Aptana Studio plugin 并改用其 JavaScript 编辑器。此编辑器具有// @formatter:off 功能(有关详细信息,请参阅here)。我还没有找到类似Never join already wrapped lines 选项的东西。 Aptana Studio 是一个具有很多功能的插件,仅仅为了获得一个新的 JavaScript 编辑器而安装它可能并不实用。 Aptana Studio 允许您编辑 JavaScript 文件,但如果您在 JSP 文件中嵌入了任何 JavaScript 代码,它将无济于事。

    另一种可能的解决方法是有选择地使用代码格式化:您可以选择一个代码块并按 SHIFT + CTRL + F 来格式化它仅限特定区块。

    如果您正在阅读这篇文章,那么您很可能在 JavaScript 代码格式方面遇到了另一个问题:当启用自动换行时,Eclipse 会弄乱 JavaScript 代码。可以通过在Maximum line width 字段中输入一个大数字来禁用它,如this answer 中所述。

    【讨论】:

    • 有人在 Aptana Studio 中使用过 JavaScript 吗?或者有任何问题需要报告?谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-03-17
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 2012-03-16
    • 2012-03-13
    相关资源
    最近更新 更多