成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

創(chuàng)建Lapis應用程序

jzzlee / 1868人閱讀

摘要:使用創(chuàng)建應用程序生成一個新項目如果您尚未閱讀,請閱讀入門指南,了解有關創(chuàng)建新項目骨架的信息以及,配置和命令的詳細信息。是包含應用程序的常規(guī)模塊。

使用Lua創(chuàng)建Lapis應用程序 生成一個新項目

如果您尚未閱讀,請閱讀入門指南,了解有關創(chuàng)建新項目骨架的信息以及OpenResty,Nginx配置和lapis命令的詳細信息。

您可以在當前目錄中通過運行以下命令啟動一個新的Lua項目:

lapis new --lua

默認的 nginx.conf 為應用程序讀取一個名為 app.lua 的文件。lapis new 提供了一個最基本的結構。

app.lua 是包含應用程序的常規(guī) Lua 模塊。你甚至可以像普通 Lua 解釋器中的任何其他模塊一樣加載該模塊。它看起來像這樣:

-- app.lua
local lapis = require("lapis")
local app = lapis.Application()

app:get("/", function()
  return "Welcome to Lapis " .. require("lapis.version")
end)

return app

啟動服務器
lapis server

訪問http://localhost:8080以查看該頁面

如果要更改端口,我們可以創(chuàng)建一個配置。新建config.lua文件。

在本例中,我們將開發(fā)環(huán)境中的端口更改為9090

-- config.lua
local config = require("lapis.config")

config("development", {
  port = 9090
})

您可以在[配置和環(huán)境指南]()中閱讀有關配置的更多信息。

當運行 lapis server 而沒有其他參數(shù)時,會自動使用和加載development環(huán)境。 (而且文件lapis_environment.lua不存在)

Lapis 在配置中使用少量的字段(如 port ),其他字段可以用來存儲任何你想要的。例如:

-- config.lua
local config = require("lapis.config")

config("development", {
  greeting = "Hello world"
})

您可以通過調(diào)用 get 獲取當前配置。它返回一個簡單的 Lua 表:

-- app.lua
local lapis = require("lapis")
local config = require("lapis.config").get()

local app = lapis.Application()

app:get("/", function(self)
  return config.greeting .. " from port " .. config.port
end)

return app
創(chuàng)建view

現(xiàn)在我們可以創(chuàng)建基本的頁面,我們可能會想要一些更復雜的東西。 Lapis 支持etlua,一種 Lua 模板語言,允許您在 html 和 文本中插入 Lua 代碼

視圖是負責生成 HTML 的文件。通常,您的操作將準備視圖的所有數(shù)據(jù),然后指示它進行渲染。

默認情況下,Lapisviews/ 目錄中搜索視圖。讓我們在那里創(chuàng)建一個新的視圖文件index.etlua。我們不會使用任何 etlua 的特殊標記,所以它看起來像一個正常的HTML文件。


Hello world

Welcome to my page

你會注意到,,和標簽不在那里。視圖通常呈現(xiàn)頁面的內(nèi)部,并且布局負責其周圍的東西。我們將進一步看看布局。

現(xiàn)在讓我們創(chuàng)建呈現(xiàn)我們的視圖的應用程序:

-- app.lua
local lapis = require("lapis")

local app = lapis.Application()
app:enable("etlua")

app:get("/", function(self)
  return { render = "index" }
end)

return app

etlua 在默認情況下不啟用,您必須通過調(diào)用應用程序實例上的 enable 方法來啟用它。

我們使用返回值的 render 參數(shù)來指示在呈現(xiàn)頁面時要使用的模板。在這種情況下,index 是指名為 views.index 的模塊。 etalua 將自己注入到 Luarequire 方法中,因此當模塊 views.index 被加載時,會嘗試讀取和解析文件views/index.etlua

運行服務器并在瀏覽器中導航到它應該可以顯示出我們渲染的模板。

使用etlua

etlua 提供了以下標簽用于將 Lua 代碼注入到模板中:

<%lua_code%> 運行的Lua代碼塊
<%= lua_expression%> 將表達式的結果寫入輸出,HTML轉義
<%- lua_expression%> 同上,但沒有HTML轉義

在 [etlua指南]() 中了解有關 etlua 集成的更多信息。
在下面的示例中,我們在操作中分配一些數(shù)據(jù),然后在我們的視圖中打印出來:

-- app.lua
local lapis = require("lapis")

local app = lapis.Application()
app:enable("etlua")

app:get("/", function(self)
  self.my_favorite_things = {
    "Cats",
    "Horses",
    "Skateboards"
  }

  return { render = "list" }
end)

return app

Here are my favorite things

    <% for i, thing in pairs(my_favorite_things) do %>
  1. <%= thing %>
  2. <% end %>
創(chuàng)建布局

布局是一個多帶帶的共享模板,每個頁面都包含的內(nèi)容。 Lapis 有一個基本的布局讓你使用,但你很可能想替換它的東西而自定義。

我們將在 etlua 中編寫布局,就像我們的視圖。創(chuàng)建 view/layout.etlua





  
  <%= page_title or "My Page" %>


  

Greetings

<% content_for("inner") %>

content_for 函數(shù)是模板中內(nèi)置的特殊函數(shù),它允許您 將數(shù)據(jù)從視圖發(fā)送到布局。 Lapis 將視圖的渲染結果放入名為 inner 的內(nèi)容變量。你會注意到,我們不需要使用任何寫入頁面的 etlua 標簽。這是因為 content_for 有效地將其結果直接放入輸出緩沖區(qū)。

通常在視圖中可用的任何其他變量和幫助函數(shù)也可在布局中使用。

現(xiàn)在布局被編寫,它可以被分配給應用程序:

local app = lapis.Application()
app:enable("etlua")
app.layout = require "views.layout"

-- the rest of the application...

語法與渲染視圖略有不同。不是為 layout 字段分配模板名稱,而是分配實際的模板對象。這可以通過引入 views.layout 獲得。如上所述,etlua 負責將 .etlua 文件轉換為Lua可用的東西。

下一個

請閱讀[請求和操作]()指南,了解 Lapis 如何路由 HTTP 請求,并讓您對其進行響應。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/39469.html

相關文章

  • lapis入門

    摘要:入門是為和編寫的框架。使用來安裝創(chuàng)建一個應用命令行工具附帶了一個命令行工具,可幫助您創(chuàng)建新項目和啟動服務器。在生產(chǎn)環(huán)境中,應當啟用緩存以獲得最佳性能。指令指定一個代碼塊,它將處理與其他不匹配的任何請求。將忽略常規(guī)的二進制文件。 lapis入門 Lapis 是為 Lua 和 MoonScript 編寫的 Web 框架。 Lapis 很有趣,因為它建立在Nginx 發(fā)行的 OpenRest...

    endless_road 評論0 收藏0
  • lapis的配置及環(huán)境

    摘要:配置及環(huán)境被設計于依據(jù)不同環(huán)境載入不同的配置來運行服務器。環(huán)境名稱僅影響加載的配置。例如,這里有一個的配置塊編譯時,首先檢查環(huán)境變量。默認日志記錄位置設置為,在默認的配置中指定。 配置及環(huán)境 Lapis 被設計于依據(jù)不同環(huán)境載入不同的配置來運行服務器。例如,可能您開發(fā)環(huán)境的配置設置為本地數(shù)據(jù)庫的URL,禁用代碼緩存和單個worker。然后,您生產(chǎn)環(huán)境的配置可能設定為遠程數(shù)據(jù)庫的 URL...

    sarva 評論0 收藏0
  • lapis的異常處理

    摘要:的異常處理錯誤的種類區(qū)分兩種錯誤可恢復和不可恢復錯誤。捕獲可恢復的錯誤幫助程序用于包裝一個操作,以便它可以捕獲錯誤并運行錯誤處理程序。相反,使用協(xié)同程序創(chuàng)建一個異常處理系統(tǒng)。 lapis的異常處理 錯誤的種類 Lapis 區(qū)分兩種錯誤:可恢復和不可恢復錯誤。 Lua 的運行時在執(zhí)行期間拋出的錯誤或調(diào)用錯誤被認為是不可恢復的。 (這也包括 Lua 內(nèi)置函數(shù) assert ) 因為不可恢復...

    cucumber 評論0 收藏0
  • lapis請求處理

    摘要:處理函數(shù)的返回值用于渲染輸出。例如,如果不滿足某些條件,我們可以取消操作并重定向到另一個頁面是處理一個常規(guī)動作的返回值,所以同樣的事情你可以返回一個動作,可以傳遞給請求對象每個操作在調(diào)用時會請求對象作為其第一個參數(shù)傳遞。 lapis請求處理 每個被Lapis處理的HTTP請求在被Nginx處理后都遵循相同的基本流程。第一步是路由。路由是 url 必須匹配的模式。當你定義一個路由時,你也...

    Olivia 評論0 收藏0
  • lapis配置之 lua語法

    摘要:配置語法配置示例的配置模塊提供了對遞歸合并的支持。例如,我們可以定義一個基本配置,然后覆蓋更多具體的配置聲明中的一些值這將產(chǎn)生以下兩個配置結果默認值省略您可以在相同的配置名稱上調(diào)用函數(shù)多次,每次將傳入的表合并到配置中。 Lua 配置語法 配置示例 Lapis 的配置模塊提供了對遞歸合并 table 的支持。 例如,我們可以定義一個基本配置,然后覆蓋更多具體的配置聲明中的一些值: --...

    BaronZhang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<