1.6.0 • Published 2 years ago

wscym v1.6.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

介绍

一个脚手架,平时用来做一些自动化的操作 或者生成一个通用的项目 后续慢慢添加好用的功能,持续更新中

用前必看

设计本脚手架的初衷是为了省去重复且无聊的步骤(其实就是想偷懒 😁),脚手架中的一些命令是为了配合动态路由而设计的,当然你可以选择直接使用脚手架生成一个项目,这个项目已经包含了动态路由相关的;如果你是想抱着练习的态度你完全可以使用这些命令,这样会让你加深对动态路由的认识,本套 cms 的设计思想如下(这里提一嘴,每个人的思想和架构是不同的,我们没必要去抵触,选取有用的学习就行了,正所谓多条思路不是多个办法吗~)

  • 所有文件夹都采用一一对应的设计模式

  • 路由,每个路由对应一个文件夹,该文件夹下对应当前路由的路由对象

    • 说一下为什么要这么设计, 因为采用的是自动化生成的方式 可以避免手动的去写每个路由对象,用 ymcli addroutecpns 即可生成,然后通过函数可以取出每个路由对象
    • 那么怎么将每个路由对象取出呢,看以下代码示例
    • // 读取router/main下面的所有ts文件,拿到路由对象,放到localRoutes数组里
      const files: Record<string, any> = import.meta.glob(
        '../router/main/**/*.ts',
        {
          eager: true,
        }
      )
      // 上面会拿到一个数组,然后遍历即可
      for (const file in files) {
        const module = files[file]
        console.log(module.default)
        localRoutes.push(module.default)
      }
  • 下面的文件夹结构就是上面所说的一一对应关系
    • 这样做的好处是在设计自动化操作的时候会很方便
    • 因为所谓的自动化操作其实就是找规律,因为这样的文件架构是有规律的,文件都一一对应,所以才可以做自动化操作
    • 可以看到 router、service(网络请求文件夹)、store、views 之间的关系都是一一对应的
    • main 文件夹就是嵌套路由的父路由
src
├─ App.vue
├─ assets
│    └─ logo.svg
├─ components
├─ main.ts
├─ router
│    ├─ index.ts
│    └─ main
│           ├─ product
│           │    └─ goods
│           │           └─ goods.ts
│           └─ story
│                  ├─ chat
│                  │    └─ chat.ts
│                  └─ list
│                         └─ list.ts
├─ service
│    ├─ index.ts
│    ├─ main
│    │    ├─ main.ts
│    │    ├─ product
│    │    │    └─ goods
│    │    │           └─ goods.ts
│    │    └─ story
│    │           ├─ chart
│    │           │    └─ chart.ts
│    │           └─ list
│    │                  └─ list.ts
│    └─ request
│           ├─ index.ts
│           └─ types.ts
├─ store
│    ├─ index.ts
│    └─ main
│           ├─ main.ts
│           ├─ product
│           │    └─ goods
│           │           └─ goods.ts
│           └─ story
│                  ├─ chart
│                  │    └─ chart.ts
│                  └─ list
│                         └─ list.ts
└─ views
       └─ main
              ├─ main.ts
              ├─ product
              │    └─ goods
              │           └─ goods.ts
              └─ story
                     ├─ chart
                     │    └─ chart.ts
                     └─ list
                            └─ list.ts

生成一个 vue 通用后台项目

介绍

会生成一个 vue 通用后台项目

使用方法

ymcli create project
# project 项目名称
eg: ymcli create demo

自动生成 vue component

使用场景

如果我们需要大量生成重复的组件,不要每个都手写(是可以 copy,但是里面的名称还要手动的更改,好麻烦哦) 比如我们在创建一个后台项目的时候,有多少个菜单就要创建多少个 vue 文件。。。

使用方法

不用担心文件夹不存在哦 如果不存在的话会自动帮你创建的 默认情况下创建的是 VUE3 的组件

  • 不跟地址的情况下会在 ./src/components 下创建当前组件
  #  NavBar 是组件名称
  ymcli addcpn cpnname
  eg: ymcli addcpn NavBar
  • 指定文件夹
  #  NavBar 是组件名称
  ymcli addcpn cpnname --dest url
  eg: ymcli addcpn NavBar --dest ./src/views/home
  • 创建 VUE3+TS 的组件
ymcli addcpn cpnname  type --dest ./src/views/home
eg: ymcli addcpn NavBar  v3t --dest ./src/views/home

type 有哪些

类型解释
v3默认值,创建一个 vue3 的模版
v2创建一个 vu2 的模版
v3t创建一个 vue3+ts 的模版

自动生成一个 route 文件

介绍

该命令会自动生成一个 route 文件,并且会生成该 route 对应的 vue 文件

使用场景

  • 当我们需要动态的注册路由的时候,可以用到该命令
  • router.js 文件是路由的其中一个配置;
  • 可以使用 glob 语法来读取 router 下的所有文件,这样就不用手动的导入 route 路径

使用方法

  #  NavBar 是组件名称
  # type: 如果是js 会创建js路由文件 同时创建vue3的模版
  # type: 如果是ts 会创建ts路由文件 同时创建vue3+ts的模版
  # type 默认是js
  ymcli addroutefile routefilename type --dest url
  eg: ymcli addroutefile demo --dest ./src/router/demo

自动生成一个 dialog 组件

介绍

创建一个基于 ElementUI 的 Vue2 Dialog 组件

使用方法

ymcli adddialog name --dest url
eg: ymcli adddialog ymDialog --dest ./src/views/home

根据文件生成对应的 route 对象和该 route 对应的 vue 组件

介绍

会根据 js/ts 文件生成对应的 route 对象和该 route 对应的 vue 组件,注意导出的时候要使用commonjs的导出方式

使用方法

ymcli addroutecpns filepath type
# filepath:文件地址  type:ts || js 默认type js
eg: ymcli adddialog ./index.ts ts

生成路由文件示例

// name 和 dest 是必要的
// title是非必要的,title的作用是让自己可以知道模块叫啥方便自己阅读
module.exports = [
  {
    name: 'login', // 生成的文件名称
    dest: 'src/views/login', // 生成到拿个文件夹
  },
  {
    name: 'main',
    dest: 'src/views/main',
  },
  {
    title: '模型锤炼',
    name: 'modelTemperingInfo',
    dest: 'src/views/main/modelManager/modelTemperingInfo',
  },
]
1.2.0

2 years ago

1.3.4

2 years ago

1.6.0

2 years ago

1.4.1

2 years ago

1.3.2

2 years ago

1.4.0

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago