In-Memory Transport
Что это за режим
Ссылка на заголовокIn-memory transport означает, что host и remote выполняются в одном JavaScript runtime.
Вместо iframe/worker транспорта remote получает channel host напрямую:
const receiver = createReceiver()const root = createRemoteRoot(receiver.receive)Именно такой wiring используется в интеграционных тестах.
Когда использовать
Ссылка на заголовокЭтот режим подходит для:
- локальных dev-runtime оболочек;
- integration/unit тестовых стендов;
- быстрой диагностики поведения render synchronization.
Не для production-изоляции
Ссылка на заголовокIn-memory transport не рекомендуется для production-изоляции расширений.
Почему:
- нет sandbox boundary;
- нет изоляции по процессам/потокам;
- хуже проявляются реальные особенности транспорта (latency, сериализация, ordering при async-связи);
- выше blast radius при проблемном remote-коде.
Используйте этот режим как dev/test топологию, но не как security boundary.
Минимальный пример подключения
Ссылка на заголовокimport { createApp, defineComponent, h } from 'vue'import { createReceiver } from '@omnicajs/vue-remote/host'import { HostedTree, createProvider } from '@omnicajs/vue-remote/host'import { createRemoteRoot, createRemoteRenderer, defineRemoteComponent } from '@omnicajs/vue-remote/remote'
import VSignalBadge from './components/VSignalBadge.vue'
const provider = createProvider({ VSignalBadge })const receiver = createReceiver()
// Host app (тот же runtime)createApp(defineComponent({ setup() { return () => h(HostedTree, { provider, receiver }) },})).mount('#host')
// Remote app (тот же runtime)const root = createRemoteRoot(receiver.receive, { components: ['VSignalBadge'],})
const VRemoteSignal = defineRemoteComponent<'VSignalBadge', { tone: 'neutral' | 'success' | 'warning'; label: string;}>('VSignalBadge')
const remote = createRemoteRenderer(root).createApp(defineComponent({ setup() { return () => h(VRemoteSignal, { tone: 'success', label: 'In-memory transport is active', }) },}))
remote.mount(root)await root.mount()await receiver.flush()Практические замечания
Ссылка на заголовок- Держите transport-специфичные тесты отдельно для worker/iframe/network режимов.
- Не проверяйте security-ожидания только на in-memory режиме.
- Используйте этот режим для быстрой итерации и обязательно перепроверяйте на production-транспорте.