Atomプラグインの開発プロセスを詳しく解説
Atom コンポーネントを最初から開発するにはどうすればよいですか?次の記事では、Atom プラグインの開発プロセスを紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
atom の使い方チュートリアル 」
私は最近 Atom を使ってブログを書くことが多いのですが、そのときに発見しました。非常に深刻な問題です。 。 写真をアップロードする方法はありません。たとえば、ファイルを直接コピー/ペーストしてアップロードすることができます。 ただし、Atom では同様のプラグインが見つかりませんでした。最も近いプラグインでは、ファイルを手動で選択してアップロードする必要があります。 この操作手順は面倒なので、自分でプラグインを書いて使ってください。 完成したプラグインのダウンロード アドレス: https://atom.io/packages/atom-image-uploader計画まず、これを渡したい場合は、copy ファイルを直接 Atom に
paste してアップロード操作を完了します。
確認後、レンガの移動を開始します。
Atom は
Electron アプリケーションであるため: https://electronjs.org
で開発されたデスクトップ アプリケーションなので、フロントエンドとしては素晴らしいものです。 まず
Atom
の公式ドキュメントを参照して、プラグインの作成に関連する操作を確認しましょう。 まず、
Atom
でコマンド パネルを開き、次にEnter Generate Package
<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/image/299/146/639/160707538187362Atomプラグインの開発プロセスを詳しく解説" class="lazy" title="160707538187362Atomプラグインの開発プロセスを詳しく解説" alt="Atomプラグインの開発プロセスを詳しく解説">
Enter キーを押すと、ダイアログ ボックスが表示されます。作成するパッケージの名前を入力します。
の作成を完了します。
はデフォルト ファイルのセットを生成し、新しいウィンドウを開きます。 プロジェクト構造
生成されたプラグイン ディレクトリは次のとおりです。
. ├── keymaps │ └── first-package.json ├── lib │ ├── first-package-view.js │ └── first-package.js ├── menus │ └── first-package.json ├── package.json ├── spec │ ├── first-package-spec.js │ └── first-package-view-spec.js └── styles └── first-package.less
keymaps
ここでは、監視するショートカット キーを設定でき、カスタム ショートカット キーを設定して、プラグインの動作の一部をトリガーできます。
{ "atom-workspace": { "ctrl-alt-o": "first-package:toggle" } }
ここにさまざまなカスタマイズされたショートカット キーを追加できます。
Value
は次のように定義されます: パッケージ名: トリガーされたイベント名
注意してください:
ここで設定されたショートカット キーにはスコープの概念もあります。それは、
JSON
の外側の key
です。 atom-workspace
は、Atom
で有効になることを意味します。 atom-text-editor
は、テキスト エディターの範囲内でのみ有効になることを意味します。
Atom 公式ドキュメント
lib
これは、プラグインのメイン コードが保存される場所です。
デフォルトでは、- ##package.js
-
デフォルトのプラグインによって生成されたメイン エントリ ファイルはここを指します。
エントリ ファイルは JSON
- activate
- : このメソッドは、
Package
##deactivateがアクティブ化されたときに実行されます。関数のシグネチャは、渡される
stateパラメーターを受け入れることを示しています
Serializeメソッドによって渡されます (実装されている場合)
: - Package
のときにトリガーされるメソッドこれら 2 つのメソッドは、
として理解できます。 # : つまり、上記のメソッドは、次回のアクティブ化後に使用するReact## の
componentWillMountおよび
componentWillUnmountserialize
JSON - オブジェクトを返すことができます。
対応するショートカット キーがトリガーされたときに実行されるメソッドショートカット キーに対応するイベント名をカスタマイズします: 毎回
Package -
これには、アプリケーション メニューと編集領域メニューの構成が保存されますbar filemenus
{ "context-menu": { "atom-text-editor": [ { "label": "Toggle first-package", "command": "first-package:toggle" } ] }, "menu": [ { "label": "Packages", "submenu": [ { "label": "first-package", "submenu": [ { "label": "Toggle", "command": "first-package:toggle" } ] } ] } ] }
context-menu
の対応する要素は、対応する領域で右クリックがトリガーされると表示されます。 menu は Atom
メイン メニュー バーに表示されます: 同様に、
text-editor
workspace という 2 つの環境を区別します。
spec
いくつかのテスト ケースがここに保存されています。
Package
<h3 id="styles">styles</h3>
<p>如果<code>Package
有很多View
要展示的话,可以在这里编写,默认使用的是Less
语法。
由于我们只做一个C/V
的操作,不会涉及到界面,所以styles
直接就删掉了。
开始搬砖
大致结构已经了解了,我们就可以开始搬砖了。
因为是一个Electron
应用,所以我们直接在Atom
中按下alt + command + i
,呼出我们熟悉的控制台界面。
Atom
是不会把Electron
的各种文档重新写一遍的,所以我们现在控制台里边试一下我们的猜测是否正确。
一些想要的东西是否存在。
经过验证确定了,Electron
的clipboard
对象可以直接在Atom
中使用,这就很开心了。
require('electron').clipboard.readImage().toPng()
这样我们就拿到剪切板中的图片数据了,一个二进制的数组对象。
我们在触发Paste
操作时,从clipboard
中获取,如果剪切板中是图片的话,我们就将它上传并显示到编辑器中。
所以,接下来我们要做的就是:
进行上传图片的操作
将上传后的图片显示到编辑器中
上传图片
上传图片我们选择的是七牛,我们选择七牛来作为图床使用,因为他家提供了10GB的免费存储,灰常适合自己这样的笔记型博客。
但是用他家SDK时发现一个问题。。我将二进制数据转换为ReadStream
后上传的资源损坏了-.-目前还没有找到原因。
所以我们做了曲线救国的方式。
将剪切板中的数据转换为Buffer
然后暂存到本地,通过本地文件的方式来进行上传七牛。
在操作完成后我们再将临时文件移除。
try { let buffer = clipboard.readImage().toPng() let tempFilePath = 'XXX' fs.writeFileSync(tempFilePath, Buffer.from(buffer)) } catch (e) { // catch error } finally { fs.unlink(tempFilePath) // 因为我们并不依赖于删除成功的回调,所以直接空调用异步方法即可 }
将上传后的资源显示到编辑器中
因为考虑到上传可能会受到网络影响,从而上传时间不可预估。
所以我们会先在文件中显示一部分占位文字。
通过全局的atom
对象可以拿到当前活跃的窗口:
let editor = atom.workspace.getActiveTextEditor()
为了避免同时上传多张图片时出现问题,我们将临时文件名作为填充的一部分。
editor.insertText(``, editor)
然后在上传成功后,我们将对应的填充字符替换为上传后的URL就可以了。
editor.scan(new RegExp(placeHolderText), tools => tools.replace(url))
scan
方法接收一个正则对象和回调函数。
我们将前边用到的占位文本作为正则对象,然后在回调将其替换为上传后的url
。
至此,我们的代码已经编写完了,剩下的就是一些交互上的优化。
完成后的效果图:
以及,最后:我们要进行Package
的上传。
上传开发完的Package
首先我们需要保证package.json
中存在如下几个参数:
name
description
repository
我们可以先使用如下命令来检查包名是否冲突。
apm show 你的包名
如果没有冲突,我们就可以直接执行以下命令进行上传了。
apm publish 你的包名
后续的代码修改,只需在该包的目录下执行:
apm publish
一些可选的参数:
-
major
,增加版本号的第一位1.0.0
->2.0.0
-
minor
,增加版本号的第二位0.1.0
->0.2.0
-
patch
,增加版本号的第三位0.0.1
->0.0.2
通过apm help
可以获取到更多的帮助信息。
以上,就是开发一个Atom
插件的完整流程咯。
更多编程相关知识,请访问:编程教学!!
以上がAtomプラグインの開発プロセスを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

4 月 9 日のこのサイトのニュースによると、インテルは本日、Embedded World 2024 で Atom プロセッサーの Amston Lake シリーズを発表しました。 Amston Lake プロセッサは、Intel7 プロセスをベースにしており、シングル チャネル メモリをサポートしており、エッジ指向の Atom x7000RE シリーズやネットワーク指向の x7000C シリーズを含む、Alder Lake-N プロセッサの分岐バージョンとみなすことができます。このサイトでは、2023 年に最大 4 コアの ADL-N アーキテクチャ Atom x7000E プロセッサについて報告しましたが、今日の x7000RE シリーズでは仕様がさらに拡張されています。このプロセッサと 4 コアの x7433RE の両方で、最大 8 コアの Atom x7835RE を選択できます。 32Eを搭載

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用
