Polymer: Suporte de instrução em vinculações de dados - aprimoramento

Criado em 20 jun. 2017  ·  4Comentários  ·  Fonte: Polymer/polymer

Proposta

Adicionando suporte para expressões ou instruções javascript em ligações de dados como em QML .

Não apenas chamadas de função, por exemplo:

<my-elem>[[_myConcat(myAttr1, " - ", myAttr2)]]</my-elem>

Mas também instruções js válidas, portanto, você não precisa criar todas as funções em sua classe de elemento, por exemplo:

<my-elem>[[myAttr1 + " - " + myAttr2]]</my-elem>

ou:

<button style="display: [[_isAdminDisplayBlockOrNone(isAdmin)]];">Admin login</button>

para:

<button style='display: [[isAdmin ? "block" : "none"]];'>Admin login</button>

Também adicionando suporte para o uso de objetos js embutidos como Math e Date . E chamando funções globais, por exemplo:

<lint rel="import" href="an3thPartyLibrary.html">
...
<template>
    <div>[[an3thPartyFunction(myAttr)]]</div>
</template>

Isso simplificaria a interface dos elementos e a velocidade da codificação.

A implementação não seria difícil, porque as ligações de dados do polímero já estão observando os eventos de mudança nos atributos, mas agora, em vez de chamar a função, chamaria eval em toda a expressão.

databinding enhancement p3 review then close

Comentários muito úteis

Isso costumava ser suportado a partir de 0,5, mas foi removido intencionalmente devido a problemas de desempenho, causados ​​principalmente pela análise de ligações de dados no tempo de execução AFAIK. Outra razão é que ter muita lógica nos modelos não é uma boa ideia. Pessoalmente, participei da migração de um grande projeto de 0,5 para 1.xe uma vez perdi uma parte de uma linha MUITO longa com vários operadores ternários como esse, hein.

Porém, há um repositório de expressões de polímero , que tem um branch 2.0-preview e pode ser usado como um mixin opcional no futuro, pelo menos pelo que me lembro da conversa com @justinfagnani

Todos 4 comentários

Isso costumava ser suportado a partir de 0,5, mas foi removido intencionalmente devido a problemas de desempenho, causados ​​principalmente pela análise de ligações de dados no tempo de execução AFAIK. Outra razão é que ter muita lógica nos modelos não é uma boa ideia. Pessoalmente, participei da migração de um grande projeto de 0,5 para 1.xe uma vez perdi uma parte de uma linha MUITO longa com vários operadores ternários como esse, hein.

Porém, há um repositório de expressões de polímero , que tem um branch 2.0-preview e pode ser usado como um mixin opcional no futuro, pelo menos pelo que me lembro da conversa com @justinfagnani

O repositório de expressões de polímero foi arquivado. existem novas iniciativas ou pensamentos sobre este pedido? Concordo que não devemos ter muita lógica nos modelos, mas parece excessivamente restritivo desautorizar completamente expressões JavaScript simples e resulta em um antipadrão de ter que criar funções triviais que têm apenas um único uso.

A melhor maneira de incluir expressões semelhantes a JavaScript em modelos é apenas usar JavaScript e não enviar um analisador e avaliador de expressão customizado para o cliente. Essa é a direção que estamos indo com lit-html e LitElement. É muito mais rápido e leve do que Polímero + expressões de polímero.

Já que não vamos mudar o sistema de expressão do Polymer, vou fechar isso agora.

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