✂️ Separação do Código
Parcel suporta separação do código sem nenhuma configuração, de fábrica. Isso permite que você divida o código da sua aplicação em arquivos separados, que podem ser carregados sob demanda, o que significa tamanhos de arquivos iniciais menores e tempos de carregamento mais rápidos. À medida que o usuário navega em sua aplicação e os módulos são carregados, o Parcel automaticamente se encarrega de carregar os demais módulos sob demanda.
A separação do código é controlada pelo uso da função dinâmica import ()
syntax proposal, que funciona como a declaração de import
ou a função require
, mas retorna uma Promise. Isso significa que o módulo é carregado de forma assíncrona.
Utilizando imports dinâmicos
O exemplo a seguir mostra como você pode usar as importações dinâmicas para carregar outra página da sua aplicação sob demanda.
// pages/about.js
export function render() {
// Renderizar a página
}
import('./pages/about').then(function(page) {
// Renderizar a página
page.render()
})
Imports dinâmicos com async/await
Como import ()
retorna uma Promise, você também pode usar async/await. Provavelmente você precisará configurar o Babel para converter a sintaxe até que ela seja suportada por todos os navegadores.
const page = await import('./pages/about')
// Renderizar a página
page.render()
As importações dinâmicas também são carregadas sob demanda no Parcel, assim você ainda pode colocar todas as suas chamadas import()
no topo do seu arquivo e os pacotes secundários não serão carregados até serem utilizados. O exemplo a seguir mostra como você poderia carregar outras páginas da sua aplicação de forma dinâmica.
// Configure um array de nomes de páginas para serem importadas
// Essas páginas não serão carregadas até que sejam utilizadas
const pages = {
about: import('./pages/about'),
blog: import('./pages/blog')
}
async function renderPage(name) {
// Carregue a página sob demanda quando ela for requisitada
const page = await pages[name]
return page.render()
}
Nota: Se você quiser utilizar async/await em navegadores que não têm suporte nativo, lembre-se de incluir babel-polyfill
em sua aplicação ou babel-runtime
+ babel-plugin-transform-runtime
nas bibliotecas).
yarn add babel-polyfill
import 'babel-polyfill'
import './app'
Leia a documentação em babel-polyfill e babel-runtime.
Resolução do Bundle
O Parcel infere a localização dos bundles automaticamente. Isto é feito pelo módulo bundle-url e utiliza o rastreamento de pilha para determinar o caminho onde o pacote inicial foi carregado.
Isso significa que você não precisa configurar onde os bundles devem ser carregados, mas também significa que você deve servir os bundles do mesmo local.
O pacote resolve atualmente pacotes nos seguintes protocolos: http
, https
, file
, ftp
, chrome-extension
e moz-extension
.
Ajude-nos a melhorar esta documentação
Se alguma coisa estiver faltando ou não estiver inteiramente clara, por favor crie uma issue no repositório deste site ou edite esta página.