在 Android 上运转 ClojureScript

来源:http://www.boundlesssupremacy.com 作者:win7 人气:99 发布时间:2019-08-31
摘要:在 Android 上运行 ClojureScript 在过去的几天里,笔者有了开辟生涯中最有意义的经验之一, 想在那边跟我们享用。 今天我们曾经让 ClojureScript 可以在 Android 上运维了。不是在二个 WebView里

在 Android 上运行 ClojureScript

在过去的几天里,笔者有了开辟生涯中最有意义的经验之一, 想在那边跟我们享用。

今天我们曾经让 ClojureScript 可以在 Android 上运维了。不是在二个 WebView 里面,亦不是应用像 Cordova 那样的东西,而是实实在在的运转在三个嵌入式的 JavaScript 引擎中。到底爆发了什么?

2020欧洲杯官方投注-2020欧洲杯官方投注网址 1

前不久,大家做了一些职业创设出了八个 iOS 的 ClojureScript REPL 应用,Replete。整个看上去很酷,而相应的 Android 应用就只算勉强能创造出来。不幸的是,笔者的 Android 技巧平平,也不能够立即就上手。

只是,那上边 Tahmid Sadik 的技艺还是能够上得了台面。

Tahmid 能够把UI都串起来,也能将 Rhino 实例化并对JavaScript语句实行测算,但是接下去让引导式的 ClojureScript 运维起来对她来讲可谓是一遍挑衅。

不过在此以前,他必须在她的 app 里将 ClojureScript 指引起来。引导这些词被笔者特别标注,提议她供给用 Google 的 Closure 依赖管理种类把 ClojureScript 运营时运行起来,未有JavaScript,也未有别的的优化(举例 :none 方式),依据必要,能够定义 CLOSURE_IMPORT_SC景逸SUVIPT 碰到变量。要是想富含二个REPL,用这种情势来引进运转时是很主要的。这也为在你的 REPL 包涵源码级的名字空间提供了支撑。

实际,Replete 也亟需做这么些,用到的是 Ambly 的三个职能。笔者本来知道,Replete 是五个单身的 REPL,并无需Ambly。可是自个儿利用了贰个小手段,能够复用这一个意义,让 ClojureScript 运转在 Replete 里运营。

顺手说一下,小编最先是谋算用 React Native 来兑现 Replete 的。结果发掘,使用 React Native 的 ClojureScript 帮忙还为前卫早,而得以指引的 ClojureScript 确实只是最先的功能,要想能够实际专门的学业还亟需做过多着力。所以,对于 Replete,作者或然保持轻易吗,就到底 Goby 也未尝用到。

对于上述的结果,好的少数是无需 React Native 的借助(Android 版还未曾正儿八经公开公布),也从没 Goby 的正视性(只协助 iOS)。Replete 内置的 ClojureScript 极度简洁,使用守旧的 iOS 的 UI,事实评释那对 Tahmid 去做到一样效果的 Android 版很有扶持。

让大家回到轶事的起来:本质上 Tahmid 复制了 Ambly 的 bootstrap 逻辑,根据顺序依次的奉行了在 Rhino 里的 JavaScript 语句。然而时临时的她会遭受有个别想不到的标题,我的回忆中多少个月前也会遇上类似的难题,在切磋过 Ambly 的代码后,笔者给了好几提出。

然后,他基本上能够教导成功 ClosureScriptle。

cljs.core.apply.call(null,cljs.core.inc,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [1], null))

那行正是(apply inc [1])须求绑定的JavaScript代码

接下来Tahmid终于有了2.0。真棒!那应该是一直的首先次,在基于Android的嵌入式的Rhino上跑起来ClojureScript。

接下去,须要尝试用起来reader, analyzer, 和compiler。今后我们来试一下,只须求轻便的选用Replete里的JavaScript,让Android的app实施Replete的read_eval_print函数,参数为字符串 ( 1 2),假如专门的职业寻常,那么恭喜,ClojureScript已经打响运维了。

replete.core.read_eval_print.call(null,'( 1 2)')

且慢,Transit 里试行goog.require('replete.core');的时候出了难点,应该是跟 randomUUID 有关。正剧了,看上去明显还应该有比很多地点须要管理。

而是没什么,Replete 以前一向尝试用不一样的不二诀要加载 analysis 缓存,多谢 Karl Mikkelsen,我们有了贰个可用的版本只利用纯 JavaScript,未有别的借助。把那个用起来未来,在把print回调弄好(那样类似 println 那样的办法就足以干活了),接下去 Tahmid 就透过Slack文告作者:

I got 3
( 1 2) = 3

... 然后不断烦作者,还有恐怕会私行发博客。就这么,教导的 ClojureScript REPL 在 Android 上诞生了!

Tahmid 在界面上包裹了一些东西,修复了 JavaScript/ClojureScript 集成的局地小标题现在就发表了Replicator。

大致正是一场龙卷风雨!

当今,Tahmid 正在用 JavaScriptCore 替换 Rhino,那就没那么快了。

自个儿感到那将使速度提高。那为大家在 Android 上运用 JavaScriptCore 实行业地调换的功力提供一些重大的基本功。

从大图片来看,小编确实认为 ClojureScript 在 Android 上运营相当慢。非常是运用 JavaScriptCore。对于这么些观念的主题材料,能够看看 Bocko 对 Android 的 Vladimir Iakovlev 的端口在起步速度上的距离。

  • 2020欧洲杯官方投注-2020欧洲杯官方投注网址,Clojure   ~14 秒
  • Clojure / Skummet   ~11 秒
  • ClojureScript   ~2 秒

以上是在模拟器上运转的结果,不过,小编照旧认为它显示了 ClojureScript 真正的贯彻了在活动设备上裁减总结延时的承诺。作者觉着是时候让 ClojureScript 活跃起来,用于为运动道具开支应用!

斯洛伐克语原稿:ClojureScript on Android

Android 上运转 ClojureScript 在过去的几天里,笔者有了支付生涯中最有含义的经验之一, 想在此地跟大家大快朵颐。 以往大家早已让 ClojureScript 可...

本文由2020欧洲杯官方投注-2020欧洲杯官方投注网址发布于win7,转载请注明出处:在 Android 上运转 ClojureScript

关键词: 欧洲杯彩票

上一篇:Ubuntu安装OpenSSL

下一篇:没有了

最火资讯