Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


制作你的第一个 Atom 文本编辑器插件

2016-10-15 16:16    评论: 4 收藏: 4    

介绍 Cheerio

我们的下一步涉及使用我们创建好的查询结合 Cheerio(一个服务器端实现的 jQuery)来实现扒页面的功能。

安装 Cheerio

打开你的命令行工具,切换到你的软件包的根目录并执行:

npm install --save cheerio@0.20.0
apm install

实现扒页面的功能

lib/sourcefetch.jscheerio 添加一条引用语句:

import { CompositeDisposable } from 'atom'
import request from 'request'
import cheerio from 'cheerio'

现在创建一个新函数 scrape,它用来提取 StackOverflow HTML 里面的代码片段:

fetch() {
  ...
},

scrape(html) {
  $ = cheerio.load(html)
  return $('div.accepted-answer pre code').text()
},

download(url) {
  ...
}

最后,让我们更改 fetch 函数以传递下载好的 HTML 给 scrape 而不是将其插入到编辑器:

fetch() {
  let editor
  let self = this

  if (editor = atom.workspace.getActiveTextEditor()) {
    let selection = editor.getSelectedText()
    this.download(selection).then((html) => {
      let answer = self.scrape(html)
      if (answer === '') {
        atom.notifications.addWarning('No answer found :(')
      } else {
        editor.insertText(answer)
      }
    }).catch((error) => {
      console.log(error)
      atom.notifications.addWarning(error.reason)
    })
  }
},

我们扒取页面的功能仅仅用两行代码就实现了,因为 cheerio 已经替我们做好了所有的工作!我们通过调用 load 方法加载 HTML 字符串来创建一个 $ 函数,然后用这个函数来执行 jQuery 语句并返回结果。你可以在官方 开发者文档 查看完整的 Cheerio API

测试更新后的软件包

重新加载 Atom 并在一个选中的 StackOverflow URL 上运行 soucefetch:fetch 以查看到目前为止的进度。

如果我们在一个有采纳答案的页面上运行这条命令,代码片段将会被插入到编辑器中:

如果我们在一个没有采纳答案的页面上运行这条命令,将会弹出一个警告通知:

我们最新的 fetch 函数给我们提供了一个 StackOverflow 页面的代码片段而不再是整个 HTML 内容。要注意我们更新的 fetch 函数会检查有没有答案并显示通知以提醒用户。

sourcefetch 教程仓库 查看这一步所有的代码更改。

查看其它分页:

发表评论


最新评论

我也要发表评论

绿色圣光 [Firefox 45.0|GNU/Linux] 2016-10-16 16:31
1
绿色圣光 [Firefox 48.0|Windows 7] 发表于 2016-10-15 16:28 的评论:
等我换台新电脑再学习吧……
2
OneNewLife [Chrome 53.0|Fedora] 发表于 2016-10-15 16:59 的评论:
不用的,装个 Fedora 你就可以重获新生了
哈哈,那台装着Win7的电脑可不是我的。
回复
绿色圣光 [Firefox 45.0|GNU/Linux] 2016-10-16 16:31
1
绿色圣光 [Firefox 48.0|Windows 7] 发表于 2016-10-15 16:28 的评论:
等我换台新电脑再学习吧……
2
OneNewLife [Chrome 53.0|Fedora] 发表于 2016-10-15 16:59 的评论:
不用的,装个 Fedora 你就可以重获新生了
哈哈,那台装着Win7的电脑可不是我的。
回复
OneNewLife [Chrome 53.0|Fedora] 2016-10-15 16:59
1
绿色圣光 [Firefox 48.0|Windows 7] 发表于 2016-10-15 16:28 的评论:
等我换台新电脑再学习吧……
不用的,装个 Fedora 你就可以重获新生了
回复
绿色圣光 [Firefox 48.0|Windows 7] 2016-10-15 16:28
等我换台新电脑再学习吧……
1 回复

热点评论

绿色圣光 [Firefox 48.0|Windows 7] 2016-10-15 16:28
等我换台新电脑再学习吧……
1
返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。