热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

最先开辟atom插件(并没有系列)

atom高等用法???除了自定义功用基本没啥好玩,抱着装逼的主意,搜了一波atom插件入门,发明说得太含糊(能够是我太菜),然后翻开了官网的插件文档,细细的浏览起来,凭着糟糕的英语

atom高等用法???除了自定义功用基本没啥好玩,抱着装逼的主意,搜了一波atom插件入门,发明说得太含糊(能够是我太菜),然后翻开了官网的插件文档,细细的浏览起来,凭着糟糕的英语水平也算看懂了也许,干脆就翻译下来(由于搜到的中文atom遨游飞翔手册,插件篇是空的),愿望凭着本身的明白,能写得更浅显。让有心人能看懂官方模版代码。(注重:本文目标不在开辟一个什么什么插件,只通知你怎样举行开辟)

注:下文并没有太多代码,代码发起到你新建一个模版插件(然后你就具有了一切的代码),然后依据下文加深本身的明白,相信你会看懂它。

Atom插件编写指南(官方文档翻译)
  • 运用package-generator
  • ctrl-shift-p 翻开敕令输入框输入package-generator就能够找到该敕令

插件中的package.json文件

  • 基本和 node 的package.json雷同.
  • atom独占的属性:

    • main:你的package的进口js文件途径,假如没有,默许运用index.coffe或许index.js
    • styles: 一个字符串数组,决议款式加载的递次,默许字母递次
    • keymaps: 一个字符串数组,键盘映照的加载递次,默许字母
    • menus: 一个字符串数组,菜单映照递次,默许字母
    • snippet : 字符串数组,默许字母
    • activationCommands : 一个对象,能够分辨触发激活你的包的敕令,键是css挑选器,值是一个字符串敕令数组,只要个中一个敕令在划定的css范围内触发,atom才会加载你的包,假如不指定,你的进口文件的activate()要领会在包加载后挪用,
    • activationHooks: 不是很懂,也许是运用什么语法去诠释剧本(引荐到寓目英文版本)

源代码

  • 假如你想继续atom的行动,你的package应当包括一个单一的[top-level]顶级模块(就是你package.json内里 main 指定的模块),你的代码应当写在lib目次下,然后requiredmain 指定的文件(用官方插件天生的模版中 mian 指定的就是顶级模块) 假如你再package.json 内里没有设置,就会默许认为是 index.js 是主进口;
  • 顶级模块是一个治理你的插件的生命周期的单一对象,不管你的插件创建了多少个视图,增加到哪一个位置,这悉数都有顶级模块治理
  • 顶级模块能够完成下面的要领

    - activate(state): 插件激活时被挪用。假如你完成了 serialize() 接口,它会通报窗口上次的state. 平常用这个接口来初始化插件。
    - initialize(state): (Atom 1.14今后的版本支撑) 与activate() 功用相似,不过被挪用的更早,能够说在一切操纵之前被挪用。 假如你想等环境运转终了了再初始化,请用 activate() 。假如须要在画面组织前实行什么,请用initialize() 。
    - serialize(): 在窗口被封闭的时刻,许可你返回 JSON 序列,来保存当前的状况。你保存的信息,能够通报给activate() 接口,来在下次启动时恢复你的窗口状况。
    - deactivate(): 窗口封闭时会挪用这个接口,假如你的插件正在运用某些资本,或关联着某些文件,请在这里开释他们。

style-sheels

  • 你的款式应当写在styles里,当你的包激活的时刻,在这个目次的任何款式都会被加载,你能够检察atom的ui组件实行styleguide敕令.假如你不须要款式文件保存就好,假如你要指定色彩和大小,请运用主题供应的变量(这里有点贫苦,还要去检察别的的文档).

keymaps

  • 指定快捷键,会coffeeScript 或许 json 语法,一看就懂.

menus

  • context-menu 定义右键菜单,一看就懂

    "context-menu": {
    "atom-text-editor": [
    {
    "label": "Toggle your-name-word-count",
    "command": "your-name-word-count:toggle"
    }
    ]
    }

  • menu 定义导航菜单,同上,有json基本的基本一看就懂。

最先开辟

  • 进口js文件有4个要领,activate(),deactivate(),serialize(),toggle();

    • deactivate(); 开释资本的要领,不要做其他事变。
    • serialize(); 序列化要领,做一些状况保存的事情,不要做其他事变.
    • activate(); 唯一须要激活的要领,在atom加载后会自动实行
  • 主要领的toggle要领不会自动实行,须要手动实行.
  • CompositeDisposable class 注册插件中能够被挪用的敕令.
  • 本例子中toggle要领只是简朴的显现画面与隐蔽画面.

the flow (atom启动流程)

  1. 启动atom
  2. 加载paceage
  3. atom read your package.json
  4. atom loads styles menus keymaps main module
  5. atom finishs loading package
  6. 在某个点,用户触发了你的toggle敕令
  7. atom实行你的激活要领(avtitave);
  8. atom实行toggle要领.
  9. 在某个时刻,用户有触发了你的toggle敕令
  10. atom又实行你的toggle要领
  11. 末了atom会封闭任何你定义的序列化

当你不运用actitaveCommand这个属性时 实行的递次会有所不同

最先修正

  • 继续atomUI 即绘制本身的ui addModalPanel();

    this.modalPanel = atom.workspace.addModalPanel({
    item: this.commentHighlightView.getElement(),
    visible: false
    });

  • 继续ui要领2:你还能够把上面的item 增加到workspace上去;

    • tree view, console debugger, outline view 等等面板都是用这个完成的;
  • const edit = atom.workspace.getActiveTextEditor(); 猎取当前编辑器对象
  • edit.getText(); 猎取一切文本
  • edit.insertText(); 假如选中了文本这个要领会替代文本,假如没有则在光标处增加文本;
  • edit.getSelectedText(); 显著是猎取到挑选到的文本

推荐阅读
  • socket.io是个基于node.js的快平台实时通讯框架。只用不到10行代码,就可以搭建一个简单的多人实时聊天室。先来看看运行后的效果:socket.io多人聊天室只要简单几 ... [详细]
  • 根据时间更改网站背景的脚本。热!
    我在网上找到了它,并以自己的方式对其进行了自定义;作者的功劳就在那里。实际上,这是一个用于更改背景颜色的脚本,并且在我看来& ... [详细]
  • 前端微服务二
    为了解决庞大的一整块后端服务带来的变更与扩展方面的限制,出现了微服务架构(Microservices):微服务是面向服务架构(SOA)的一种变体,把应用程序设计成一系列松耦合的细粒 ... [详细]
  • 为什么JS中,小数运算会出现多位小数?大虾们解读一下,谢谢!
    今天在做制作网站的时候,发现JavaScript的一个“小问题”,就是当两位小数进行运行的时,返回“不正确”的值,得到的数后面多了许多小数位。在看网看到了一篇文章《JS小数运算出现多位小 ... [详细]
  • JS动态生成表格案例 ... [详细]
  • 在这一期的SendMessage函数应用中,我将向大家介绍如何利用消息函数来扩展树型列表(TreeView)控件的功能相信对于树型列表控件大家十分的熟悉, ... [详细]
  • 淘宝http:ip.taobao.cominstructions.php接口说明请求接口(GET):servicegetIpInfo.ph ... [详细]
  • 《ASP.NET MVC 4 实战》 1.3  ASP.NET MVC 3/4的新特性
    本节书摘来自异步社区《ASP.NETMVC4实战》一书中的第1章,第1.3节,作者:【美】JeffreyPalermo,【美】JimmyB ... [详细]
  • 每次用到v-charts我都一阵头疼,因为明明是相同的功能,但是我好像每次用到的解决方法都不一样??每次都是在api中各种查,各种尝试…直到做了个各种数据图形的需求,决定还是好好整 ... [详细]
  • 深度强化学习Policy Gradient基本实现
    全文共2543个字,2张图,预计阅读时间15分钟。基于值的强化学习算法的基本思想是根据当前的状态,计算采取每个动作的价值,然 ... [详细]
  • One Stage目标检测
    在计算机视觉中,目标检测是一个难题。在大型项目中,首先需要先进行目标检测,得到对应类别和坐标后,才进行之后的各种分析。如人脸识别,通常是首先人脸检测,得到人脸的目标框,再对此目标框 ... [详细]
  • FroggerTimeLimit:1000MSMemoryLimit:65536KTotalSubmissions:32257Accepted:10396DescriptionFr ... [详细]
  • 分享_Jenkits搭建芝波分享
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jenkits搭建------芝波分享相关的知识,希望对你有一定的参考价值。   ... [详细]
  • 我正在尝试使用环境变量将DB参数传递给BashOperator,但我找不到任何文档/示例如何使用Jinja模板中的连接。所以我正在寻找类似于变量的东西 ... [详细]
  • fromkeras.modelsimportSequentialfromkeras.layersimportDense,Dropoutfromkeras.layersimp ... [详细]
author-avatar
奉召开博_745
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有