目次
生成されたプラグイン ディレクトリは次のとおりです。
ここでは、監視するショートカット キーを設定でき、カスタム ショートカット キーを設定して、プラグインの動作の一部をトリガーできます。
これは、プラグインのメイン コードが保存される場所です。
context-menu
styles
开始搬砖
上传图片
将上传后的资源显示到编辑器中
上传开发完的Package
ホームページ 開発ツール atom Atomプラグインの開発プロセスを詳しく解説

Atomプラグインの開発プロセスを詳しく解説

Dec 04, 2020 pm 05:54 PM
atom electron javascript

Atom コンポーネントを最初から開発するにはどうすればよいですか?次の記事では、Atom プラグインの開発プロセスを紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

Atomプラグインの開発プロセスを詳しく解説

関連する推奨事項: 「

atom の使い方チュートリアル

私は最近 Atom を使ってブログを書くことが多いのですが、そのときに発見しました。非常に深刻な問題です。 。

写真をアップロードする方法はありません。たとえば、ファイルを直接コピー/ペーストしてアップロードすることができます。

ただし、Atom では同様のプラグインが見つかりませんでした。最も近いプラグインでは、ファイルを手動で選択してアップロードする必要があります。

この操作手順は面倒なので、自分でプラグインを書いて使ってください。

完成したプラグインのダウンロード アドレス: https://atom.io/packages/atom-image-uploader

計画

まず、これを渡したい場合は、

copy ファイルを直接 Atom に paste してアップロード操作を完了します。 確認後、レンガの移動を開始します。

プラグイン開発

AtomElectron アプリケーションであるため: https://electronjs.org

が使用しています## これは #JavaScript

で開発されたデスクトップ アプリケーションなので、フロントエンドとしては素晴らしいものです。 まず 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 キーを押すと、ダイアログ ボックスが表示されます。作成するパッケージの名前を入力します。

Package

の作成を完了します。

Atomプラグインの開発プロセスを詳しく解説

Atom

はデフォルト ファイルのセットを生成し、新しいウィンドウを開きます。 プロジェクト構造

生成されたプラグイン ディレクトリは次のとおりです。

.
├── 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プラグインの開発プロセスを詳しく解説Atom 公式ドキュメント

lib

これは、プラグインのメイン コードが保存される場所です。

デフォルトでは、


    ##package.js
  • package.view という 2 つのファイルが生成されます。 js
  • デフォルトのプラグインによって生成されたメイン エントリ ファイルはここを指します。


エントリ ファイルは Atomプラグインの開発プロセスを詳しく解説JSON

オブジェクトとして表現され、次の関数を実装できます:

    activate
  • : このメソッドは、

    Package がアクティブ化されたときに実行されます。関数のシグネチャは、渡される state パラメーターを受け入れることを示しています Serialize メソッドによって渡されます (実装されている場合)

    ##deactivate
  • :
  • Package

    のときにトリガーされるメソッドこれら 2 つのメソッドは、React## の componentWillMount および componentWillUnmountserialize

    として理解できます。 # : つまり、上記のメソッドは、次回のアクティブ化後に使用する
  • JSON
  • オブジェクトを返すことができます。

    ショートカット キーに対応するイベント名をカスタマイズします: 毎回Package

    対応するショートカット キーがトリガーされたときに実行されるメソッド
  • menus

    これには、アプリケーション メニューと編集領域メニューの構成が保存されますbar file
{
  "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 メイン メニュー バーに表示されます:
同様に、

context-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プラグインの開発プロセスを詳しく解説

Atom是不会把Electron的各种文档重新写一遍的,所以我们现在控制台里边试一下我们的猜测是否正确。
一些想要的东西是否存在。

Atomプラグインの開発プロセスを詳しく解説

经过验证确定了,Electronclipboard对象可以直接在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(`![](${placeHolderText})`, editor)
ログイン後にコピー

然后在上传成功后,我们将对应的填充字符替换为上传后的URL就可以了。

editor.scan(new RegExp(placeHolderText), tools => tools.replace(url))
ログイン後にコピー

scan方法接收一个正则对象和回调函数。
我们将前边用到的占位文本作为正则对象,然后在回调将其替换为上传后的url
至此,我们的代码已经编写完了,剩下的就是一些交互上的优化。

完成后的效果图:

Atomプラグインの開発プロセスを詳しく解説

以及,最后:我们要进行Package的上传。

上传开发完的Package

首先我们需要保证package.json中存在如下几个参数:

  1. name
  2. description
  3. repository

我们可以先使用如下命令来检查包名是否冲突。

apm show 你的包名
ログイン後にコピー

如果没有冲突,我们就可以直接执行以下命令进行上传了。

apm publish 你的包名
ログイン後にコピー

后续的代码修改,只需在该包的目录下执行:

apm publish
ログイン後にコピー

一些可选的参数:

  1. major,增加版本号的第一位1.0.0 -> 2.0.0
  2. minor,增加版本号的第二位0.1.0 -> 0.2.0
  3. patch,增加版本号的第三位0.0.1 -> 0.0.2

通过apm help可以获取到更多的帮助信息。

以上,就是开发一个Atom插件的完整流程咯。

更多编程相关知识,请访问:编程教学!!

以上がAtomプラグインの開発プロセスを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

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

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

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

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

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

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

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

インテル、エッジおよびネットワーキング市場向けに Atom プロセッサーの Amston Lake シリーズを発売 インテル、エッジおよびネットワーキング市場向けに Atom プロセッサーの Amston Lake シリーズを発売 Apr 09, 2024 pm 09:22 PM

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: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

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

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

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

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

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

See all articles