elixir - 将数据从 Phoenix 传递到 Javascript 的最佳实践

标签 elixir phoenix-framework

我看到了 3 种方法。

  • 使用 <%= %><script>*.html.eex
  • 使用 channel 将数据传递给 Javascript
  • 构建 json api

  • #1 似乎是最简单的,但我还没有找到或想出一个好的方法来做到这一点。

    注意:实时更新不是我的要求。

    最佳答案

    我永远不会使用 <script></script>为此,在我的项目中,我有这种模式:

    <!-- Layout -->
    <div id="config"
      data-environment="..."
    ></div>
    

    我总是在主布局中提供当前环境,我有一个 config.js为正确的环境提供正确数据的文件。

    当我需要将一些数据传递给我的 javascript 时,我会做类似的事情:

    <div id="app"
      data-users="..."
      data-zombies="..."
      ...
    ></div>
    

    如果你用一些助手( Elixir 方面)抽象它,你可以这样做:
    <%= App.Helpers.make_html(:app, [users: @users, zombies: @zombies]) %>
    

    在 javascript 方面,当我加载页面时,我只是提取了 data-属性并将它们设置在变量 options 中对于当前 Controller :

    class ZombieController extends Controller
    
      setup: ->
    
        console.log(@options) # I have all the data there.
    
        # I can do 
        zombies = @options.zombies
    

    好吧,这只是一个示例,您应该将其调整为您当前的项目。关键是抽象。

    希望能帮助到你 :)

    关于elixir - 将数据从 Phoenix 传递到 Javascript 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39052160/

    相关文章:

    elixir - 在 Elixir 中生成无限序列

    elixir - Phoenix : Having a JSON and HTML representation of the same resource

    postgresql - 将递归 CTE 与 Ecto 结合使用

    elixir - 如何使用 Phoenix channel 直接回复用户的消息?

    postgresql - mix deps.get 失败(依赖问题)

    testing - 如何为 ExUnit 实现 "assert_difference"

    Elixir:如何作为客户端使用服务器发送的事件流?

    elixir - 如何使用 Elixir 语言将一个模块加载到另一个模块中?

    elixir - 如何跳过特定页面的插件

    elixir - 使用 Phoenix Elixir 渲染指定包含部分