Событие Flask onchange или нужен фреймворк Javascript?

#javascript #dom-events

#javascript #dom-события

Вопрос:

Раньше я создавал приложения Microsoft Excel с использованием VBA и таких событий, как _Change, _Click,… Сначала я переключился на JavaScript и фреймворки, но я заблудился с асинхронной стороной. Итак, я перешел на Python и Flask, и мне это очень нравится. Но когда я создаю интерфейс, сложно создавать динамические формы, потому что я не нахожу собственные теги (document.getElementsBy в JavaScript) и события (onChange, onClick и другие события) Я использовал с VBA.

Например, вчера я хотел обновить параметры в SelectField в зависимости от значения, введенного пользователем в текстовое поле. Я не смог сделать это только с помощью Flask и Python, мне нужно было добавить тег и фрагменты JavaScript:

     <script>

    //Get the controllers:
    let train_number = document.getElementsByClassName('train-number');
    let stops_list = document.getElementsByClassName('stops-list');

    //Add a listener:
    train_number[0].onkeyup = (e) => {
        //Clear stops_list:
        if (train_number[0].value == '') {
            stops_list[0].options.length = 0;
        }
        //If alphanumeric character:
        let charStr = String.fromCharCode(e.which || e.keyCode);
        if (/[a-z0-9]/i.test(charStr)) {
            //Clear stops_list:
            stops_list[0].options.length = 0;
            searched_train = train_number[0].value;
            //Requests for stations:
            fetch('/train/'   searched_train).then((response) => {
                response.json().then((data) => {
                    for (var i = 0; i < data.length; i  ) {
                        //Create new option element
                        var opt = document.createElement('option');
                        // create text node to add to option element (opt)
                        opt.appendChild( document.createTextNode(data[i]) );
                        //Set value property of opt
                        opt.value = data[i]; 
                        //Add opt to end of select box (sel)
                        stops_list[0].add(opt); 
                    }
                })
            })
        }
    }

</script>
  

Мой вопрос: есть ли способ создавать динамические формы и представления только с помощью Flask или лучше перейти на другой фреймворк? Если лучше сменить фреймворк, какой из них вы посоветуете (простой, легкий, удобный для пользователя, быстрый в освоении и, по возможности, синхронный)?

Ответ №1:

Вам в значительной степени нужен JavaScript. (Технически, если вам не нужна поддержка Internet Explorer, WebAssembly также является опцией в наши дни, но я не думаю, что он пока хорошо работает с Python.)

Совет не входит в компетенцию Stack Overflow, но одним из возможных вариантов фреймворка является Vue, если вы хотите что-то, что претендует на меньшую сложность.

Чтобы узнать о функциях JavaScript на основе событий, доступных в браузере, ознакомьтесь с разделом «Документы» на странице обзора событий MDN.


В моем ограниченном понимании, Node.js это серверная (т.Е. Серверная) технология, а Express — это фреймворк, который можно использовать с ней, чтобы помочь с маршрутизацией, среди прочего (см.: https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs ). Если вы хотите создать одностраничное приложение, которое обрабатывает маршрутизацию во внешнем интерфейсе (т.Е. На стороне клиента), то здесь может пригодиться что-то вроде Vue, React или Angular (например, см.: https://www.educative.io/blog/react-angular-vue-comparison .)

Комментарии:

1. Хорошо, я понял. В первый раз я буду работать с запросами JavaScript Flask и параллельно изучать Vue.JS . Спасибо за вашу помощь.