vont
Version:
A full-stack framework combining Koa and React with file-based routing
52 lines (46 loc) • 1.43 kB
JavaScript
/**
* 生成 React 客户端入口代码
*/
function generateReactClient(stylesGlob, pagesGlob) {
return `
import { renderVontApp } from 'vont/client';
// 动态导入样式(如果存在)
const styleModules = import.meta.glob('${stylesGlob}', { eager: true });
// 动态导入所有页面
const pageModules = import.meta.glob('${pagesGlob}', { eager: true });
// 渲染应用
renderVontApp({
pagesGlob: pageModules,
});
`.trim();
}
/**
* 生成 Vue 客户端入口代码
*/
function generateVueClient(stylesGlob, pagesGlob) {
return `
import { renderVueApp } from 'vont/client/vue';
// 动态导入样式(如果存在)
const styleModules = import.meta.glob('${stylesGlob}', { eager: true });
// 动态导入所有页面
const pageModules = import.meta.glob('${pagesGlob}', { eager: true });
// 渲染应用
renderVueApp({
pagesGlob: pageModules,
});
`.trim();
}
/**
* 生成虚拟客户端入口代码
* 用于开发和构建时动态生成 client.tsx
*/
export function generateVirtualClient(options) {
const stylesGlob = options?.stylesGlob || '/src/styles/**/*.css';
const pagesGlob = options?.pagesGlob || '/src/pages/**/*.{tsx,jsx,vue}';
const framework = options?.framework || 'react';
if (framework === 'vue') {
return generateVueClient(stylesGlob, pagesGlob);
}
return generateReactClient(stylesGlob, pagesGlob);
}
//# sourceMappingURL=virtual-client.js.map