Loading...
malkstor avatar malkstor 348 Точки

[Homework] Четене на входни данни в JS

Здравейте,

Имам един генерален въпрос относно второто домашно, който предполагам ще се отнася и за следващите. В задачите, в които трябва да напишем програма, приемаща входни данни и правеща нещо с тях после, очаква ли се да четем данните през конзолата на дебъгера/node.js? Все още не съм успял да намеря как става това, а гледам някои от студентите от предишни випуски са хардкод-вали входните данни в самия js файл.

Тагове:
5
JavaScript Fundamentals
Filkolev avatar Filkolev 4482 Точки
Best Answer

Вариант 1: Правиш един масив с входните данни от примерите в условието, пускаш forEach и викаш функцията за всеки елемент, т.е. всеки тест. Хардкоднати са стойностите, но се минава през всички примери автоматично, а ако някой иска да тества други варианти просто ще допълни масива.

Вариант 2: nodejs и през конзолата, но аз лично не съм го ползвал

Вариант 3: Правиш едно инпут поле в HTML и бутон, със скрипт взимаш стойността на инпута и в някакъв div примерно вкарваш резултата след сметките. Това изисква (съвсем малко) манипулиране на DOM-a.

7
malkstor avatar malkstor 348 Точки

Благодаря Фил, това с масива е доста хитро. Първото което ми мина през ума е да пъхна скрипта в html и от там с prompt и alert/console.log, но се чудех дали не се очаква да направим така, че входа да се приема от конзолата, което не успях да намеря как става. Допълнителни играчки пък с html ми се струват малко излишни за момента, така че варианта с масива е екстра :)

3
Filkolev avatar Filkolev 4482 Точки

alert/prompt не се ползват, доста са досадни от потребителска гледна точка, защото блокират целия браузър.

3
milen.stefanov avatar milen.stefanov 40 Точки

А има ли въобще начин за четене през Node.js конзолата? Това, което чета в нета, е меко казано плашещо.

5
zhivkosiderov avatar zhivkosiderov 0 Точки

Ако искате да четете данни през node.js, първо го инсталирайте и след това отворете command line, отидете в directory, където е файла и напишете "node името_на_файла". Ето и линк, където е показано как да се направи http://blog.gvm-it.eu/post/20404719601/getting-started-with-nodejs-on-windows

0
naskobogdanov avatar naskobogdanov 11 Точки

Идеята тук е не как да си ръннеш *.js файла в конзолата, а как да направиш възможно четенето на ред от нея и закачането му към променлива.

Поздрави,
Наско

1
zhivkosiderov avatar zhivkosiderov 0 Точки

Ето този пост може да е от помощ - http://stackoverflow.com/questions/26685472/create-series-of-prompts-from-array-of-questions-in-node-js

От там ако се създаде променлива под 'counter' например, може да се закачи вече определена стойност.

 

Живко

0
11/01/2016 14:25:15
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Аз пробвах това:

http://stackoverflow.com/questions/8128578/reading-value-from-console-interactively#comment9994213_8129748

плюс малко пояснения от тука:

https://gist.github.com/DTrejo/901104

това е файла, по втора задача Homework: JavaScript Syntax/ Problem 2. Calculate knots, който написах, а долу е резултата, който се получава в конзолата:

C:\Users\Katya>node calculate-knots.js
Please, enter a speed value in km/h> 20
10.80
Please, enter a speed value in km/h> end
Thank you for testing my program!

C:\Users\Katya>

т.е. работи: reads, processes, prints - само че мисля, че има повече начини да се направи - според това тука:

https://gist.github.com/DTrejo/901104

първо го обърках, но после разбрах, че този ред rl.on('line', function(line)

можел да се пише само с parameter name: line, защото имало Event: 'line', който всъщност четем.

 

4
11/01/2016 15:26:00
malkstor avatar malkstor 348 Точки

Благодаря Катя, това проработи :)

Малка подробност е че работи в конзолата на node.js, а не в debugger-а на WebStorm, но там може и да не работи по принцип.

2
12/01/2016 10:28:44
KatyaMarincheva avatar KatyaMarincheva 572 Точки

debugger-a на WebStorm е за момента принципно над нивото на моята интелигентност!

ще пробвам днес това пък какво е

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

кракнах WedStorm debugger варианта - било доста нелогично, честно казано, затова не работи от първи опит:

http://stackoverflow.com/questions/33848450/webstorm-node-js-cli-debugging-in-windows-7

To enable stdin in WebStorm debugger console, in the Console tab uncheck "Use Console Input"https://dl.dropboxusercontent.com/u/43511007/s/Screen%20Shot%202015-04-30%20at%2014.45.54.png.

аз направих следното:

https://picasaweb.google.com/112791463427071815298/Desktop02?authkey=Gv1sRgCKrAkf3i8IfZfA

1. от Run -> Edit Configurations... на WebStorm си проверих configration (черния скрийншот на горния линк), оказа се че нямам сетнат път до node.exe, та си го сетнах

2. отидох на Run, избрах името на файла и директно WebStorm ми отвори конзола за input/output (четвъртия скрийншот на горния линк)

3. uncheck-нах Use Console Input (тъпо звучи!) (третия скрийншот на горния линк) и debugger console започна да си приема нормално инпут И да го обработва и да дава оутпут - това uncheck-ване било специфично изискване защото ползвам process.stdin в кода!

и сега всичко работи.

4
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.