# genesis-compiler

开发时的依赖,在生产环境中你不会使用到它,这能有效减少生产依赖的大小

# 安装

npm install @fmfe/genesis-compiler -D

# Build 属性

# build.ssr

说明:创建对象时,传入的 ssr 对象

# Build 方法

# build.start

说明:开始执行编译
签名:

build.start(): Promise<[boolean, boolean]>;

# build.destroy

说明:取消编译,释放内存
签名:

build.destroy(): Promise<void>;

# Build 例子

import { Build } from '@fmfe/genesis-compiler';
import { SSR } from '@fmfe/genesis-core'

const start = () => {
    const ssr = new SSR();
    const build = new Build(ssr);
    return build.start();
};
export default start();

# Watch 属性

# build.ssr

说明:创建对象时,传入的 ssr 对象

# build.devMiddleware

说明:Webpack 的webpack-dev-middleware (opens new window)中间件

# build.hotMiddleware

说明:Webpack 的webpack-hot-middleware (opens new window)中间件

# build.renderer

说明:ssr.createRenderer()方法创建的renderer

# Watch 方法

# build.start

说明:开始执行编译,你必须执行完成该方法后才能读取 renderer 属性,否则会程序会报错
签名:

watch.start(): Promise<void>;

# build.destroy

说明:取消编译,释放内存
签名:

watch.destroy(): Promise<void>;

# Watch 综合例子

import express from 'express';
import { SSR } from '@fmfe/genesis-core';
import { Watch } from '@fmfe/genesis-compiler';

const start = async () => {
    const ssr = new SSR();
    const watch = new Watch(ssr);
    const app = express();

    await watch.start();
    // 必须等待 watch.start() 执行完成后,才能拿到 renderer 实例
    const renderer = watch.renderer;

    app.get('*', renderer.renderMiddleware);

    return app;
};

start();

# Window genesis

在客户端,程序将会在 window 对象上注入一个 genesis 对象来管理应用的安装和卸载

# genesis.register

说明:注册一个应用,js 加载完成后,程序会自动注册,实际上就是 src/entry-client 文件 export default 导出的方法
签名:

window.genesis.register(
    name: string,
    createApp: (options: Genesis.ClientOptions) => Promise<Vue>
);

# genesis.install

说明:安装一个应用,将会返回一个 appId给你,你可以调用 uninstall 强制卸载应用
签名:

window.genesis.install(options: Genesis.ClientOptions): number;

# genesis.uninstall

说明:强制卸载应用,一般来说,你都不需要调用这个方法,程序会在 Vue 实例销毁时,自动卸载
签名:

window.genesis.uninstall(appId: number): Promise<void>;