2016-09-16 2 views
0

Я собираюсь начать разработку только в Javascript, так как поддержка js Eclipse не так хороша, как и java, я сделал некоторый поиск и обнаружил, что VSCode, похоже, сейчас находится на переднем крае разработки javascript. Итак, я переношу с Eclipse на VSCode, никогда не любил Eclipse, но я просто эффективнее с этими двумя командами/горячими клавишами. Поэтому я привожу этот пример для тех, кто не знаком:Перенос из Eclipse в VSCode, что является альтернативой Open Implementation/References в рабочей области

foo.js

var foo = { 
    doSomething: function(){ 
     console.log("hello world"); 
    } 
} 

module.exports = foo; 

bar.js

var foo = require('./foo') 

foo.doSomething(); 

Если предположить, что это было в Eclipse, и это было Java вместо Javascript: так что, если я смотрю на bar.js, и я хотел бы знать, что должен сделать doSomething(), я бы нажал F3 (Open Implementation) на doSomething, и он пойдет прямо на его реализацию на foo .js.

Другая команда, ссылки в рабочей области была бы наоборот, если я нахожусь в foo.js, и я хочу знать, в каких местах doSomething() вызывается, я бы нажал Ctrl + Shift + G и в маленьком окне он будет показывать точную строку на bar.js (и любые другие файлы, использующие ее также). Кроме того, стоит отметить, что это был не просто простой поиск, он не показывал бы никакого файла, который вызывает doSomething, который не является doSomething, объявленным в foo.js.

Я заметил, что в VSCode есть ссылка «Найти все ссылки», но она применима только к тому же файлу. Существует также команда «Перейти к декларации», и она действительно полезна, но она применима только к тому же файлу. Если бы я был на bar.js, я мог бы выбрать foo на foo.doSomething(), использовать Go To Declaration, и он отправит меня в инструкцию require. Это полезно для больших файлов, но в конце концов я все еще придерживаюсь инструкции require, и я не могу быстро перейти к ее module.exports.

Итак, я знаю, что реализация этих функций в javascript намного сложнее, чем в java, из-за структур классов/типов и всего остального. Но это мои вопросы:

  • Есть ли способ достичь того, что я хочу изначально в VSCode? Может быть, есть команда, которую я пропускаю?

  • Есть ли какое-либо расширение, способное достичь этого. Некоторое время назад я помню попытку одного расширения, но он работал не очень хорошо (он использовался для сбоя/сбоя). Может быть, с помощью TypeScript/ES6 было бы проще работать с расширением?

  • Если нет точной альтернативы, что вы будете делать, чтобы справиться с этими проблемами? Как бы вы быстро перешли к объявлению функции, которое находится в другом файле? Имея в виду, что требуемый файл может быть lib на node_modules. И как бы вы нашли все места, на которые вызывается определенная функция, имея в виду, что может быть много других функций с тем же именем и во многих файлах вашего проекта.

Я ценю любую помощь и благодарю за чтение.

+0

Только один вопрос, вы пробовали https://github.com/angelozerr/typescript.java/wiki/Getting-Started? – Angelo

ответ

1

Чтобы включить эту поддержку для файлов, вам необходимо создать файл jsconfig.json.

процитировать docs:

JavaScript IntelliSense будет работать для отдельных файлов сразу. Если вы используете , используйте систему модулей CommonJS, которая используется Node.js, после чего вы сразу получаете IntelliSense через свои модули.

Есть еще два шага, чтобы настроить IntelliSense по всем файлов в вашем рабочем пространстве и внешних модулей:

Создать jsconfig.json файл для указания проекта JavaScript. Установите Файлы описания типа (типизации) для внешних библиотек.

Документация содержит больше информации о различных настройках, а просто создать файл с именем jsconfig.json в корневом каталоге проекта должно быть достаточно, чтобы начать:

{ 
    "compilerOptions": { 
     "target": "ES6" 
    }, 
    "exclude": [ 
     "node_modules" 
    ] 
} 

Если вы хотите получить больше информации в выработках javascript, который использует vscode, вы можете посмотреть документацию Salsa.

1

Есть ли способ достичь того, что я хочу изначально в VSCode? Может быть, есть команда, которую я пропускаю?

Да, я думаю, что вы хотите встроить. Попробуйте нажать F12 (Перейти к определению) с помощью курсора на символ, который вы ищете ... Иногда мне приходится дважды нажимать его для вещей import ed в TypeScript, но он работает хорошо для меня.

Это не похоже на jsconfig.json, оно работало для меня только с двумя файлами, которые вы упомянули в противном случае - пустой каталог. Я мог представить себе, однако, что неправильные настройки в файле конфигурации могут блокировать его.

Вы можете изменить привязки клавиш, если хотите использовать Предпочтения: Открытые комбинации клавиш. К сожалению, я думаю, что еще нет библиотеки ключей для эмуляции других IDE.