{"id":72,"date":"2016-03-18T00:05:22","date_gmt":"2016-03-17T23:05:22","guid":{"rendered":"http:\/\/brozanski.net\/?p=72"},"modified":"2016-03-18T00:05:35","modified_gmt":"2016-03-17T23:05:35","slug":"node-js-tools-for-visual-studio-pomoc-dla-programisty-javascript","status":"publish","type":"post","link":"https:\/\/brozanski.net\/index.php\/2016\/03\/18\/node-js-tools-for-visual-studio-pomoc-dla-programisty-javascript\/","title":{"rendered":"Node.js Tools for Visual Studio &#8211; pomoc dla programisty JavaScript"},"content":{"rendered":"<p>Jak mogli\u015bcie przeczyta\u0107 wcze\u015bniej, zdecydowa\u0142em si\u0119 napisa\u0107 ca\u0142y sw\u00f3j projekt w JavaScript. Musia\u0142em wybra\u0107 do tego odpowiednie \u015brodowisko deweloperskie, kt\u00f3re pozwoli mi nie zajmowa\u0107 si\u0119 pierdo\u0142ami, a programowaniem.<br \/>\n<!--more--><\/p>\n<p>Od ponad 8 lat pracuj\u0119 z Visual Studio. Mia\u0142em jednak mieszane uczucia co do jego wykorzystania. Mo\u017ce dlatego, \u017ce ma\u0142o pisa\u0142em w JavaScript, a je\u015bli ju\u017c, to g\u0142\u00f3wnie strony internetowe, ale zawsze mia\u0142em jakie\u015b problemy, czy to z Intellisense, czy wyszukiwaniem b\u0142\u0119d\u00f3w w kodzie (testowaniem). Trzeba jednak przyzna\u0107, \u017ce nigdy nie chcia\u0142o mi si\u0119 jako\u015b specjalnie wej\u015b\u0107 w ten temat i raz na zawsze go rozwi\u0105za\u0107. Zwykle nie mia\u0142em te\u017c na to czasu, gdy\u017c terminy goni\u0142y, a produkt trzeba by\u0142o dostarczy\u0107. <\/p>\n<p>Pr\u00f3bowa\u0142em troch\u0119 innych narz\u0119dzi jak Sublime Text (w wersji 2 i 3), czy Atom, ale jednak nie przypad\u0142y mi do gustu. Przyzwyczajenie pozosta\u0142o i postanowi\u0142em by\u0107 wierny VS 2015. W ko\u0144cu postanowi\u0142em zaj\u0105\u0107 si\u0119 rozwi\u0105zaniem wszystkich problem\u00f3w, kt\u00f3re spotyka\u0142em wcze\u015bniej programuj\u0105c w JS w Visual Studio i zacz\u0105\u0142em szuka\u0107 jakiego\u015b wsparcia jakie mo\u017ce mi dawa\u0107 VS. Okaza\u0142o si\u0119, \u017ce takie narz\u0119dzie istnieje jako dodatek a nazywa sie <strong><em>Node.js Tools for Visual Studio<\/em><\/strong>. W skr\u00f3cie NTVS. <\/p>\n<p><strong><em>Pierwsze spotkanie&#8230;<\/em><\/strong><\/p>\n<p>Narz\u0119dzie jest dost\u0119pne dla wersji VS od 2012 do najnowszej. Nie zainstalujemy go w wersji VS Code, ale przecie\u017c nie ma takiej potrzeby, prawda? Dodatek mo\u017cna zainstalowa\u0107 poprzez managera rozszerze\u0144 (Extension Manager) lub \u015bci\u0105gaj\u0105c z galerii dodatk\u00f3w na portalu Visual Studio (<a href=\"http:\/\/aka.ms\/getntvs\" target=\"_blank\">tutaj<\/a>). Je\u015bli kto\u015b chcia\u0142by mie\u0107 naj\u015bwie\u017csz\u0105 wersj\u0119 mo\u017ce pobra\u0107 kod \u017ar\u00f3d\u0142owy z <a href=\"https:\/\/github.com\/Microsoft\/nodejstools\" target=\"_blank\">GitHub&#8217;a<\/a> i samemu skompilowa\u0107, gdy\u017c dodatek jest rozprowadzany jako oprogramowanie Open Source.<\/p>\n<p><strong><em>Mo\u017cliwo\u015bci&#8230;<\/em><\/strong><\/p>\n<p>NTVS jest na prawd\u0119 pot\u0119\u017cnym narz\u0119dziem umo\u017cliwiaj\u0105cym korzystanie z prawie wszystkich dobrodziejstw Visual Studio. Poni\u017cej postaram si\u0119 kr\u00f3tko przedstawi\u0107 mo\u017cliwo\u015bci:<\/p>\n<p><em>Nowe template&#8217;y<\/em><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/brozanski.net\/wp-content\/uploads\/2016\/03\/templates-e1458253353820.jpg\" alt=\"templates\" width=\"600\" height=\"323\" class=\"aligncenter size-full wp-image-82\" \/><br \/>\nWraz z dodatkiem dostajemy zestaw kilku nowych szablon\u00f3w, kt\u00f3re pozwalaj\u0105 zacz\u0105\u0107 programowanie w JS. Mamy szablony pustych aplikacji JS jak i aplikacji web. Niestety nie zauwa\u017cy\u0142em, aby by\u0142y tutaj dost\u0119pne szablony popularnych framework\u00f3w JS jak AngularJS.<\/p>\n<p><em>Integracja z NPM<\/em><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/brozanski.net\/wp-content\/uploads\/2016\/03\/npm.jpg\" alt=\"npm\" width=\"697\" height=\"379\" class=\"aligncenter size-full wp-image-81\" srcset=\"https:\/\/brozanski.net\/wp-content\/uploads\/2016\/03\/npm.jpg 697w, https:\/\/brozanski.net\/wp-content\/uploads\/2016\/03\/npm-300x163.jpg 300w, https:\/\/brozanski.net\/wp-content\/uploads\/2016\/03\/npm-660x359.jpg 660w\" sizes=\"auto, (max-width: 697px) 100vw, 697px\" \/><br \/>\nPrawie ka\u017cdy pracuj\u0105cy z JavaScript wie do czego s\u0142u\u017cy NPM. Zarz\u0105dzaniem pakietami w naszych projektach mo\u017cemy teraz robi\u0107 z poziomu specjalnego okienka lub z poziomu dedykowanego okna polece\u0144 Node.js. Troszk\u0119 irytuj\u0105ce jest pobieranie listy pakiet\u00f3w npm, kt\u00f3ra niestety pobiera si\u0119 za ka\u017cdym razem jak wy\u0142\u0105czymy VS&#8217;a. Trwa to niestety d\u0142u\u017csz\u0105 chwil\u0119. <\/p>\n<p><em>Debugowanie i testowanie kodu<\/em><br \/>\nTo co by\u0142o dla mnie najbardziej uci\u0105\u017cliwe we wcze\u015bniejszej pracy z JavaScript to sprawdzenie, \u017ce napisany przeze mnie kod dzia\u0142a i jest poprawny. Og\u00f3lnie testowanie kodu JS sprowadzi\u0142o si\u0119 u mnie do tego, \u017ce intensywnie u\u017cywa\u0142em dodatk\u00f3w dla deweloper\u00f3w do przegl\u0105darek. Wraz z NTVS dostajemy pe\u0142ne wsparcie dla debugowania kodu JS oraz integracj\u0119 z wybranym \u015brodowiskiem test\u00f3w jednostkowych JavaScript.<br \/>\nDebugger jest bardzo rozbudowany i poza podstawowymi funkcjami, umo\u017cliwia r\u00f3wnie\u017c zdalne debugowanie na najpopularniejszych platformach (Win, Linux, Mac) jak i w Windows Azure.<br \/>\nWbudowanym frameworkiem do test\u00f3w jednostkowych jest Mocha oraz ExportRunner. Nie ma jednak problemu je\u015bli chcecie u\u017cywa\u0107 innego \u015brodowiska jak np. Qunit, czy JSUnit. Mo\u017cna rozszerzy\u0107 dodatek o ich obs\u0142ug\u0119.<\/p>\n<p><em>Inne przydatne&#8230;<\/em><br \/>\nZ innych przydatnych &#8222;ficzer\u00f3w&#8221; mamy oczywi\u015bcie pe\u0142ne wsparcie dla kontekstowej podpowiadaczki (Intellisense). Dzia\u0142a ona bardzo szybko i nie zauwa\u017cy\u0142em jaki\u015b b\u0142\u0119d\u00f3w. Po dodaniu biblioteki do projektu bez problemu pojawiaja si\u0119 podpowiedzi z nowej biblioteki. Szybko i sprawnie.<br \/>\nRzecz\u0105 kt\u00f3rej jeszcze nie u\u017cywa\u0142em jest profilowanie aplikacji. Nie jestem specjalist\u0105 od optymalizacji dzia\u0142ania kodu, wi\u0119c bardziej informacyjnie wskazuj\u0119, \u017ce taka mo\u017cliwo\u015b\u0107 te\u017c istnieje. Na pewno postaram si\u0119 troszk\u0119 z tym narz\u0119dziem popracowa\u0107 i mo\u017ce co\u015b wi\u0119cej napisa\u0107 p\u00f3\u017aniej.<br \/>\nNTVS ma wsparcie dla narz\u0119dzi wspieraj\u0105cych budowanie kodu JS. Nie ma problemu, aby uruchomi\u0107 skrypty Grunt&#8217;a. Wmaga to tylko ma\u0142ej modyfikacji pliku configuracyjnego projektu i zainstalowany wcze\u015bniej z NPM Grunt powinien dzia\u0142a\u0107 bez problemu.<\/p>\n<p><em>Czego mi brakuje<\/em><br \/>\n\u017beby nie by\u0142o tak r\u00f3\u017cowo to jednak jest co\u015b czego mi brakuje. Przede wszystkim to brak mi wsparcia dla narz\u0119dzia Bower. U\u017cywam go od kiedy napisa\u0142em pierwsz\u0105 aplikacj\u0119 w Node.js i bez niego czuj\u0119 si\u0119 jak bez r\u0119ki. Niestety w tym wypadku nadal musz\u0119 posi\u0142kowa\u0107 si\u0119 zewn\u0119trznym oknem polece\u0144 i tam wywo\u0142ywa\u0107 polecenia \u0142adowania pakiet\u00f3w przez &#8222;Bowera&#8221;.<\/p>\n<p>Strasznie si\u0119 rozpisa\u0142em, wi\u0119c ju\u017c podsumowuj\u0119. Node.js Tools for Visual Studio znacz\u0105co u\u0142atwi\u0142 mi zadanie wdro\u017cenia si\u0119 w tworzenie projekt\u00f3w w JavaScript. Szerokie wsparcie jakie daje mo\u017cliwo\u015b\u0107 skupienia si\u0119 na kodowaniu, a nie na konfigurowaniu \u015brodowiska i ci\u0105g\u0142ym wywo\u0142ywaniu linii polece\u0144 (wiem te\u017c to lubi\u0119, czuj\u0119 si\u0119 jak Linux&#8217;owiec \ud83d\ude09 ).<\/p>\n<p>Do nast\u0119pnego&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jak mogli\u015bcie przeczyta\u0107 wcze\u015bniej, zdecydowa\u0142em si\u0119 napisa\u0107 ca\u0142y sw\u00f3j projekt w JavaScript. Musia\u0142em wybra\u0107 do tego odpowiednie \u015brodowisko deweloperskie, kt\u00f3re pozwoli mi nie zajmowa\u0107 si\u0119 pierdo\u0142ami, a programowaniem.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-72","post","type-post","status-publish","format-standard","hentry","category-dajsiepoznac"],"_links":{"self":[{"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/posts\/72","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/comments?post=72"}],"version-history":[{"count":14,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/posts\/72\/revisions"}],"predecessor-version":[{"id":90,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/posts\/72\/revisions\/90"}],"wp:attachment":[{"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/media?parent=72"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/categories?post=72"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/tags?post=72"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}