我是否正确如果有人为网络浏览器编写了一个Ruby插件并且用户安装了该插件,那么就可以在前端用ruby替换javascript了吗?
这没有插件吗?或者甚至在浏览器端使用除javascript之外的其他语言?
答案 0 :(得分:5)
您可以在Silverlight插件中使用http://ironruby.net/,但我不知道DOM交互是多么容易。
但我 BEG你不要这样做!请使用Open Web Stack解决您的问题 如果你不让你的Ruby世界变得舒适,你不仅会伤害你的用户体验“WTF?为什么我需要Silverlight才能获得这个页面?”但是你也会陷入你的小小的困境中Ruby世界没有学到任何新的和令人兴奋的。
如果您继续学习JavaScript,那对你们两个人来说会更好。
因为记住:“学习是件好事!”
答案 1 :(得分:2)
有一点是A FACT:截至2010年,JavaScript没有线程停止“睡眠”功能(除了只会烧掉CPU周期的那个)。
在发表此评论之前,我已经使用JavaScript至少一年了,我得出的结论是,缺少一个停止线程的睡眠函数是线程相关代码的真正阻止。
缺乏睡眠功能的结果是无法模拟Ruby / C#/ C ++ /等。就像JavaScript中的线程模型一样,这反过来意味着不可能将任何支持线程的语言翻译成JavaScript,无论是什么,除非JavaScript补充了(最好是非CPU周期刻录)睡眠功能。
如果有人浏览,那么可以找到许多注释,说明睡眠功能甚至不是必需的,setTimeout就足够了等等,但我想那些声称没有尝试实现JavaScript中的线程框架。 (想想互斥体,关键部分。我拒绝讨论关键部分/同步对于病例来说是不必要的,其中窗口小部件内容由构成“原子整体”的多个数据组件组成。)
整个DOM模型的第二个显示停止是在背景线中呈现DOM元素的实现。
这是,会发生什么:
在Javascript中: create_my_awsome_widget_in_DOM(); edit_my_awsome_widget_by_editing_DOM_inside_it() if_we_are_lucky_we_reach_here_without_crashing_the_app()
由于DOM是在后台呈现的(读取:在单独的线程中),启动DOM编辑的线程之间将存在争用条件,通过调用create_my_awsome_widget_in_DOM()和DOM呈现。如果渲染线程在JavasSript线程调用edit_my_awsome_widget_by_editing_DOM_inside_it()之前“足够快”来呈现DOM,那么一切正常,但如果是相反的话,则JavaScript开始修改没有的DOM区域( )存在。
本质上,这意味着由于后台DOM渲染,create_my_awsome_widget_in_DOM()和edit_my_awsome_widget_by_editing_DOM_inside_it()以随机顺序执行,如果在create_my_awsome_widget_in_DOM()之前调用edit_my_awsome_widget_by_editing_DOM_inside_it(),应用程序显然会崩溃。
答案 2 :(得分:1)
可能有办法间接地做到这一点。 Here is the original presentation在RubyConf 2008上。主题:
本演讲是关于在Web浏览器中运行ruby的许多途径。我先说说为什么这个好主意。然后,我将简要介绍一下我调查过的每种方法,以及每次遇到的FAIL的不同数量。接下来我将专注于最有前途的竞争者,rubyjs,一个输出javascript的ruby编译器。
项目rubyjs still exists,但似乎已经死了。这个想法可能有点太疯狂了。
答案 3 :(得分:1)
mruby 似乎是在网络浏览器中运行ruby的有趣选项: http://qiezi.me/projects/mruby-web-irb/mruby.html
这不是一个典型的插件,因为它不需要安装,它是运行ruby代码的javascript(从C编译)。
答案 4 :(得分:0)
从技术上讲这是正确的,假设浏览器/插件还提供了广泛的API来处理DOM等。我不知道任何使这成为可能的插件,但这是一个有趣的想法。