Phoenix 中的静态 HTML 页面
Static HTML page in Phoenix
我正在尝试为 Elm 构建一个 JSON 后端。我只想提供一页 - elm.html、一个 js 文件 - Main.js - 和一个 css 文件。
我尝试了 但是没有足够的帮助像我这样的新手。
所以现在我有 router.ex
scope "/", JwtExample do
pipe_through :browser # Use the default browser stack
get "/elm", RootController, :index
get "/", PageController, :index
end
# Other scopes may use custom stacks.
scope "/api", JwtExample do
pipe_through :api
resources "/users", UserController, except: [:new, :edit]
end
这个控制器
defmodule JwtExample.RootController do
use JwtExample.Web, :controller
plug :action
def index(conn, _params) do
redirect conn, to: "/elm.html"
end
end
我的文件在 web/static
和 priv/static
但是当我浏览到 /elm 时,我得到
no route found for GET /elm.html (JwtExample.Router)
好的,所以根据 psantos 的回答,我需要将 lib/endpoint.ex 更改为阅读
plug Plug.Static,
at: "/", from: :jwt_example, gzip: false,
only: ~w(css fonts images js favicon.ico robots.txt elm.html)
这里有一个解决方案,它也为对根 url 的请求的静态页面提供服务,即。 e. https://myapp.test/:
这是一个将请求映射到 index.html 根路径的解决方案,带有一个短功能插件,可以添加到您的 endpoint.ex
而无需控制器。它通过定义一个简短的 Plug 函数来更改请求的路径来工作。我希望与在控制器中执行它相比,在端点中执行它会更快一些。
def redirect_index(conn = %Plug.Conn{path_info: []}, _opts) do
%Plug.Conn{conn | path_info: ["elm.html"]}
end
def redirect_index(conn, _opts) do
conn
end
plug :redirect_index
# This is Phoenix's standard configuration of Plug.Static with
# index.html added.
plug Plug.Static,
at: "/", from: :phoenix_elm_starter_template, gzip: false,
only: ~w(css fonts elm.html images js favicon.ico robots.txt)
请注意,在生产中,您通常会在应用程序服务器层处理静态资产,可能根本不会访问 Phoenix。
我正在尝试为 Elm 构建一个 JSON 后端。我只想提供一页 - elm.html、一个 js 文件 - Main.js - 和一个 css 文件。
我尝试了
所以现在我有 router.ex
scope "/", JwtExample do
pipe_through :browser # Use the default browser stack
get "/elm", RootController, :index
get "/", PageController, :index
end
# Other scopes may use custom stacks.
scope "/api", JwtExample do
pipe_through :api
resources "/users", UserController, except: [:new, :edit]
end
这个控制器
defmodule JwtExample.RootController do
use JwtExample.Web, :controller
plug :action
def index(conn, _params) do
redirect conn, to: "/elm.html"
end
end
我的文件在 web/static
和 priv/static
但是当我浏览到 /elm 时,我得到
no route found for GET /elm.html (JwtExample.Router)
好的,所以根据 psantos 的回答,我需要将 lib/endpoint.ex 更改为阅读
plug Plug.Static,
at: "/", from: :jwt_example, gzip: false,
only: ~w(css fonts images js favicon.ico robots.txt elm.html)
这里有一个解决方案,它也为对根 url 的请求的静态页面提供服务,即。 e. https://myapp.test/:
这是一个将请求映射到 index.html 根路径的解决方案,带有一个短功能插件,可以添加到您的 endpoint.ex
而无需控制器。它通过定义一个简短的 Plug 函数来更改请求的路径来工作。我希望与在控制器中执行它相比,在端点中执行它会更快一些。
def redirect_index(conn = %Plug.Conn{path_info: []}, _opts) do
%Plug.Conn{conn | path_info: ["elm.html"]}
end
def redirect_index(conn, _opts) do
conn
end
plug :redirect_index
# This is Phoenix's standard configuration of Plug.Static with
# index.html added.
plug Plug.Static,
at: "/", from: :phoenix_elm_starter_template, gzip: false,
only: ~w(css fonts elm.html images js favicon.ico robots.txt)
请注意,在生产中,您通常会在应用程序服务器层处理静态资产,可能根本不会访问 Phoenix。