我正在研究构建具有大量实时功能的应用程序。
我很快就浏览了频道。凤凰城有一些神奇的代码可以隐藏我的DOM更新逻辑吗?包可能吗?我对编写JavaScript代码来更新/操作DOM不感兴趣。期望Phoenix可以重新渲染模板服务器端并通过通道发送更改的DOM似乎是合理的 - 这是不可能的吗?
如果上面存在,也许存在可以将Phoenix的模板转换为客户端JavaScript视图的东西,这些视图可以采用与Phoenix模板相同的变量,然后渲染视图?这样,Phoenix不必发送整个DOM,只需发送变量。
我问,因为我想写100%的Elixir代码,上面的两个想法似乎是合理的方法。
答案 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代码,上面的两个想法似乎是合理的方法。
好的,但这是不可能的。