CoffeeScriptnode-firefox 二三事

编者按:正文作者为 Soledad
Penadés
, Sole 在
Mozilla 的 Tech 埃文gelism
团队工作,支持人们在网络上创制神奇的东西。本文首要介绍node-firefox的基本知识,以及它如何扶持你加快Firefox OS 应用开发,由
OneAPM
工程师编译展现。

在 Mozilla
基金会,我们直接从事于寻找简化开发职教员和学生活的艺术。当胸怀抱负的选拔开发者告诉大家初学开放式
Web
应用
很麻烦时,大家便致力于将使用管理器变动为对越多初学者友好的环境,反过来也给
WebIDE
让路。该工具简化了不少业已缓慢而麻烦的表现,比如创造新的选取、下载和装置模拟器或运转和调节应用。

但仍有局地开发者感觉受冷落了:总计机高手!他们早已颇具了遵照 node.js
的创设筑工程具链,职分包含资金优化、代码提醒、或测试运转等。他们也时常选拔像
Browserify
那样的工具,可能照旧都不编写 JavaScript 代码,相反,却倾向于采取CoffeeScript
这样的语言。但是,全数这个好东西都务求您先营造利用或网站,之后才能将其用于你的装备或浏览器中。

自然,大家想让这么些开发职员离开自个儿重视的命令行(或编辑快速键!)转而接纳WebIDE,通过单击按钮来布置应用,然后再重临他们喜爱的编辑器。但是,他们却一如既往回复:大家不爱好点击!我们喜欢极限!

怎么着使 WebIDE 越发便捷?

世家不喜欢
WebIDE,因为它象征上下文不断转变。它并不高速,我们是工程师,假设工程师喜欢一件事的程度抢先创设新的选择,那它就很可能是优化并简化流程。

既然如此大家已经有了营造脚本,只剩余3个手续——部署,就能让我们的运用投入运作时,那也是大家利用
WebIDE 的目标。所以,综上说述难点将是:大家能选择 WebIDE
进行配置吗?以编制程序的点子?

服务器与 actors

每二个 Firefox
运维时都有所谓的远程调节和测试服务器。由于一些显眼的平安原因,私下认可并不启用该服务器,可是当启用时,客户端可与其总是并采纳它的各类成效优势,比如设置使用、访问控制台等。那正是WebIDE
内部所做的作业。

每一种成效都由二个 actor
提供。例如,要是大家想要列出已设置的接纳,那么可以……

  • 首先,找到 webAppsactor

  • 接下来运营 getAll 命令

  • 再然后,得到回应的选拔列表

再有三个例证是设置打包的利用,步骤为:

  • 首先,使用其余库或别的你喜爱的形式缩小应用内容

  • 然后拿走 webApps actor

  • 用压缩文件内容调用 webApps actor 中的 uploadPackage 命令

  • 调用结果即为File actor

  • 用再次回到值 File actor 调用 webApps actor 中的 install 命令

  • 完成!

于是,安装使用的魔法不在 WebIDE
,而是在服务器中!大家可以以编制程序格局利用那类魔法,然而从头塑造二个客户端,建立
TCP
连接并语法解析包,并不是您确实想做的:相反,你想做的是编写制定应用并将其推到设备中运作。

不用干净,因为
node-firefox
能帮你完结这一对象。它不是一串整体的代码,而是一种类 node.js
模块,各样模块执行差别的天职,托管在分其余代码库中,并透露于 npm
注册表
中。只要您要求,你能够在剧本或职责运营器中尽情使用那几个模块,由此,你到底不用离开命令行就能塑造并运营应用了。

行走是金,雄辩是银

说了那般多,未来让大家看看怎么着编写1个能开发银行模拟器的剧本吧!

先是采用 npm 指令在档次中安装模块:

npm install --save node-firefox-start-simulator

上边是写好的脚本:

var startSimulator = require('node-firefox-start-simulator');

startSimulator({ version: '2.2' })

.then(function(simulator) {
 console.log('Listening in port', simulator.port);

});

好啊!只需几行代码,你就能以编制程序方式运行2.2版本的模拟器。假设你不关切版本难题,就不要在startSimulator中流传任何参数,那样就将运维所发现的第二个模拟器:

startSimulator().then(function(simulator) {

 // your code

});

大家还是能透过动图查看那一个进度。下图就显得了经过 node.js
脚本运转模拟器、安装使用和平运动转应用的有所进程:

CoffeeScript 1

该示例使用的代码实际上正是
node-firefox-unistall-app的意味范例。每一个node-firefox模块都包蕴贰个演示文件夹,支持您快捷入门。

如大家早先所提到的,许多转化使用开发的网页开发者想继承利用职分运营器,因而我们也就怎样利用带gulpnode-firefox写了一个演示。

让大家运转那一个default-one职务。那样会运维模拟器、铺排应用,再多点挑衅,还是能循环不断关心CSS
变化。即使您编辑并保存了其他1个运用的样式表,文件监视器会检查和测试其变动并发送新的文本内容到运转时,那样不用闭馆、推进因人而异复启航全套应用就可火速替换样式表。下边包车型的士事例将背景颜色从稳重的血鲜蓝改变成永恒不变的
Paul Rouget
粉红色!

CoffeeScript 2

实时 CSS 重载很适合搭建与试验 UI
界面。不必重载应用并导航到您想做事的切切实实有个别,那样能够省去多量小时——假如当年作者在编制程序安卓应用时也能用那些就好了。

可是大家仍可以做得更好。default-all任务和default-one的效应雷同,但前者是本着系统装置的享有模拟器,因而你能同时看到有着模拟器的
CSS 改变作用:

CoffeeScript 3

噩运的是,模拟器2.1和2.第22中学设有1个题目,它们不可能重载样式表的变更,但这么些标题早已存档并会到消除。

近日大家能做什么样?

当前那套模块可援助你找到运转时在监听的端口找到启航航空模型型拟器连接到运营时;找到安装卸载运行应用,重载样式表

基本原理

你恐怕已经注意到一个情势,然则防止还不够明显,大家正在全力编写制定一些简练的模块。每种模块应仅执行3个动作,重临二个Promise 并尽量减弱使用正视。

小的模块很易通晓、使用并开始展览测试。同样,今后多数 Web API
的宏图目标都以劳务于
Promises
,我们想编写的代码应着眼于今后而不是病故。其余,缩小使用注重的多少也可使新手更易精晓模块,因为要打听的不熟谙的新因素更少了。

最终,由于全数模块的行事措施都如出一辙,全部当您领悟怎么样采纳3个模块后,你就明白了哪些使用剩下的——唯一变化的就是参数和结果。

大好想法(关于大家脚下还不能做到的)

有好多政工大家想清楚现在能还是无法完成,有些人誉为特色,但我们誉为‘理想想法’。

贰个平常出现的事例即 WebCLI:与 WebIDE 相对应,你通过 WebIDE
所做的有着业务都能够经过2个命令行工具来落到实处。作者不断纠结于这多少个视角——“那想法很棒”和“大概大家一贯不须要这些,有3个职分库就够用了”,可是大家就如相比喜欢这几个想法,所以理应没那么差!

还有3个很棒的特色是碰着从命令行运营却夭亡的接纳,能够选用 DevTools
调节和测试程序
。通过命令行运营应用的想法很好,可是命令行调节和测试程序却没那么给力!为何不选拔几个可以的艺术吧?

恐怕,用命令行控制别的浏览器都足以彻底利索,只要透过
Valence
将五头相交换!

终极是作者最钟爱的期待想法:Firefox OS
定制版
。想象一下,如若大家无非编写一个剧本就能创制1个空白 Firefox OS
平板,装上大家爱护的运用和设置,生成全部的 Firefox OS
图像,那么今后我们便可将其闪存到装备上。由于那不是一个二进制大对象而只是八个剧本,所以大家仅可在其函数库中举办发布,其余人可依照版本合成或创办他们友善的
Firefox OS。

哪些落到实处啊?

笔者们面临的题材还有好多,需求过多天地的通力同盟。或然最等比不上的职分是得到更好的多平台支持。近期,大家只好通过网络与运作时开展交互,而不是实际上的装置。别的,除了
Mac OS,对平台的支撑还非凡贫乏。

另一个首要方面是测试。固然大家更早、更多、更频仍地拓展测试,将能检查和测试到像
CSS bug 那样的难点,这一个难题是作者在创造gulp
演示程序时偶然发现的。大家想在多少个阳台上运维那些模块,并让那个模块连接到任何差别的阳台,包罗实际的设备。

当然大家须求更加多模块和越多范例!为了确定保障多个人不会编写同四个模块,大家探究在高级项目难点跟踪器中建议新模块。我们这些盼望看到越来越多的范例,或然更好的范例——使用大家的代码将长存功用钩嵌到其余节点模块中。例如,可经过
firefox-app-validator-manifest模块添加清单验证。

再有,大家照样的内需你们。大家不是你们,因而我们不晓得你们的急需和想法。当然,大家也无法像你们一样选择软件。我们要求你的输入音讯,还必要你们的奉献!

CoffeeScript,咱俩期待你们使用node-firefox创制的成果。即便遭受任何难点,请将难题整治成文书档案发给我们,大概在
irc 跟大家说。大家会在 irc.mozilla.org 中的 #apps 和 #devtools
频道解疑答惑。

致谢

那里要不感激 Nicola Greco 就太不厚道了,
2018年夏季小编指引过她,当时她还在 Mozilla
实习。是他建议了营造个人节点模块的起来设想,那种模块会赞助你付出 Firefox
OS
应用。去看一下他的实习总括报告啊,真的的特别有意思且独具表明性!

相当谢谢全体(极其耐心的) DevToolers:Ryan Stinnet、亚历克斯andre
Poirot、杰夫 格里福s 和 DaveCamp,他们帮忙大家找到远程服务器的主旋律,actors 等等。越发感激 Heather
Arthur
,他编写制定了
firefox-client,使得编写node-firefox的法门比原先更省心舒适。

点击那里查看原来的书文。

OneAPM
是应用品质管理世界的新生领军集团,能扶助公司用户和开发者轻松落成:缓慢的程序代码和
SQL 语句的实时抓取。想阅读愈来愈多技术小说,请访问 OneAPM
官方博客