Closed Zephylaci closed 2 years ago
类似 umi 一样接管了应用入口,基本不用管入口的,其他操作应该都可以通过自定义 globalImport 来解决,如果不能的话还请具体说明一下你的使用场景。
类似 umi 一样接管了应用入口,基本不用管入口的,其他操作应该都可以通过自定义 globalImport 来解决,如果不能的话还请具体说明一下你的使用场景。
有两个场景
一个是 ant design 使用了一些dom api引入对应的组件会有错误提示(因为严格模式),不过这个是小问题不影响使用
另一个是我想使用keep-alive 推荐在路由第一层挂组件
react-activation
我试着在 RootLayout 或者 BasicLayout 挂这个组件,没有生效 作为临时方案,我可以改 node_modules/@vitjs/vit/dist/generateFiles/vit.tpl 就是比较麻烦
其它虽然我没在用,但需要在入口折腾的,比如,ant-design 的全局配置(弹窗DOM挂载点之类的),国际化,服务端获取菜单,无业务侵入的埋点统计,微服务化等等等..我感觉应该是个挺常见的场景
有道理,应该搞一个类似 Next.js 的 _app.tsx 的自动引入,有兴趣 PR 吗?:joy: 不急的话这个假期结束前我应该能搞定。
不急,我就不班门弄斧了😂
应该搞定了,支持 _app.tsx
的形式,Demo 参考:https://github.com/vitjs/vit/blob/master/example/src/_app.tsx
升上去后..项目起不来了..项目是你用这个框架搭的带ant-desgin的脚手架项目,一开始报autoImport重复,去掉相关配置后..报循环引用
还一个问题是,现在产物里AppProps没有导出,我看了一眼在 /vit里..似乎不是很好导出来
import { AppProps } from '@vitjs/runtime';
// Module '"@vitjs/runtime"' has no exported member 'AppProps'
另外提个小建议,模板可以改成这样,保持最大限度的可自定义性
const DefaultApp: React.FC = () => {
return (
<React.StrictMode>
<Router history={history}>
{renderRoutes({ routes: getRoutes() })}
</Router>
</React.StrictMode>)
}
ReactDOM.render(
<CustomApp
Component={DefaultApp}
getRoutes={getRoutes}
/>,
document.getElementById('root'),
);
附上配置文件
// import * as path from 'path';
import react from '@vitejs/plugin-react'
import vitApp from '@vitjs/vit'
import { getThemeVariables } from 'antd/dist/theme'
import { visualizer } from 'rollup-plugin-visualizer'
import { defineConfig } from 'vite'
import vitePluginImp from 'vite-plugin-imp'
import windiCSS from 'vite-plugin-windicss'
import tsconfigPaths from 'vite-tsconfig-paths'
import routes from './config/routes'
// https://vitejs.dev/config/
export default defineConfig({
base: '/',
plugins: [
react(),
tsconfigPaths(),
windiCSS(),
vitApp({
routes,
dynamicImport: {
loading: './components/PageLoading',
},
exportStatic: {},
}),
vitePluginImp({
libList: [
{
libName: 'antd',
style: (name) => `antd/es/${name}/style`,
},
],
}),
visualizer(),
],
resolve: {
alias: [
// { find: '@', replacement: path.resolve(__dirname, 'src') },
// fix less import by: @import ~
// https://github.com/vitejs/vite/issues/2185#issuecomment-784637827
{ find: /^~/, replacement: '' },
],
},
css: {
modules: {
localsConvention: 'camelCaseOnly',
},
preprocessorOptions: {
less: {
// modifyVars: { 'primary-color': '#13c2c2' },
modifyVars: getThemeVariables({
// dark: true, // 开启暗黑模式
// compact: true, // 开启紧凑模式
}),
javascriptEnabled: true,
},
},
},
server: {
},
})
在配置好alias前,终端会报错提示找不到ant-design的样式文件,试了很多组合,就是不行.jpg
在项目内的 example 测试了一下没问题就发布了,今天我在 vite-react 再试试看呢,会尽快解决。
保持最大限度的可自定义性
这个我没看懂呢,路由渲染拆开是要干嘛?:joy:
https://github.com/yunsii/vite-react/commit/74dba70d6761f041f97e5194c1484288be9dcb09 看看这个,我在 feat/vitjs
测试没问题诶,这样的话,建议你弄一个简单的复现仓库我再看看。
保持最大限度的可自定义性
这个我没看懂呢,路由渲染拆开是要干嘛?😂
主要针对自定义路由的情况.. 我又想要框架的路由,又想自定义.. 组件传过来不太好改..
<Router history={history}>
<AliveScope>
{renderRoutes({ routes: getRoutes() })}
</AliveScope>
</Router>,
这场景太奇怪了,AliveScope 不是应该在 Router 之外吗?接管路由了你还要自定义,这是什么骚操作啊?_(:з」∠)_
yunsii/vite-react@74dba70 看看这个,我在
feat/vitjs
测试没问题诶,这样的话,建议你弄一个简单的复现仓库我再看看。
0.8.1 我只是移除了两个 console 语句,React.StrictMode 的话只会影响开发环境,难度还有不开的情况?我不太理解 😂
0.8.1 我只是移除了两个 console 语句,React.StrictMode 的话只会影响开发环境,难度还有不开的情况?我不太理解 😂
影响倒是不大,就是不想看到报错...主要是三方库的报错没法处理😂 我刚一路把依赖回退到0.7.0,它也不报错了,代码配置啥都没改过..只有依赖重新装 也许是我上次把lock文件也删了重建的原因吧,不纠结了,问题解决,完结撒花🎉
第三方的问题也只是开发环境会报,我也是有强迫症的,这点我觉得还是有必要的,毕竟得知道哪些库有兼容性问题,别到时候出了什么问题自己都不知道。
我看到有一个.vit/vit.tsx 文件作为入口,但是修改这里每次重新启动都会重置,有办法自定义么?