2017-09-15 25 views
2

我正在尋找一種方法爲前端開發人員創建一個極簡主義演示程序包,以便他們可以輕鬆地在Elixir/Phoenix api服務器和移動HTML5應用程序或(傳統)webapps不由鳳凰服務。用於連接到Phoenix頻道的簡約html/javascript包

NB產品:Javascript從來就不是我的朋友......

我在做與--no-brunch產生的鳳凰應用測試。 app.jsphoenix.js都位於priv/static/js/

app.js包含:

var socket = null 
// Responds to a click on a "Connect" button on the GUI 
function doConnect() { 
    socket = new Socket("/socket", {params: {token: "abc"}}) 

    socket.connect() 
    let channel = socket.channel("user:anonymous", {}) 
    channel.join() 
    .receive("ok", resp => { console.log("Joined successfully", resp) }) 
    .receive("error", resp => { console.log("Unable to join", resp) }) 
} 
... 
// some other GUI callbacks 

當我把在.html文件:

<script src="<%= static_path(@conn, "/js/phoenix.js") %>"></script 
<script src="<%= static_path(@conn, "/js/app.js") %>"></script> 

我在控制檯中

ReferenceError: Socket is not defined 

在另一方面,如果我刪除包含來自.htmlphoenix.js並放入它在app.jsimport "./phoenix.js",我在控制檯得到SyntaxError: import declarations may only appear at top level of a module

那麼應該去.js文件,以及如何包括他們有一個有效的東西?

也許一個相關的問題是:如何使用沒有早午餐的頻道?

回答

1

我從Elixir Forum得到了答案。 Socket構造函數的調用不應該是socket = new Socket("/socket", {params: {token: "abc"}}),而是socket = new Phoenix.Socket("/socket", {params: {token: "abc"}})

一旦這個到位,一切都很好。

相關問題