vue 脚手架页面文件列表读取 - V2EX
zficode

vue 脚手架页面文件列表读取

  •  
  •   zficode Nov 4, 2023 2245 views
    This topic created in 921 days ago, the information mentioned may be changed or developed.

    在 vue 搭建的脚手架中,通过 vue-router 标记哪些文件为页面文件,例如:

    const router = new Router({ routes }) const routes = [ ... ] 

    现在想拿到脚手架中哪些文件为路由文件和它的路由信息,包括路由 path 和对应的组件地址。 目前已知方式:

    1. ast 解析,较为麻烦,需要考虑父路由 path 拼接 请问有更好的方式吗
    8 replies    2023-11-06 02:54:33 +08:00
    xiaoriri666
        1
    xiaoriri666  
       Nov 4, 2023
    一般是这么处理的,新建个文件夹,然后所有的静态路由都放在这个文件夹下,然后用 import.meta.glob 导入,参考如下代码
    ```js
    const models = import.meta.glob('./*.js', {eager: true})

    function formatModules(_modules, result) {
    Object.keys(_modules).forEach((key) => {
    const defaultModule = _modules[key].default;
    if (!defaultModule) return;
    const moduleList = Array.isArray(defaultModule)
    ? [...defaultModule]
    : [defaultModule];
    result.push(...moduleList);
    });
    return result;
    }
    const staticRouter = formatModules(models, [])

    export default staticRouter
    ```
    alleluya
        2
    alleluya  
       Nov 4, 223
    做这个是想和 react-router 还是 remix 里那个功能一样么? 按照文件路径直接生成 router
    zficode
        3
    zficode  
    OP
       Nov 4, 2023
    @alleluya 就是从一个 vue 项目中扫描出哪些文件为路由文件,得到它的路由地址( path)
    kamilic
        4
    kamilic  
       Nov 4, 2023
    1. AST 可以的,写代码分析下树。
    2. 另外一种方式,我开个脑洞。我觉得你可以在实际代码的运行时中拿一下 vue-router 的实例,钻进去看看最终生成的路由列表,webpack 和 vite 打包的模块导出应该也会找到文件信息的,但是这个我不确定,可以一试。
    lyc575757
        5
    lyc575757  
       Nov 4, 2023 via Android
    可以试试 unplugin-vue-router 这个插件,不需要再写路由配置文件了,会基于文件自动生成路由
    lyc575757
        6
    lyc575757  
       Nov 4, 2023 via Android
    @lyc575757 看错需求了 忽略
    leokun
        7
    leokun  
       Nov 4, 2023
    在 rollup 和 vite 中都有一个 ResolveIdHook 的钩子,第二个参数就是 importer
    创建一个虚拟模块,内容为「以 importer 为路由入口的文件列表」可能就是你要的东西
    19cm
        8
    19cm  
       Nov 6, 2023
    看看这个  https://github.com/arco-design/arco-design-pro-vue/blob/main/arco-design-pro-vite/src/router/routes/index.ts    个人觉得字节这个admin算是写得比较好的
    About     Help   nbsp; Advertise     Blog     API     FAQ     Solana     3206 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 57ms UTC 00:28 PVG 08:28 LAX 17:28 JFK 20:28
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86