背景介绍

一般而言,大多数框架都会提供Cli终端工具,用于通过命令行执行一些工具类脚本

CabloyJS提供的Cli终端工具却与众不同。更确切的说,CabloyJS提供的是Cli终端引擎,由一套Cli终端运行机制+众多命令集组成。CabloyJS是一个基于模块化体系的全栈框架,因此,命令集也由具体的模块提供。因此,我们可以通过安装各种模块来动态添加可以运行的命令集,从而让CabloyJS的Cli终端变得无比强大、功能也无比丰富

特点

  1. 可无限扩充:由于是通过安装模块来提供命令集,因此可以无限扩充

  2. 同时支持开发环境生产环境:当我们在命令行输入指令后,系统会自动调用后端服务的API接口,执行具体的脚本逻辑。而后端服务既可以是在本地运行的开发服务,也可以是在远程运行的生成环境

  3. 简化系统管理运维工作:正是由于Cli终端可以用于生产环境,所以许多后台管理工作都可以通过API接口暴露出来,从而可以直接通过命令行进行驱动

  4. 完善的权限控制:后端服务暴露的所有API接口都使用资源授权机制进行控制,Cli终端通过开放认证Token进行受控访问

如何使用

Cli终端的使用规范如下:

$ npm run cli [command] [args] -- [options]

- command

  1. 命名规范:由于command由业务模块提供,为了进一步规范管理,在业务模块内部还将提供的commands进行分组。因此,command命名规范如下:
moduleName:groupName:commandName

比如,模块a-clibooster提供了一个分组create,分组create提供了一个module 命令,那么,完整的command命名就是:a-clibooster:create:module

  1. 特殊约定:为了简化command的输入,特别做了如下约定:

    1. 如果模块名称是a-clibooster,则可以不输入

    2. 如果分组名称是default,则可以不输入

举例如下:

全称 简称
a-clibooster:default:list ::list
a-clibooster:create:module :create:module
test-party:default:demo test-party::demo

- args

命令后是否可以跟随参数,跟随多少参数,由具体的命令决定,例如:

# 安装模块test-flow和test-note
$ npm run cli :store:sync test-flow test-note

- options

命令后是否可以跟随选项,跟随多少选项,也由具体的命令决定,例如:

# 向套件test-suite1添加模块test-module1
$ npm run cli :create:module test-module1 -- --suite=test-suite1

- help

如果我们不知道如何使用某个命令,可以直接打印出帮助信息,例如

$ npm run cli :create:module -- --help

- version

还可查询某个命令的版本号,例如:

$ npm run cli :create:module -- --version

- 列出命令

如果要查询当前系统一共支持多少命令,可以按如下操作:

# 列出所有命令
$ npm run cli ::list
# 列出模块test-party提供的命令
$ npm run cli ::list -- --module=test-party
# 列出模块a-clibooster内create分组提供的命令
$ npm run cli ::list -- --module=a-clibooster --group=create

内置命令

CabloyJS通过模块a-clibooster内置了大量常用的命令,具体如下:

命令 描述
::list 列出所有命令
:token:add 添加开放认证Token
:token:delete 删除开放认证Token
:token:list 列出所有开放认证Token
:tools:babel 编译JS文件
:tools:icons 处理图标模块
:create:suite 新建套件
:create:module 新建模块
:create:atom 新建原子类型
:create:controller 新建控制器(包括Route、Controller、Service一套文件)
:store:sync 安装来自Cabloy商店的套件/模块
:store:publish 将本地开发的套件/模块发布到Cabloy商店

简写命令

CabloyJS还提供了更多简写命令,可以亲自体验一番,一定会显著提升开发效率

$ npm run cli
$ npm run cli :
$ npm run cli ::
$ npm run cli :default:
$ npm run cli :create:
$ npm run cli test-party:
$ npm run cli test-party::
$ npm run cli test-party:default:

如何创建Cli命令

如果我们想创建自己的Cli命令,也非常简便,参见文档:如何创建Cli命令

相关链接

且看这个Node全栈框架,实现了个Cli终端引擎,可无限扩充命令集的更多相关文章

  1. 绝版Node--Sequlize搭建服务(Node全栈之路)

    绝版Node--Sequlize搭建服务(Node全栈之路) 参考资料:https://itbilu.com/nodejs/npm/VkYIaRPz-.html 准备环境:Mysql,Node 前沿: ...

  2. 分享一款自带工作流引擎的NodeJS全栈框架,接单快手、创业神器

    CabloyJS是什么 CabloyJS是一款自带工作流引擎的Node.js全栈框架, 接单快手.创业神器, 基于koa + egg + vue + framework7 + mysql 在线演示 场 ...

  3. Jhipster 一个Spring Boot + Angular/React 全栈框架

    Jhipster     一个Spring Boot + Angular/React 全栈框架: https://www.jhipster.tech/

  4. 全栈框架mk-js

    今天听朋友说,才知道原来还有全栈框架这么一说. 厉害了. meteor EggBorn.js mk-js cordova 记录下,后面研究研究.

  5. 绝版Node--Sequlize搭建服务(Node全栈之路 二)

    在Node全栈之路(一),也就是上篇文章中,我们讲到了sequlize的基本增删该查,这篇文章,我们在上篇文章的基础上继续探讨,讲一下关于sequlize创建的表之间的对应关系 参考资料:https: ...

  6. 你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦

    你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦

  7. Vue、Node全栈项目~面向小白的博客系统~

    个人博客系统 前言 ❝ 代码质量问题轻点喷(去年才学的前端),有啥建议欢迎联系我,联系方式见最下方,感谢! 页面有啥bug也可以反馈给我,感谢! 这是一套包含前后端代码的个人博客系统,欢迎各位提出建议 ...

  8. vue3+node全栈项目部署到云服务器

    一.前言 最近在B站学习了一下全栈开发,使用到的技术栈是Vue+Element+Express+MongoDB,为了让自己学的第一个全栈项目落地,于是想着把该项目部署到阿里云服务器.经过网上一番搜索和 ...

  9. FKP,一套全栈框架,基于react、webpack、koa1、babel

    FKP-REST是一套前后端分离,基于javascript的全栈实现,基于node的高性能,易部署性及javascript前后端语言的一致性,学习成本,时间成本及项目快速启动等等方面,FKP都是一种不 ...

随机推荐

  1. SpringMVC获取请求参数-POJO类型参数

    1.Controller中的业务方法的POJO参数的属性名与请求参数一致,参数值会自动映射匹配 1.创建POJO类 public class User { private String usernam ...

  2. Python-初见

    目录 概述 关键字 标准数据类型 Number String List Tuple Set Dictionary 删除对象 数据类型转换 推导式 运算符 迭代器与生成器 迭代器 生成器 函数 参数传递 ...

  3. 企业应用架构研究系列二十七:Vue3.0 之环境的搭建与Vue Antd Admin探索

    开发前端需要准备一些开发工具,这些工具怎么安装就不详细描写了,度娘一些很多很多.主要把核心的开发工具列表一些,这些资源也是非常容易找到和安装的. Node 安装:https://nodejs.org/ ...

  4. Leetcode78/90/491之回溯中的子集问题

    回溯之子集问题 子集问题和组合问题特别像 Leetcode78-子集 给你一个整数数组 nums ,数组中的元素 互不相同 .返回该数组所有可能的子集(幂集) 解集 不能 包含重复的子集.你可以按 任 ...

  5. 帝国CMS后台采集关键字的方法

    小伙伴们知道帝国CMS后台的采集功能是不能采集关键字的,那么老墨今天给大家说一个变通方法,让后台能采集关键字!方法如下: 1.系统设置--管理数据表--管理字段--增加字段(字段名:keywords字 ...

  6. NodeJs学习日报day7——简单中间件

    const express = require('express') const app = express() const mw = function(req, resp, next) { cons ...

  7. 2021.08.10 Euler函数总结

    2021.08.10 Euler函数总结 知识: 记 φ(n) 表示在 [1,n] 中与 n互质的数的个数. 1.p为质数,则 \[φ(p^l)=p^l-p=p^{l-1}(p-1) \] 注:每p个 ...

  8. Spring 源码 (2)Spring IOC 容器 前戏准备工作

    Spring 最重要的方法refresh方法 根据上一篇文章 https://www.cnblogs.com/redwinter/p/16141285.html Spring Bean IOC 的创建 ...

  9. 【面试普通人VS高手系列】什么叫做阻塞队列的有界和无界

    昨天一个3年Java经验的小伙伴私信我,他说现在面试怎么这么难啊! 我只是面试一个业务开发,他们竟然问我: 什么叫阻塞队列的有界和无界.现在面试也太卷了吧! 如果你也遇到过类似问题,那我们来看看普通人 ...

  10. 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 ... 基于. ...