Analisar uma tarefa de teste para um desenvolvedor front-end em Vue.js

A primeira regra dos itens de teste é nunca fazer itens de teste!

Já houve muitas disputas sobre isso no Habré, e aí tive a oportunidade de aprender essa lição na minha própria pele. Enviei a solução, mas não recebi resposta. Mesmo negativo. Nada. Claro, tudo pode ser atribuído à crise, que a vaga foi congelada de repente (ouço isso muitas vezes ultimamente, mas as mesmas vagas continuam penduradas). Ainda assim, a polidez banal teria sido mais do que suficiente. A conclusão é inequívoca: você precisa verificar cuidadosamente a confiabilidade do interlocutor antes de morder o TZ.

No entanto, dei esse passo deliberadamente para me testar, para ganhar alguma experiência, mesmo em caso de fracasso com o empregador. O artigo não será sobre isso. As dificuldades de solução surgem já na fase de leitura da ficha técnica. Às vezes, você nem sabe como iniciar uma tarefa, e a escolha que você fizer no início afetará todos os estágios de desenvolvimento.

Existem muitos tutoriais sobre como criar arte corporal online, então em que o meu será diferente? Em primeiro lugar, normalmente não são feitos de acordo com o trabalho técnico, o que significa que os autores “acertam em cheio” e, em geral, não se limitam a nada. Em segundo lugar, é raro ver uma explicação de por que um ou outro caminho foi escolhido para resolver o problema. Em terceiro lugar, minha aplicação é uma ordem de magnitude mais complicada do que a lista de tarefas padrão, mais sobre isso posteriormente.

Para me familiarizar com a tarefa que recebi, pergunto sob o spoiler:

Tarefa técnica:

Use o Vue.js para implementar um pequeno aplicativo de anotações do SPA.

Cada nota tem um título e uma lista de tarefas e, em seguida, Tarefas. Cada item de Todo consiste em uma caixa de seleção e a assinatura de texto associada.

O aplicativo consiste em apenas 2 páginas.

. Todo, , . :

  • ( )

, Todo, . :

  • ( )

  • ( )

  • Todo:

:

  • .

  • ( ) .

  • usability.

  • .

  • / (Ctrl+Z, Command+Z, etc.).

:

  • "alert", "prompt" "confirm".

  • JavaScript TypeScript.

  • , , Webpack.

  • UI ( Vuetify).

  • , .

  • Vue-.

:

  • , , , , .

  • .

  • — . ( ). .

:

  • (GitHub, BitBucket, GitLab) .

  • . Dockerfile docker-compose.yaml, docker-compose up .

.

, . . , , , , ( ) , , .. , .

:

Vue.js SPA . : Vue CLI .

todo list, ( - Todo). Todo . - , : , .

2 . - Vue Router? . , , - . , , . , , ? - .

, :

. : , , . "" , Vue .

Fazer e Refazer
Do Redo
  • . SPA, Vue CLI.

  • ( ) .

  • "alert", "prompt" "confirm".

    Promise, . , . , , , . vue-modal-dialogs - , . Vue 3.

  • usability. , . , .

  • . - , , Cookie localStorage. , . localStorage. Vuex, ,   . , , .

  • JavaScript TypeScript. - ? , , Vue. TypeScript Vue 2 , . , Vue 3.

    , ! Vue 2, , , .

  • , , Webpack. Vue CLI Webpack, SPA Vue.js

  • UI ( Vuetify) - . "" , Material Icons , . , , .

  • , . - flexbox .

  • Vue-. - : 2 , , , , - .

    .

:

v-click-outside. . , . , . , - . , .

: , ? : , ? . Vue-Router . beforeRouteLeave . . , . , :

  async beforeRouteLeave (to, from, next) {
    if (await confirm('Do you realy want to leave this page?',
       'All unsaved changes will be lost.')) {
        this.clearNote()
        next()
      } else{
        next(from)
      }
  }

. Vue.js. , . .

, .




All Articles