环球要闻:使用 Vue.js 编写命令行界面,前端开发 CLI 的利器
大家好,我是webfansplz[1].继将 Vue 渲染到嵌入式液晶屏[2]后,今天要跟大家分享的是如何将Vue渲染到命令行工具 :).关于命令行工具,大家应该都比较熟悉了,比如vue-cli、Vite等.我们在编写前端应用面向用户时,通常会非常关注用户体验,作为开发者,我们在使用工具时,它给予我们的开发者体验(DX)我们也会十分关注.团队在今年有自研脚手架的计划,作为前端,我就在想是否能有较低成本的研发方案能让团队的小伙伴参与进来,大家可以像编写前端应用一样搞定它.因此,Temir[3]应运而生.
(资料图片)
Temir[4],一个用Vue组件来编写命令行界面应用的工具.开发者只需要使用Vue就可以编写命令行应用,不需要任何额外的学习成本.
<script lang="ts" setup>import { ref } from "@vue/runtime-core"import { TBox, TText } from "@temir/core"const counter = ref(0)setInterval(() => { counter.value++}, 100)</script>组件复制代码 {{ counter }} tests passed
Temir[5]提供了一些基础组件帮助开发者编写与扩展命令行工具:
文本组件 (Text)文本组件可以显示文本,将其样式更改为粗体、下划线、斜体或删除线.
盒子组件 (Box)I am green I am black on white I am white I am bold I am italic I am underline I am strikethrough I am inversed 复制代码
添加一个或多个换行符(\n)。 必须在 沿其包含布局的主轴展开的灵活空间。 作为填充元素之间所有可用空间的快捷方式,它非常有用。 例如,在具有默认伸缩方向(row)的 前面我们提到了开发者体验(DX),在现在的前端工程中,对开发者很有帮助且提效的就是HMR,这么香的东西Temir[6]没有理由不拥有它,话不多说,直接展示: 使用Temir[7]定制化CLI非常简单,我们提供了\@temir/cli[8]帮助你快速构建一个基于Temir[9]的CLI. 你可以通过下载这个 例子[10] 来快速开始,你也可以打开 repl.it sandbox[11]来在线体验和尝试它。 Temir的实现主要得益于Vue3出色的跨平台能力,我们可以通过createRenderer[16] API创建一个自定义渲染器,通过创建宿主环境中对应的Node和Element,并对元素进行增删改查操作. Vue提供了跑在命令行界面的接口,那我们就还缺少一个布局引擎就能把Vue 跑在命令行工具了.Temir使用了Yoga,一款Flexbox布局引擎.使用你在构建浏览器应用时使用过的类似CSS的属性,为你的CLI构建出色的用户界面。 这个项目的灵感来源于ink[17] vite-node[18]为实现HMR提供了强力的支持 文章到这里就结束了,如果我的文章和项目对你有所启发和帮助,请给一个star[19]支持作者 ✌ https://juejin.cn/post/7129665321127903246 The End 》》面试官都在用的题库,快来看看《《 最后不要忘了点赞呦! 祝 2022 年暴富!暴美!暴瘦!
换行组件 (Newline) <script>import { TBox, TNewline, TText } from "@temir/core"</script>
填充组件 (Spacer) <script lang="ts" setup>import { TBox, TSpacer, TText } from "@temir/core"</script>
超链接组件 (Link) <script lang="ts" setup>import { TBox, TText } from "@temir/core"import TLink from "@temir/link"</script>
加载中组件 (Spinner) <script lang="ts" setup>import { TBox, TText } from "@temir/core"import TSpinner from "@temir/spinner"</script>
标签页组件 (Tab) <script lang="ts" setup>import { computed, ref } from "@vue/runtime-core"import { TBox, TText } from "@temir/core"import { TTab, TTabs } from "@temir/tab"const tabs = ["Vue", "React", "Angular", "Solid", "Svelte"]const activeIndex = ref(0)const selectedText = computed(() => tabs[activeIndex.value])</script>
选择组件 <script lang="ts" setup>import TSelectInput from "@temir/select-input"const items = [ { label: "Vue", value: "Vue", }, { label: "Vite", value: "Vite", }, { label: "Temir", value: "Temir", },]function onSelect(value) { console.log("selected", value)}</script>
安装 npm install @temir/core复制代码
使用 <script lang="ts" setup>import { ref } from "@vue/runtime-core"import { TBox, TText } from "@temir/core"const counter = ref(0)setInterval(() => { counter.value++}, 100)</script>
HMR支持 mkdir my-temir-clicd my-temir-clitouch main.tsnpm install @temir/cl# Dev (开发)temir main.ts# Build (打包)temir build main.ts复制代码
相关阅读
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... 环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... 重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... 简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... 焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...