Все зависит от того, как вы собираетесь использовать дальше эти формы. Для одной-двух копий, можете создать родительскую форму и наследников, при этом шаблоны отдельные под каждый кейс использования. Если форма будет использоваться часто - выносите в виджет.
Вы путаете мягкое и холодное. type - определение типа будущей переменной, var - это создание переменной конкретного типа. Грубо говоря разница между type И var тождественна: Homo Sapiens И Василий Пупкин
Для тестирования SPA приложений удобно использовать PhantomJS/CasperJS
Для связок forntend+backend - Selenium
Конкретно в браузере можете использовать mochaJS
На backend - тут от языка зависит
Все зависит от того, какую задачу вы решаете. Если вопрос в производительности архи критичен, вплоть до работы с железом на прямую, то лучше смотреть в направлении C.
Не стоит использовать фреймворки по сути в двух основных случаях:
1. Ни один из существующих фреймворков не решает вашу задачу, хотя бы частично
2. Ваша цель самообучение
Ubuntu 14.04 - хост машина
PHPStorm + Golang plugin - IDE
Vagrrant + Virtualbox - рабочие машины, конкретно под go - обязательно с GVM + go crosscompile
Фактически код правится на хост машине, но выполняется на виртуалке