Menu fechado

Desenvolva Sem Complicações com Zero-Build

Zero-Build

Introdução ao BlokJS – Zero-Build

O BlokJS é um framework de UI reativo que não requer configuração, bundler ou compilador. Com ele, você pode começar a desenvolver aplicativos reativos rapidamente, sem necessidade de configurar ou compilar nada. Além disso, o BlokJS é leve, com apenas 9 KB gzipped, e não depende de outras bibliotecas, tornando-o uma escolha ideal para protótipos, MVPs, ferramentas internas e pequenos aplicativos.

Filosofia do BlokJS

O BlokJS é construído em torno de algumas ideias principais:

Sem Etapa de Build

Um framework que precisa de um compilador antes de poder rodar já adicionou complexidade. O BlokJS é uma aplicação de JavaScript plano que é executado diretamente no navegador. Embora você possa usar um bundler para organizar seu código em arquivos se desejar, isso nunca é uma exigência.

Baterias Incluídas, Mas Não Pesadas

O BlokJS inclui estados reativos, componentes, rotas, armazenamento e rastreamento de operações assíncronas, tudo integrado em um único pacote de 9 KB. Isso significa que você não precisa montar cinco bibliotecas separadas para ter todas as funcionalidades que precisa.

Simplicidade em Vez de Complexidade

A superfície de API do BlokJS é pequena por design. Não há diretivas especiais, ciclo de vida, sintaxe específica do framework para aprender. Se você sabe JavaScript, você já sabe a maior parte do BlokJS.

Atualizações Diretas do DOM

Em vez de diferençar uma árvore virtual e patchar o DOM real, o BlokJS rastreia exatamente quais estados cada vinculação depende e atualiza apenas aquela vinculação quando o estado mudar. Isso evita o overhead de um ciclo de diferença/patch completo, tornando atualizações direcionadas rápidas e previsíveis.

Exemplo de Contador em 15 Linhas

Para demonstrar a simplicidade do BlokJS, vamos criar um exemplo básico de contador que atualiza automaticamente quando o usuário clica nos botões de incremento e decremento.

Instalação e Configuração

Para começar, você precisará incluir o BlokJS no seu arquivo HTML. Você pode fazê-lo diretamente do CDN:

<script src="https://cdn.jsdelivr.net/npm/@maleta/blokjs/dist/blokjs.min.js"></script>

Código do Contador

Agora, vamos criar o nosso contador. Em um arquivo JavaScript, você pode adicionar o seguinte código:

<div id="app"></div>

<script>
  blok.mount('#app', {
    state: { count: 0 },
    methods: {
      inc() { this.state.count++ },
      dec() { this.state.count-- },
    },
    view: ($) => ({
      div: { 
        children: [
        { h1: { text: $.state.count } },
        { button: { onclick: $.dec, text: '-' } },
        { button: { onclick: $.inc, text: '+' } },
      ] }
    })
  });
</script>

Resultado

Com esses poucos códigos, você já tem um contador reativo funcionando sem a necessidade de configuração ou build. O BlokJS cuida de tudo para você.

Por que Objetos em vez de JSX ou Templates?

O BlokJS usa objetos em vez de JSX ou templates porque é mais simples e direto, permitindo que os desenvolvedores usem apenas JavaScript puro sem necessidade de aprender uma nova sintaxe.

Benefícios da Abordagem de Objetos

Ao usar objetos, o BlokJS oferece vários benefícios, incluindo:

* Simplicidade: Sem a necessidade de aprender uma nova sintaxe, os desenvolvedores podem se concentrar em escrever código JavaScript puro.
* Direto: A abordagem de objetos é mais direta e fácil de entender, eliminando a complexidade de JSX ou templates.
* Flexibilidade: Objetos podem ser facilmente manipulados e alterados, permitindo que os desenvolvedores criem interfaces de usuário personalizadas.

Componentes – Não um Brinquedo

O BlokJS tem um sistema de componentes que inclui props, eventos, slots e hooks de ciclo de vida, tornando-o uma ferramenta poderosa para criar interfaces de usuário complexas.




Definindo Componentes

Para criar um componente, você pode usar a função `blok.component()`. Por exemplo:

block.component('TodoItem', {
  props: ['todo'],
  methods: {
    remove() { this.emit('remove', this.todo) }
  },
  view: ($) => ({
    li: { 
      children: [
        { input: { type: 'checkbox', model: $.todo.done } },
        { span: { text: $.todo.text } },
        { button: { onclick: () => this.remove(), text: 'x' } },
      ]
    }
  })
})

Lojas – Estado Global com Rastreamento de Async Automático

O BlokJS fornece um sistema de lojas que permite gerenciar o estado global da aplicação e rastrear automaticamente operações assíncronas, tornando mais fácil lidar com carregamento e erros.

Definindo uma Loja

Para criar uma loja, você pode usar a função `blok.store()` e passar o nome da loja e um objeto com as propriedades e métodos da loja. Por exemplo:


blok.store('auth', {
  state: { user: null },
  computed: {
    isLoggedIn() { return this.state.user !== null }
  },
  actions: {
    async login(email, password) {
      try {
        const res = await fetch('/api/login', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({ email, password }),
        })
        if (res.ok) {
          const userData = await res.json()
          this.state.user = userData
        } else {
          throw new Error('Login failed')
        }
      } catch (error) {
        throw new Error('Login failed')
      }
    },
    logout() { 
      this.state.user = null
    }
  }
})

Roteamento – Construído

O BlokJS inclui um sistema de roteamento que permite criar rotas, parâmetros dinâmicos, guardas e modos de hash e história, tudo sem a necessidade de uma biblioteca de roteamento separada.

Definindo Rotas

Para definir rotas no BlokJS, você pode utilizar a propriedade `routes` no objeto `blok.mount`. Por exemplo:


blok.mount('#app', {
  routes: [
    { path: '/', component: 'Home' },
    { path: '/product/:id', component: 'ProductDetail' },
    { path: '/admin', component: 'Admin', guard: 'requireAuth' },
    { path: '*', component: 'NotFound' },
  ]
})

Segurança

O BlokJS é projetado com segurança em mente, com recursos como binding de texto seguro e validação de URLs para prevenir ataques de XSS e CSRF.

Binding de Texto Seguro

O BlokJS utiliza o atributo `textContent` para renderizar o conteúdo de texto, o que significa que qualquer HTML presente no texto será renderizado como texto literal, evitando assim ataques de XSS.


{ "text": "$.name" }

O que o BlokJS não é

O BlokJS não é uma substituição para frameworks como React, Angular ou Vue para dashboards empresariais complexos, mas é ideal para protótipos, ferramentas internas, aplicativos pequenos e médios e aprendizado.

Limitações do BlokJS

O BlokJS não tem suporte a renderização servidor-side (SSR) no momento, embora isso possa ser adicionado no futuro. Além disso, o BlokJS não utiliza um Virtual DOM, optando por atualizações diretas do DOM em vez disso.

Quando usar o BlokJS

O BlokJS é uma escolha ideal para:

* Protótipos e MVPs onde você precisa algo pronto rapidamente
* Ferramentas internas e painéis de administração
* Aplicativos pequenos e médios, como listas de tarefas, dashboards e formulários
* Aprendizado, pois a API do BlokJS é fácil de aprender e se lembrar
* Embutir UI reativa em qualquer página existente



Redação YTI&W-News

Redação Developers | Yassutaro TI & Web

Notícias do universo do Desenvolvimento Web, dicas e tutoriais para Webmasters.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Publicado em:APIs e Integrações,Banco de Dados,Desenvolvimento de Software,Front End
Fale Conosco
×

Inscreva-se em nossa Newsletter!


Receba nossos lançamentos e artigos em primera mão!