在Eclipse中自动格式化JavaScript代码

时间:2014-01-16 12:19:46

标签: javascript eclipse

考虑此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 + 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 Developers 。我认为我的JavaScript编辑器是 JavaScript开发工具插件的一部分,而后者又是 Eclipse Web Developer Tools 包的一部分。

4 个答案:

答案 0 :(得分:8)

如果您不想每次都按SHIFT + CTRL + F,那么您只需要转到首选项 - > Javascript - >编辑器 - >保存操作 然后选中“格式化源代码”框。

答案 1 :(得分:7)

  

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

Eclipse中的JavaScript-Plugin几年后就出现了错误和邪恶。

它不会因为浏览器的无法控制而改变(即有些人需要;,有些人不需要,有些人有JSON-Notation,有些人不会这样做!我投票支持从Eclipse中删除javascript来清理Eclipse。

答案 2 :(得分:2)

这些选项位于Eclipse首选项中。

要达到它,请按照此说明。

窗口菜单>> 偏好>> 网络>> JavaScript >>的格式化

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

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

您也可以使用HTML,Java和其他代码执行相同操作。

答案 3 :(得分:2)

类似的问题对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中的解释。