React-dnd: Por favor, adicione exemplos simples ES5

Criado em 19 jun. 2015  ·  32Comentários  ·  Fonte: react-dnd/react-dnd

Nem todos nós temos o luxo de usar a sintaxe ES7 moderníssima. Seria de grande ajuda para a sobrecarga de informações para iniciantes se houvesse alguns exemplos de trabalho que não apresentassem todos esses novos recursos de linguagem (especialmente recursos experimentais como decoradores ES7) nos exemplos. A utilidade dos exemplos é diluída quando confusa com recursos de linguagem experimental.


Editar do mantenedor: rastreie-os aqui:
https://github.com/vkbansal/react-dnd-es5-examples


Comentários muito úteis

Forçar as pessoas a aprender a sintaxe ES6 (e pior, ES7) apenas para entender seu código de exemplo é _hostile_ em _best_. Parece um módulo incrível. Por que não exportar pelo menos a versão ES5 de _um_ de seus exemplos para uma pasta de exemplo ES5 para os não iniciados. Dizer que você aceitará um PR não ajuda, já que as pessoas que estão pedindo os exemplos provavelmente não estão familiarizadas com ES6 e ES7 para começar!

Le suspiro.

Todos 32 comentários

Fico feliz em aceitar essa contribuição.

Os exemplos do tutorial são todos oferecidos em ES5, ES6 e ES7:
http://gaearon.github.io/react-dnd/docs-tutorial.html

Cada página de doc também tem exemplos em ES5, ES6 e ES7:
http://gaearon.github.io/react-dnd/docs-drag-source.html
http://gaearon.github.io/react-dnd/docs-drop-target.html
etc

Infelizmente, não tive tempo de portar todo o código de exemplo, mas isso deve ajudá-lo a começar.

Existem exemplos ES5 no site de documentação. http://gaearon.github.io/react-dnd/docs-overview.html

image

Estou me referindo aos exemplos funcionais completos no repositório do github.

Eu concordo que exemplos ES5 com ES6 / 7 opcional seriam preferíveis até que ES6 / 7 seja o mainstream. Será mais fácil aprender o react-dnd se você não tiver que aprender uma nova linguagem de programação ao mesmo tempo + transpilar para ES5 para fazer o código rodar.

Eu diria que o ES6 já é popular com a linguagem sendo finalizada e o Babel usado em muitos projetos.

Forçar as pessoas a aprender a sintaxe ES6 (e pior, ES7) apenas para entender seu código de exemplo é _hostile_ em _best_. Parece um módulo incrível. Por que não exportar pelo menos a versão ES5 de _um_ de seus exemplos para uma pasta de exemplo ES5 para os não iniciados. Dizer que você aceitará um PR não ajuda, já que as pessoas que estão pedindo os exemplos provavelmente não estão familiarizadas com ES6 e ES7 para começar!

Le suspiro.

Eu concordo com os caras aqui, @gaearon você não deve forçar as pessoas a aprender ES6 / ES7 apenas para entender como a biblioteca funciona .. Isso pode levar as pessoas a usar outra biblioteca.
Esta biblioteca é incrível, a única coisa que tenho para argumentar contra isso é este tópico. Não sou um especialista em JS (sou um desenvolvedor Ruby), então é difícil para mim entender os exemplos, só porque você está usando outra sintaxe (não sou contra a nova sintaxe, mas ao desenvolver uma biblioteca, você deve adotar padrões convencionais), o que é ridículo.
Se você deseja que esta biblioteca seja a biblioteca DnD padrão para React, você deve corrigir isso. Caso contrário, receio que as pessoas usem outra solução "mais fácil", independentemente de ser melhor ou pior do que a sua.

só porque você está usando outra sintaxe

FYI, esta não é outra sintaxe, é ES6, que é JavaScript. E se você tiver problemas com a sintaxe ES6, então você também deve ter problemas com react, porque na verdade é outra sintaxe.

mas ao desenvolver uma biblioteca, você deve adotar os padrões principais

ES6 está se tornando popular. io.js e o próprio react têm suporte para ES6

Você está enganado.

  1. Confira a Wikipedia :

Na ciência da computação, a sintaxe de uma linguagem de computador é o conjunto de regras que define as combinações de símbolos que são considerados um documento ou fragmento corretamente estruturado nessa linguagem

E:

ECMAScript 2015 (6ª edição) é a versão atual do padrão de especificação de linguagem ECMAScript

Sim, ES5 e ES6 são JS, mas a sintaxe é diferente.
2

ES6 está se tornando popular. io.js e o próprio react têm suporte para ES6

"Tornar-se" e "suporte para" indica que você sabe que o ES6 ainda não é popular. Vai, eventualmente, mas enquanto isso você deve dar exemplos no ES5.

Se você quer tanto os exemplos do ES5, por que vocês não se esforçam para contribuir com eles? @gaearon é uma pessoa muito ocupada e trabalha nesta biblioteca nas horas vagas. Portanto, em vez de exigir, tente contribuir, para que outros também possam se beneficiar com isso.

Pessoal, dono do projeto, gaearon, não está forçando ninguém a nada.

gaearon já fez um trabalho tremendo nesta lib. O projeto é de código aberto e oferecido gratuitamente. Acusá-lo de ser hostil, ou como se ele fosse o dono de qualquer coisa dos usuários, é IMHO meio hostil.

Ele afirmou que não tem tempo para portar os exemplos para es5 e está aberto a contribuições. Já existem exemplos em es5 / 6/7. E para ser honesto, a sintaxe não é tão diferente.

Além disso, você pode usar um transpiler, como o babel, para transformar o código es6 / 7 em es5 e usá-lo, examiná-lo ou aprender com ele.

Ninguém está forçando as pessoas a usar o react-dnd, nem é o propósito desta biblioteca ser a solução 'única'.

@hakanderyal exatamente meu ponto!

@hakanderyal , não estamos discutindo isso ... você está certo, todos agradecemos a @gaearon pelo tremendo trabalho neste projeto.

Sabemos que não houve intenção maliciosa de escrever os exemplos no ES6. Pessoalmente, não estou acusando ninguém disso. No entanto, acredito que este problema nos mostra a necessidade de exemplos ES5.

Sim, poderíamos usar o Babel, mas em alguns casos você não quer adicionar mais complexidade ao seu projeto adicionando mais bibliotecas apenas porque os exemplos que você tem exigem. Estou usando React e ReactDnD em um projeto Rails e, honestamente, não quero lidar com mais transpiladores e outras coisas apenas para executar meu código.

Além disso, algumas pessoas (inclusive eu) não são especialistas em JS, então acho que seria bom manter as coisas o mais simples possível.

Qualquer colaborador existente ou um novo poderia assumir a liderança neste problema e começar a adicionar alguns exemplos, não apenas @gaearon

@ bismark64 @jeffreywescott @emergentcypher Veja # 214

: +1: Excelente @vkbansal! Obrigado!

Obrigado, @vkbansal - você é

Ei pessoal.

Passei semanas e noites do meu tempo pessoal trabalhando neste projeto e em seu site de documentos, que é o único site de biblioteca JS que conheço que mostra exemplos de código ES5, ES6 e ES7 em cada página de doc que contém algum código. Lamento não ter correspondido às suas expectativas com os próprios exemplos!

Quando eu tiver algum tempo livre depois de passar semanas e noites do meu tempo pessoal não remunerado trabalhando na minha palestra React Europe, posso considerar seu pedido. Enquanto isso, use outra biblioteca ou peça a alguém para ajudá-lo com os exemplos ES5.

Aqui estão algumas coisas que sugiro que você faça quando tiver algum tempo livre:

Obrigado.

PS Muito obrigado a @vkbansal.

Oi Gaearon,

Liberar seu código para uso público é muito apreciado pela maioria das pessoas que o utilizam.

Você está empurrando as coisas 'para a frente' e fazendo isso de uma forma pública ... nada disso é 'fácil'.

Estou totalmente surpreso (e acho que a maioria das pessoas ficará) com as acusações que você recebeu
por exemplo, 'forçar' as pessoas .. e ser 'hostil'
... especialmente quando você convida contribuições

Sua resposta a esses ataques é muito mais contida do que a minha receberia a mesma provocação.

Por favor, não desanime por esta minoria negativa

muito obrigado pelo código e pelas ideias

Stu

Por favor, respeite meu desejo de _não_ continuar esta discussão. Não quero mais enviar spam para as pessoas que assistem a este repositório.

Não estou bloqueando o problema, mas se outro comentário for postado, espero que seja um comentário útil com um link para mais PRs ou algo do tipo, não um comentário de “discussão”. Podemos distorcer as palavras um do outro para sempre e “ouvir os dois lados”, mas não vejo por que.

Eu entendo sua preocupação: você precisa de exemplos ES5 e não quer aprender ES6 / 7 no momento. Uma posição totalmente válida para se ter. Minha posição no momento é que eu sou _fisicamente incapaz_ de trabalhar nesses exemplos. Eu posso ser capaz no futuro. No momento, não há nada que eu possa fazer para ajudá-lo, exceto apontar este grande recurso de aprendizagem ES6 (que é como eu aprendi sozinho).

Além disso, se eu fosse me concentrar nesses exemplos, não teria enviado o 1.0 de forma alguma. Foi um corte necessário para liberar o 1.0 porque tive que começar a trabalhar na minha palestra logo depois disso. Você pode usar o React DnD 0.9.2, que é a versão mais recente com exemplos ES5 . Observe que ele difere significativamente de 1.0.

Finalmente, existe uma certa etiqueta de código aberto, e algumas das frases nos comentários acima a violam. Se você não vê isso, é problema seu, não meu. Quebrar essa etiqueta é uma das razões pelas quais os mantenedores queimam e abandonam seus projetos populares. Você pode pensar que _sua_ reclamação é válida e você _entende bem_, mas é totalmente irrelevante. É realmente difícil entender isso de verdade até que você coloque suor e sangue em seu próprio projeto e tenha um problema semelhante.

Para resumir, se este for um tópico produtivo adiante, estou feliz. Se for “quem é o culpado”, vou bloqueá-lo.
Obrigado.

Você está totalmente certo @stooboo e @gaearon. Peço desculpas se meus comentários acima quebraram essa etiqueta e você se sentiu acusado ou se eu fui desrespeitoso com você. Sei que manter esse projeto envolve muito esforço e tempo, e você está indo muito bem até agora, então sou grato por isso. Minha intenção era apenas apontar essa preocupação.
Dito isso, devemos ignorar isso e deixar este tópico evoluir normalmente ..

Sinto-me envergonhado e constrangido. Sinto muito pelos meus comentários, @gaearon. Não é desculpa, mas esta semana foi difícil para mim, e em um momento de frustração, eu ataquei. Sinto muito e muito obrigado por esta biblioteca incrível .

Deixe-me também fornecer algum contexto. A razão pela qual os exemplos não são escritos em ES5 é porque a principal _razão_ que escrevi 1.0 foi que as pessoas estavam tendo problemas ao usar 0.x nas classes ES6: # 109.

Seria idiota lançar 1.0 “resolvendo” o problema da classe ES6 sem classes ES6 nos exemplos. Portanto, tomei a decisão de usar o ES6 mais adiante.

Se você estiver usando o React, as chances são altas de que você _já_ tenha uma etapa de construção. Você precisa compilar o JSX certo? (A maioria das pessoas o usa.) Se você já tem uma etapa de compilação, não custa literalmente nada substituir a etapa de compilação JSX pela etapa de compilação Babel. Na verdade, é isso que o Facebook também fará.

Achei que teria que deixar esta biblioteca “para pendurar” por um tempo, porque sabia que precisava trabalhar em minha palestra. Portanto, optei por construí-lo _ olhando para a frente, em vez de para trás_, para que possa viver algum tempo por conta própria sem minha interferência.

@jeffreywescott Não tem problema e você é bem-vindo. Obrigado por pedir desculpas. Eu realmente aprecio e sei que pode ser difícil admitir que estou errado.

: +1:

@gaearon @emergentcypher @awarberg @jeffreywescott @ bismark64

Eu segui junto com o Tutorial principalmente ES5 (porque eu também sou lento para aprender ES6, mas irei eventualmente, estou usando JSX, obviamente, e desestruturando ): https://github.com/jehoshua02/react-dnd-experiment

Acompanhe os exemplos ES5 aqui:
https://github.com/vkbansal/react-dnd-es5-examples

Muito obrigado a @vkbansal.

Finalmente tive algum tempo para terminar: http://vkbansal.github.io/react-dnd-es5-examples/

Não era minha intenção despertar as emoções das pessoas, eu só queria ajudar a tornar a biblioteca acessível e eu estava mais preocupado com os exemplos contendo recursos experimentais do ES7 que, mesmo que eu mude para o ES6, ainda não estarei usando. Eu acho que é importante continuar empurrando a comunidade dev para o ES6 agora que ele foi finalizado e eu certamente acho que @gearon fez a escolha certa ao tratar o código ES6 como sua prioridade, e peço desculpas se eu fiz meu comentário original mal.

Para comentar sobre as etapas de compilação, meu ambiente de compilação tem uma etapa de compilação JSX, mas como meu ambiente de compilação não é Node.js, mas manipulado em outra linguagem, não é necessariamente tão simples como "conectar" Babel em vez de JSX, especialmente se você está trabalhando em uma equipe na qual não é necessariamente responsável pela construção.

Obrigado @vkbansal e obrigado @gaearon por todo o seu trabalho em primeiro lugar.

  • Considerando que a maioria de todos os envolvidos mal está entrando no ES6,
  • Considerando que transpilar de ES7 para ES5 frequentemente resulta em um código desagradável de decifrar,
  • Considerando que todas as funções ES7 ainda são consideradas experimentais,

Remova todas as utilizações de ES7

Utilizar ES7 para simplicidade / sucinta sintática só funciona se todos os envolvidos estiverem cientes das variantes históricas da sintaxe.

@vkbansal obrigado por colocar esses exemplos juntos.


Exemplo do segundo item:

Código limpo:

var DragSourceDecorator = DragSource(ItemTypes.CARD, cardSource,
    function(connect, monitor) {
        return {
            connectDragSource: connect.dragSource(),
            isDragging: monitor.isDragging()
        };
});

var DropTargetDecorator = DropTarget(ItemTypes.CARD, cardTarget,
    function(connect) {
        return {
            connectDropTarget: connect.dropTarget()
        };
});

module.exports = DropTargetDecorator(DragSourceDecorator(Card));

Resultado Transpilado (do exemplo ):

Card = (0, _reactDnd.DragSource)(_ItemTypes2['default'].CARD, cardSource, function (connect, monitor) {
    return {
      connectDragSource: connect.dragSource(),
      isDragging: monitor.isDragging()
    };
  })(Card) || Card;
  Card = (0, _reactDnd.DropTarget)(_ItemTypes2['default'].CARD, cardTarget, function (connect) {
    return {
      connectDropTarget: connect.dropTarget()
    };
  })(Card) || Card;
  return Card;

editar: referenciado erroneamente a @emergentcypher como autor do exemplo es5.

Você está bêbado?
Desculpa! comentou no lugar errado!

@adamellsworth Ninguém está forçando você a usar o ES7. Se você não quiser usá-lo, não o faça, mas você não tem o direito de dizer ao autor o que fazer.

As pessoas têm todo o direito de fazer comentários! Essa é a grande vantagem do código aberto. Não acho que dizer "remova" seja mandar no autor. Se o autor não deseja receber comentários e solicitações, ele não deve publicar trabalhos no github.

Já que agora temos exemplos ES5, vou fechar sozinho :)

As pessoas têm todo o direito de fazer comentários! Essa é a grande vantagem do código aberto.

@emergentcypher você está certo.

@gaearon tem plena consciência de que nem todas as pessoas se sentem confortáveis ​​usando o ES7, por isso ele se preocupou em colocar os exemplos ES6 e ES5 no site.

Se o autor não deseja receber comentários e solicitações, ele não deve publicar trabalhos no github.

Sim, o autor deseja receber comentários e feedback, mas que sejam construtivos .

Pedir ao autor para remover algo completamente só porque você não o usa é equivalente a ir até o seu chefe e pedir-lhe que demita um dos seus colegas só porque você não gosta da cara dele.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

gocreating picture gocreating  ·  4Comentários

bebbi picture bebbi  ·  3Comentários

dwjohnston picture dwjohnston  ·  3Comentários

rubayethossain picture rubayethossain  ·  3Comentários

TheBolliwood picture TheBolliwood  ·  3Comentários