Xterminal和Electerm都是SSH工具,看了下目录结构及文件大小都大差不差,而且界面和操作逻辑也差不太多。搞不明白他们之间有什么关系
Xterminal分为免费版和收费版(收费版又分为年费和永久版),Electerm为免费版本。
1,Xterminal文件目录
├─locales
└─resources
└─app.asar.unpacked
├─dist
│ ├─main
│ ├─preload
│ └─render
│ ├─assets
│ │ └─@ant-design
│ └─scripts
│ └─linux
│ ├─bash
│ │ └─sub
│ │ ├─cpu
│ │ ├─fs_size
│ │ ├─fs_stats
│ │ ├─memory
│ │ ├─network_stats
│ │ ├─os
│ │ ├─process
│ │ └─time
│ └─csh
└─node_modules
├─node-pty
│ ├─build
│ │ ├─deps
│ │ │ └─winpty
│ │ │ └─src
│ │ │ └─Release
│ │ │ └─obj
│ │ │ ├─winpty
│ │ │ │ └─winpty.tlog
│ │ │ └─winpty-agent
│ │ │ └─winpty-agent.tlog
│ │ └─Release
│ ├─deps
│ │ └─winpty
│ │ ├─misc
│ │ │ └─Font-Report-June2016
│ │ ├─ship
│ │ └─src
│ │ ├─agent
│ │ ├─gen
│ │ ├─include
│ │ ├─libwinpty
│ │ ├─shared
│ │ └─unix-adapter
│ ├─lib
│ │ ├─shared
│ │ └─worker
│ ├─scripts
│ └─src
│ ├─shared
│ ├─win
│ └─worker
└─ssh2
├─lib
│ └─protocol
│ └─crypto
│ └─build
│ └─Release
│ └─obj
│ └─sshcrypto
│ └─sshcrypto.tlog
└─util
2,Electerm文件目录
├─locales
└─resources
└─app
├─assets
│ ├─chunk
│ ├─css
│ ├─icons
│ ├─images
│ ├─iTerm2-Color-Schemes
│ └─js
├─common
├─lib
├─node_modules
│ ├─@adobe
│ │ └─css-tools
│ │ └─dist
│ ├─@electerm
│ │ ├─electerm-locales
│ │ │ ├─dist
│ │ │ └─esm
│ │ ├─ssh2
│ │ │ ├─lib
│ │ │ │ └─protocol
│ │ │ │ └─crypto
│ │ │ └─util
│ │ └─strip-ansi
│ │ └─dist
│ ├─@serialport
│ │ ├─binding-mock
│ │ │ └─dist
│ │ ├─bindings-cpp
│ │ │ ├─dist
│ │ │ ├─node_modules
│ │ │ │ ├─@serialport
│ │ │ │ │ └─bindings-interface
│ │ │ │ │ └─dist
│ │ │ │ └─node-addon-api
│ │ │ │ └─tools
│ │ │ ├─prebuilds
│ │ │ │ ├─android-arm
│ │ │ │ ├─android-arm64
│ │ │ │ ├─darwin-x64+arm64
│ │ │ │ ├─linux-arm
│ │ │ │ ├─linux-arm64
│ │ │ │ ├─linux-x64
│ │ │ │ ├─win32-ia32
│ │ │ │ └─win32-x64
│ │ │ └─src
│ │ ├─bindings-interface
│ │ │ └─dist
│ │ ├─parser-byte-length
│ │ │ └─dist
│ │ ├─parser-cctalk
│ │ │ └─dist
│ │ ├─parser-delimiter
│ │ │ └─dist
│ │ ├─parser-inter-byte-timeout
│ │ │ └─dist
│ │ ├─parser-packet-length
│ │ │ └─dist
│ │ ├─parser-readline
│ │ │ └─dist
│ │ ├─parser-ready
│ │ │ └─dist
│ │ ├─parser-regex
│ │ │ └─dist
│ │ ├─parser-slip-encoder
│ │ │ └─dist
│ │ ├─parser-spacepacket
│ │ │ └─dist
│ │ └─stream
│ │ ├─dist
│ │ └─node_modules
│ │ └─@serialport
│ │ └─bindings-interface
│ │ └─dist
│ ├─@yetzt
│ │ ├─binary-search-tree
│ │ │ └─lib
│ │ └─nedb
│ │ ├─benchmarks
│ │ ├─browser-version
│ │ │ ├─browser-specific
│ │ │ │ └─lib
│ │ │ └─out
│ │ ├─lib
│ │ └─test_lac
│ ├─accepts
│ ├─accumulate-stream
│ │ ├─dist
│ │ └─node_modules
│ │ └─ms
│ ├─array-flatten
│ │ ├─dist
│ │ └─dist.es2015
│ ├─asn1
│ │ └─lib
│ │ └─ber
│ ├─async
│ │ ├─dist
│ │ └─internal
│ ├─axios
│ │ ├─dist
│ │ └─lib
│ │ ├─adapters
│ │ ├─cancel
│ │ ├─core
│ │ ├─env
│ │ └─helpers
│ ├─balanced-match
│ ├─bcrypt-pbkdf
│ ├─body-parser
│ │ ├─lib
│ │ │ └─types
│ │ └─node_modules
│ │ ├─bytes
│ │ ├─debug
│ │ │ └─src
│ │ ├─depd
│ │ │ └─lib
│ │ │ ├─browser
│ │ │ └─compat
│ │ └─ms
│ ├─buffer-equal-constant-time
│ ├─bytes
│ ├─child-shell
│ │ ├─dist
│ │ └─node_modules
│ │ └─nanoid
│ │ ├─async
│ │ ├─bin
│ │ ├─non-secure
│ │ └─url-alphabet
│ ├─chownr
│ ├─commander
│ │ ├─lib
│ │ └─typings
│ ├─concat-map
│ ├─content-disposition
│ ├─content-type
│ ├─cookie
│ ├─cookie-signature
│ ├─cors
│ │ └─lib
│ ├─debug
│ │ └─src
│ ├─destroy
│ ├─ecdsa-sig-formatter
│ │ └─src
│ ├─ee-first
│ ├─electerm-sync
│ │ └─dist
│ ├─electron-log
│ │ └─src
│ │ ├─transform
│ │ └─transports
│ │ └─file
│ ├─emitter-component
│ ├─encodeurl
│ ├─escape-html
│ ├─etag
│ ├─eventemitter3
│ │ └─dist
│ ├─express
│ │ ├─lib
│ │ └─node_modules
│ │ ├─debug
│ │ │ └─src
│ │ ├─depd
│ │ │ └─lib
│ │ │ ├─browser
│ │ │ └─compat
│ │ └─ms
│ ├─express-ws
│ │ └─lib
│ ├─fast-deep-equal
│ │ └─es6
│ ├─finalhandler
│ │ └─node_modules
│ │ ├─debug
│ │ │ └─src
│ │ └─ms
│ ├─find-free-port
│ ├─follow-redirects
│ ├─font-list
│ │ └─libs
│ │ ├─darwin
│ │ ├─linux
│ │ └─win32
│ ├─forwarded
│ ├─fresh
│ ├─fs.realpath
│ ├─gist-wrapper
│ │ └─dist
│ ├─gitee-client
│ │ ├─dist
│ │ └─src
│ ├─glob
│ │ └─node_modules
│ │ ├─brace-expansion
│ │ └─minimatch
│ ├─http-errors
│ │ └─node_modules
│ │ └─depd
│ │ └─lib
│ │ ├─browser
│ │ └─compat
│ ├─https-proxy-agent
│ │ ├─dist
│ │ └─node_modules
│ │ └─agent-base
│ │ └─dist
│ ├─iconv-lite
│ │ ├─encodings
│ │ │ └─tables
│ │ └─lib
│ ├─immediate
│ │ ├─dist
│ │ └─lib
│ ├─inflight
│ ├─inherits
│ ├─invert-kv
│ ├─ip
│ │ └─lib
│ ├─ipaddr.js
│ │ └─lib
│ ├─is-docker
│ ├─is-wsl
│ ├─json-deep-copy
│ │ └─dist
│ ├─jsonwebtoken
│ │ ├─lib
│ │ └─node_modules
│ │ ├─lru-cache
│ │ ├─semver
│ │ │ ├─bin
│ │ │ ├─classes
│ │ │ ├─functions
│ │ │ ├─internal
│ │ │ └─ranges
│ │ └─yallist
│ ├─jwa
│ ├─jws
│ │ └─lib
│ ├─kind-of
│ ├─lcid
│ ├─lie
│ │ ├─dist
│ │ └─lib
│ ├─localforage
│ │ ├─build
│ │ │ └─es5src
│ │ │ ├─drivers
│ │ │ └─utils
│ │ ├─dist
│ │ └─src
│ │ ├─drivers
│ │ └─utils
│ ├─lodash
│ │ └─fp
│ ├─media-typer
│ ├─merge-descriptors
│ ├─methods
│ ├─mime-db
│ ├─mime-types
│ ├─minipass
│ ├─minizlib
│ │ └─node_modules
│ │ ├─minipass
│ │ └─yallist
│ ├─mkdirp
│ │ ├─bin
│ │ └─lib
│ ├─ms
│ ├─nan
│ │ └─tools
│ ├─nanoid
│ │ ├─async
│ │ ├─bin
│ │ ├─non-secure
│ │ └─url-alphabet
│ ├─negotiator
│ │ └─lib
│ ├─net
│ ├─node-gyp-build
│ ├─node-powershell
│ │ └─dist
│ ├─node-pty
│ │ ├─build
│ │ │ ├─deps
│ │ │ │ └─winpty
│ │ │ │ └─src
│ │ │ │ └─Release
│ │ │ │ └─obj
│ │ │ │ ├─winpty
│ │ │ │ │ └─winpty.tlog
│ │ │ │ └─winpty-agent
│ │ │ │ └─winpty-agent.tlog
│ │ │ └─Release
│ │ │ └─obj
│ │ │ ├─conpty
│ │ │ │ └─conpty.tlog
│ │ │ ├─conpty_console_list
│ │ │ │ └─conpty_c.EB13FAA4.tlog
│ │ │ └─pty
│ │ │ └─pty.tlog
│ │ ├─deps
│ │ │ └─winpty
│ │ │ ├─misc
│ │ │ │ └─Font-Report-June2016
│ │ │ ├─ship
│ │ │ └─src
│ │ │ ├─agent
│ │ │ ├─gen
│ │ │ ├─include
│ │ │ ├─libwinpty
│ │ │ ├─shared
│ │ │ └─unix-adapter
│ │ ├─lib
│ │ │ ├─shared
│ │ │ └─worker
│ │ ├─scripts
│ │ └─src
│ │ └─win
│ ├─object-assign
│ ├─on-finished
│ ├─once
│ ├─os-locale-s
│ │ ├─cjs
│ │ └─esm
│ ├─p-finally
│ ├─p-queue
│ │ ├─dist
│ │ └─node_modules
│ │ ├─eventemitter3
│ │ │ └─umd
│ │ └─p-timeout
│ ├─p-timeout
│ ├─parseurl
│ ├─path-is-absolute
│ ├─path-to-regexp
│ ├─proxy-addr
│ ├─qs
│ │ ├─dist
│ │ └─lib
│ ├─range-parser
│ ├─raw-body
│ │ └─node_modules
│ │ └─bytes
│ ├─router
│ │ └─lib
│ ├─safe-buffer
│ ├─safer-buffer
│ ├─sax
│ │ └─lib
│ ├─send
│ │ └─node_modules
│ │ ├─debug
│ │ │ ├─node_modules
│ │ │ │ └─ms
│ │ │ └─src
│ │ └─ms
│ ├─serialport
│ │ └─dist
│ ├─serve-static
│ ├─setprototypeof
│ ├─smart-buffer
│ │ ├─build
│ │ └─docs
│ ├─socks
│ │ ├─build
│ │ │ ├─client
│ │ │ └─common
│ │ └─docs
│ │ └─examples
│ │ ├─javascript
│ │ └─typescript
│ ├─socks-proxy-agent
│ │ ├─dist
│ │ └─node_modules
│ │ └─agent-base
│ │ └─dist
│ ├─ssh-config
│ │ └─src
│ ├─statuses
│ ├─stream
│ ├─stylus
│ │ ├─bin
│ │ ├─lib
│ │ │ ├─cache
│ │ │ ├─convert
│ │ │ ├─functions
│ │ │ ├─nodes
│ │ │ ├─stack
│ │ │ └─visitor
│ │ └─node_modules
│ │ └─source-map
│ │ ├─dist
│ │ └─lib
│ ├─tar
│ │ ├─lib
│ │ └─node_modules
│ │ ├─fs-minipass
│ │ │ └─node_modules
│ │ │ └─minipass
│ │ └─yallist
│ ├─telnet-client
│ │ └─lib
│ ├─toidentifier
│ ├─trim-buffer
│ │ └─dist
│ ├─tweetnacl
│ ├─type-is
│ ├─underscore
│ │ ├─amd
│ │ ├─cjs
│ │ └─modules
│ ├─unpipe
│ ├─util-promisifyall
│ ├─utils-merge
│ ├─v8-compile-cache
│ ├─vary
│ ├─wrappy
│ ├─ws
│ │ └─lib
│ └─yallist
├─preload
├─server
└─upgrade
3,xterminal缓存目录:C:\Users***\AppData\Roaming\xterminal
├─blob_storage
│ └─****
├─Cache
│ └─Cache_Data
├─Code Cache
│ ├─js
│ │ └─index-dir
│ └─wasm
│ └─index-dir
├─databases
├─DawnCache
├─Dictionaries
├─GPUCache
├─IndexedDB
│ └─xterminal_._0.indexeddb.leveldb
├─Local Storage
│ └─leveldb
├─logs
├─Network
├─Session Storage
├─WebStorage
└─xterminal-update
4,electerm缓存目录:C:\Users***\AppData\Roaming\electerm
├─blob_storage
│ └─****
├─Cache
│ └─Cache_Data
├─Code Cache
│ ├─js
│ │ └─index-dir
│ └─wasm
│ └─index-dir
├─DawnCache
├─Dictionaries
├─GPUCache
├─Local Storage
│ └─leveldb
├─logs
├─Network
├─Session Storage
├─session_logs
└─users
└─default_user
说明用的框架语言是同一种。
electron都差不多吧