Eclipse - 支持使用require.js定义的大纲视图(...)

时间:2015-01-12 16:49:38

标签: javascript eclipse angularjs eclipse-plugin requirejs

我在define(...)内编写了大量代码,格式如下 -

define(['angular'], function(angular) {
        function foo () {
            console.log("Hi") ; 
        }
        function foo2 () {
            console.log("Hi") ; 
        }
        function foo3 () {
            console.log("Hi") ; 
        }
} )

Eclipse缺少此格式的所有outline view输出,意思是 - 什么都没有显示。

如何使它支持这种格式,意味着 - 指导我所有的函数和变量声明?

此处附上我当前的大纲视图 -

enter image description here

4 个答案:

答案 0 :(得分:8)

JSDT插件是JavaScript的默认Eclipse插件,不支持RequireJS。我建议你试试tern.java(我是tern.java的作者),它给出support for RequireJS。您将受益于RequireJS完成,超链接,悬停,验证。

我告诉你,你install AngularJS Eclipse 0.8.0(未发布)基于tern.java(因为它似乎你正在使用角度)。你将再次提出大纲问题(tern.java没有解决这个问题),但是不要犹豫create issues以改善tern.java。

答案 1 :(得分:1)

您可能还想试用Aptana Studio插件。他们的插件提供了许多不错的前端Web开发工具。

答案 2 :(得分:1)

免责声明,我是tern.java的作者。

我建议您install 1.0.0-SNAPSHOT提供Tern Explorer view。这是您的示例的屏幕截图:

Tern Explorer

答案 3 :(得分:1)

尝试在内部函数之前放置JsDoc“@memberOf”。
见下面的示例。您可以在“MyNameSpace”类下的大纲视图中看到“doValidation”和“put”函数。

有关JsDoc的更多信息,请查看http://kajabity.com/2012/02/how-i-introduced-jsdoc-into-a-javascript-project-and-found-my-eclipse-outline/

Snapshot from SuiteScript 2.0 RestLet. SuiteScript2.0 is integrated with RequireJS

此处的实际样本:

"use strict"; //Defines that JavaScript code should be executed in "strict mode
/**
 *@NApiVersion 2.x
 *@NScriptType Restlet
 */
define(
    [
            'N/record', 'N/error'
    ],

/**
 * @param {record} record 
 */
function(record, error)
{
    /**
     * @memberOf myNameSpace
     */
    function doValidation(args, argNames, methodName)
    {
        for (var i = 0; i < args.length; i++)
        {
            if (!args[i] && args[i] !== 0)
            {
                throw error.create(
                    {
                        name : 'MISSING_REQ_ARG',
                        message : 'Missing a required argument: [' + argNames[i] + '] for method: ' + methodName
                    });
            }
        }
    }
    // Upsert a NetSuite record from request param
    /**
     * @memberOf myNameSpace
     */
    function put(context)
    {
        doValidation(
            [
                    context.recordtype, context.id
            ],
            [
                    'recordtype', 'id'
            ], 'PUT');
        var rec = record.load(
            {
                type : context.recordtype,
                id : context.id
            });
        for ( var fldName in context)
            if (context.hasOwnProperty(fldName))
            {
                if (fldName !== 'recordtype' && fldName !== 'id')
                {
                    rec.setValue(fldName, context[fldName]);
                }
            }
        rec.save();
        return JSON.stringify(rec);
    }
    return (
        {
            post : post
        });
});