rust + gnome.gtk 实现的【图形用户界面】版 [npm( 三 )


{"compUiLib": { // 这个问题唯一标识字符串 。相当于主键 ID 。"when": "subprojects.component", // 条件表达式,当前问题是出现在交互流程中(true),还是被跳过(false) 。"type": "list", // 单选题"message": "请选择 基于哪款【UI 组件库】做二次开发实现组件", // 题面 - 标题"choices": [{ // 题面 - 单选项1"name": "不使用UI组件库", // 【显示用】完整名"short": "无", // 【显示用】简称名 - 暂时尚未使用"value": "none" // 【程序引用】此选项的唯一标识字符串}, { // 题面 - 单选项2"when": "compWhichEnd == 'pcBrowser'", // 此选项是否出现的`when`表达式"name": "Element UI", // 【显示用】完整名"short": "Element", // 【显示用】简称名 - 暂时尚未使用"value": "elementUI" // 【程序引用】此选项的唯一标识字符串}, { // 题面 - 单选项3"when": "compWhichEnd == 'mobileBrowser'", // 此选项是否出现的`when`表达式"name": "Vant", // 【显示用】完整名"short": "vant", // 【显示用】简称名 - 暂时尚未使用"value": "vant" // 【程序引用】此选项的唯一标识字符串}]},}
给"type": ""类型(即,多选题)的每一个多选项添加了mutex: 属性 。"mutex": true表示该选项具有排它性 。若其被选中,则该选项只能被单选 。样板配置如下:
{"subprojects": { // 这个问题唯一标识字符串 。相当于主键 ID 。"type": "checkbox", // 多选题"message": "请选择 工程类型", // 题面 - 标题"required": true, // 是否必填"choices": [{ // 题面 - 多选项1"name": "PC浏览器-管理界面", // 【显示用】完整名"short": "中后台", // 【显示用】简称名 - 暂时尚未使用"value": "admin", // 【程序引用】此选项的唯一标识字符串 。比如,subprojects.admin"checked": false // 初始选中状态}, { // 题面 - 多选项2"name": "本地 H5 插件", // 【显示用】完整名"short": "移动插件", // 【显示用】简称名 - 暂时尚未使用"value": "app", // 【程序引用】此选项的唯一标识字符串 。比如,subprojects.app"checked": false // 初始选中状态}, { // 题面 - 多选项3"name": "组件/模块/微前端应用", // 【显示用】完整名"short": "组件/模块/微前端", // 【显示用】简称名 - 暂时尚未使用"value": "component", // 【程序引用】此选项的唯一标识字符串 。比如,subprojects.component"checked": false, // 初始选中状态"mutex": true // 是否为单选}, { // 题面 - 多选项3"name": "RUST 语言 WEB 字节码 NPM 模块", // 【显示用】完整名"short": "RUST + WASM + NPM", // 【显示用】简称名 - 暂时尚未使用"value": "wasm", // 【程序引用】此选项的唯一标识字符串 。比如,subprojects.wasm"checked": false, // 初始选中状态"mutex": true // 是否为单选}, { // 题面 - 多选项4"name": "RUST 语言原生 GUI 应用", // 【显示用】完整名"short": "RUST + GTK3 APP", // 【显示用】简称名 - 暂时尚未使用"value": "rust_gui", // 【程序引用】此选项的唯一标识字符串 。比如,subprojects.rust_gui"checked": false, // 初始选中状态"mutex": true // 是否为单选}]},}
【回答结果】json文件
首先,它会被输出至和输入文件相同的文件夹内 。
其次,它全方位地抄袭了 的部分 。
最后,补充说明:
调用·动态链接库
注意:
同步接口调用
const fs = require('fs');const ffi = require('ffi');const ref = require('ref');const path = require('path');const util = require('util');// 准备【问卷配置】`json`文件const homeDir = path.resolve('target/setup-lib');const questionsFile = path.join(homeDir, 'assets/prompt-manifest.json');const readFile = util.promisify(fs.readFile);readFile(questionsFile, {encoding: 'utf8'}).then(questions => {// 加载 DLLconst dllFile = path.join(homeDir, 'bin/scaffold_wizard.dll');const dllDir = path.dirname(dllFile);const scaffoldWizard = ffi.Library(dllFile, {inquire: ['string', ['string', 'string', 'string']],});// 调用 DLL// inquire(...) 一共有三个输入参数// (1) JSON 格式字符串,包括了【问卷配置】// (2) 被加载 DLL 文件所在的目录 。以此,来寻找 assets\images 目录 。// (3) log4rs 的配置文件路径 。传一个空指针,表示关闭日志功能 。// 输出返回值是 JSON 格式字符串,包括了【回答结果】const answers = scaffoldWizard.inquire(questions, dllDir, ref.NULL_POINTER);console.info('被收集的答案包括', answers);});