1. 程式人生 > >使用blessed 開發豐富的cli 應用

使用blessed 開發豐富的cli 應用

blessed 是一個不錯的npm 包,可以幫助我們開發出帶有豐富ui介面的cli 應用,類似的有subzero

測試環境準備

  • 專案結構
├── README.md
├── app.js
├── my-program-icon.png
├── package.json
└── yarn.lock
  • package.json 說明

    主要是依賴以及打包npm 的配置

{
  "name": "blessed-project",
  "version": "1.0.0",
  "main": "index.js",
  "bin": "app.js",
  "license": "MIT",
  "dependencies": {
    "blessed": "^0.1.81"
  },
  "scripts": {
    "start": "node app",
    "build": "pkg ."
  },
  "pkg": {
    "scripts": "app.js"
  },
  "devDependencies": {
    "pkg": "^4.3.4"
  }
}
  • app.js

    簡單的cli 開發程式碼,來自官方文件

var blessed = require('blessed');

// Create a screen object.
var screen = blessed.screen({
  smartCSR: true
});

screen.title = 'blessed test';

// Create a box perfectly centered horizontally and vertically.
var box = blessed.box({
  top: 'center',
  left: 'center',
  width: '50%',
  height: '50%',
  content: 'hello blessed {bold}world{/bold}!',
  tags: true,
  border: {
    type: 'line'
  },
  style: {
    fg: 'white',
    bg: 'magenta',
    border: {
      fg: '#f0f0f0'
    },
    hover: {
      bg: 'green'
    }
  }
});

// Append our box to the screen.
screen.append(box);

// Add a png icon to the box
var icon = blessed.image({
  parent: box,
  top: 0,
  left: 0,
  type: 'overlay',
  width: 'shrink',
  height: 'shrink',
  file: __dirname + '/my-program-icon.png',
  search: false
});

// If our box is clicked, change the content.
box.on('click', function(data) {
  box.setContent('{center}Some different {red-fg}content{/red-fg}.{/center}');
  screen.render();
});

// If box is focused, handle `enter`/`return` and give us some more content.
box.key('enter', function(ch, key) {
  box.setContent('{right}Even different {black-fg}content{/black-fg}.{/right}\n');
  box.setLine(1, 'bar');
  box.insertLine(1, 'foo');
  screen.render();
});

// Quit on Escape, q, or Control-C.
screen.key(['escape', 'q', 'C-c'], function(ch, key) {
  return process.exit(0);
});

// Focus our element.
box.focus();

// Render the screen.
screen.render();

執行

  • 直接使用node
node app
or
yarn start
  • 使用二進位制檔案

    pkg 打包的二進位制檔案

yarn build 
linux && mac
./blessed-project-{linux|mac}
windows
blessed-project-win.exe
  • 效果

說明

使用blessed 我們可以開發出支援豐富介面的cli工具,整合oclif 很更強大,同時也有一個直接可以使用vue react 的外掛,這樣開發就更簡單了

相關推薦

使用blessed 開發豐富cli 應用

blessed 是一個不錯的npm 包,可以幫助我們開發出帶有豐富ui介面的cli 應用,類似的有subzero 測試環境準備 專案結構 ├── README.md ├── app.js ├── my-program-icon.png ├── package.json └── yar

Vue-cli開發多頁面應用

寫在前面,Vue多頁面應用場景: 1.專案很老了後端不願意改介面和配置,前端想嘗試新技術。 2.多頁面可能更多是考慮首屏載入速度,或者SEO等情況,主流方案如SSR。當然這種單頁面也有對應解決方案 點選檢視 迴歸正題 思路:單頁面改成多頁面不就兩個東

unity3d開發的android應用中增加AD系統的詳細步驟

查看 發的 b- sset @override 大小 代碼 nac cal unity3d開發的android應用中增加AD系統的詳細步驟 博客分類: Unity3d unity3d Unity3d已經支持android,怎樣在程序裏增加admob?

Vue2.0 全家桶開發的網頁應用(參照吾記APP)

gis 安裝 str lib 兼容 定義主題 國外 刪除 ces github鏈接 借鑒吾記APP,使用 vue2.0+vue-router+vuex 為主要技術棧,elementui做為ui框架,多模塊 spa 模式,webpack2.0 負責模塊打包,gulp 負責處

Eclipse上開發IBM Bluemix應用程序

col 1.5 技術 buildpack 準備 uem 沒有 online warp 林炳文Evankaka原創作品。轉載請註明出處http://blog.csdn.net/evankaka 摘要:本文主要解說了怎樣使用安裝Eclipse

Android學習探索之Java 8 在Android 開發中的應用

相關 概念 容易 並不是 min etc bstr trac flavor 前言: Java 8推出已經將近2年多了,引入很多革命性變化,加入了函數式編程的特征,使基於行為的編程成為可能,同時減化了各種設計模式的實現方式,是Java有史以來最重要的更新。但是Androi

linux驅動開發之framebuffer應用編程實踐(一)

linux驅動開發之framebuffer驅動 1、framebuffer應用編程 (1)打開設備文件 (2)獲取設備信息 宏定義的命令在/linux/fb.h中 不可變信息FSCREENINFO,使用ioctl參數有FBIOGET_FSCREENINFO宏名,表示用ioctl從

開發整理-Javaweb應用的系統升級功能

兩個 rtc 驗證 source null kill 文件權限 exc 主機   web應用有一個功能菜單是系統升級,通過調用升級腳本,將新發布的war替換原來的tomcat的webapps下的應用,然後停掉tomcate,再重啟tomcate。最初實現就是通過簡單的用在w

HTML5開發移動web應用——SAP UI5篇(7)

function manifest supported 1.3 配置文件 ini 使用 .get return SAPUI5中支持利用Component對組件進行封裝。想封裝一個組件,Component的基本代碼例如以下: sap.ui.define([ "sap

Java 反射在實際開發中的應用

放松 hello set 加載器 glib 應該 throwable tde ffffff   運行時類型識別(RTTI, Run-Time Type Information)是Java中非常有用的機制,在java中,有兩種RTTI的方式,一種是傳統的,即假設在編譯時已

HTML5開發移動web應用——SAP UI5篇(9)

概念 之前 web spa width show 基本 space 宋體 之前我們對於app的構建都是基於顯示的。如今我們來格式化一下,引入很多其它的SAP UI5組件概念。這使得APP的一個界面更有層次性。更像是一個手機應用的界面,而且更好地使用SA

HTML5開發移動web應用—JQuery Mobile(1)

框架 one 樣式 手機 div pre 都是 指定 學習 JQuery Mobile是一個簡單易用的web移動app開發框架。使用它就像使用jQuery一樣,引入必要的文件就可以。 最基礎的jQuery Mobile文件的結構代碼例如以下: <bod

HTML5開發移動web應用——SAP UI5篇(8)

cti 空間 () snippet javascrip oot article rac 構建 本次對之前學習的SAP UI5框架知識進行簡單小結。以及重點部分知識的梳理。 1、在UI5使用過程中,命名空間的概念非常重要。 2、一般的sap組件引用格

HTML <area><map>標簽及在實際開發中的應用

覆蓋 們的 大量 pla ren 創建 lock walk note 之前,我一直以為HTML <area>是一個雞肋HTML,估計到了HTML5時代會被廢棄的命。但是,最近一查資料,乖乖了個咚,不僅沒被廢棄,反而發展了,新增了一些標簽屬性,例如rel,medi

使用MyEclipse開發Java EE應用:用XDoclet創建EJB 2 Session Bean項目(三)

str 文件存儲 字段 des 管理 新版 enter ecif class MyEclipse限時秒殺!活動火熱開啟中>> 【MyEclipse最新版下載】 三、配置XDoclet支持的項目 默認情況下,MyEclipse EJB項目未配置使用XDocle

使用MyEclipse開發Java EE應用:EJB項目開發初探(上)

編輯器 應用服務器 工具 xdoclet 屬性 ctu xdoc 直接 project 你開學,我放價!MyEclipse線上狂歡繼續!火熱開啟中>> 【MyEclipse最新版下載】 一、MyEclipse EJB開發工具 Enterprise Java

使用MyEclipse開發Java EE應用:EJB項目開發初探(下)

計時 包含 devel 開啟 有關 中文 ren 向導 all 你開學,我放價!MyEclipse線上狂歡繼續!火熱開啟中>> 【MyEclipse最新版下載】 三、EJB 3.x項目中的持久性支持 當創建EJB 3.x項目時,作為選項您可以添加JPA支持。

Spring在web開發中的應用

ica ati spring 配置 還需要 erl 常量 tlist web.xml list (1)在 web 項目中要使用 spring 需要導入一個 jar 包: spring-web-4.2.4.jar包 (2)在 web.xml 文件中配置 Listener 1

[轉]Java 反射在實際開發中的應用

擴展 pub 多對一 容器 redis 連接 一起 odin mapping 一:Java類加載和初始化 1.1 類加載器(類加載的工具) 1.2 Java使用一個類所需的準備工作 二:Java中RTTI   2.1 :為什麽要用到運行時類型信息

用AngularJS開發下一代Web應用pdf

san ren 化工 body 下一代 安裝 關系 資源 元素 下載地址:網盤下載 內容簡介 · · · · · ·AngularJS是一款來自Google的前端JS框架,它的核心特性有:MVC、雙向數據綁定、指令和語義化標簽、模塊化工具、依賴註入、HTML模板,以及