使用Phoenix实时应用,无需JavaScript

时间:2016-08-12 17:40:04

标签: elixir phoenix-framework

我正在研究构建具有大量实时功能的应用程序。

我很快就浏览了频道。凤凰城有一些神奇的代码可以隐藏我的DOM更新逻辑吗?包可能吗?我对编写JavaScript代码来更新/操作DOM不感兴趣。期望Phoenix可以重新渲染模板服务器端并通过通道发送更改的DOM似乎是合理的 - 这是不可能的吗?

如果上面存在,也许存在可以将Phoenix的模板转换为客户端JavaScript视图的东西,这些视图可以采用与Phoenix模板相同的变量,然后渲染视图?这样,Phoenix不必发送整个DOM,只需发送变量。

我问,因为我想写100%的Elixir代码,上面的两个想法似乎是合理的方法。

4 个答案:

答案 0 :(得分:5)

Drab可能是您正在寻找的图书馆。

  

Drab是Phoenix Framework的扩展库,用于从服务器端访问浏览器的用户界面(DOM对象)。主要优点是消除编写两个应用程序的必要性:一个用于客户端,一个用于后端。所有UI控件现在都可以在后端完成,从而消除了JS和AJAX。

答案 1 :(得分:1)

与此同时,Phoenix LiveView 出现了,它完全符合我在原始问题中的要求:)

答案 2 :(得分:0)

如果要在初始页面加载后更改DOM,则必须在某些时候执行Javascript代码。但这并不意味着你必须用javascript编写代码。您可能想要结帐Elixirscript。它允许您编写可编译为Javascript的Elixir代码。

答案 3 :(得分:0)

一步一步:

  

Phoenix是否有一些神奇的代码可以隐藏DOM更新   来自我的逻辑?一个包可能吗?

没有

  

我对编写JavaScript代码来更新/操作DOM不感兴趣。期望Phoenix可以重新渲染模板服务器端并通过通道发送更改的DOM似乎是合理的 - 这是不可能的吗?

这根本不合理,Phoenix是一个服务器端框架。 phoenix.js只是js应用程序的通信层

  

如果上述情况存在,也许存在可以将Phoenix的模板转换为客户端JavaScript视图的东西,这些视图可以采用与Phoenix模板相同的变量,然后渲染视图?这样,凤凰城不必发送整个DOM,只需要发送变量。

看看你对实时/服务器 - 客户端通信的工作方式有一些基本的误解。

我有一种感觉,你有一个流星背景,所有这些东西都神奇地发生了。如果是这样的话,你应该留在Meteor,因为如果你试图将相同的概念应用于Elixir / Phoenix,它将会像Meteor一样羞耻地羞辱(抱歉那个拖钓)

  

我问,因为我想写100%的Elixir代码,上面的两个想法似乎是合理的方法。

好的,但这是不可能的。