国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

jzzlee / 1780人閱讀

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

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

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

您可以在當(dāng)前目錄中通過(guò)運(yùn)行以下命令啟動(dòng)一個(gè)新的Lua項(xiàng)目:

lapis new --lua

默認(rèn)的 nginx.conf 為應(yīng)用程序讀取一個(gè)名為 app.lua 的文件。lapis new 提供了一個(gè)最基本的結(jié)構(gòu)。

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

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

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

return app

啟動(dòng)服務(wù)器
lapis server

訪問(wèn)http://localhost:8080以查看該頁(yè)面

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

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

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

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

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

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

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

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

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

您可以通過(guò)調(diào)用 get 獲取當(dāng)前配置。它返回一個(gè)簡(jiǎn)單的 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)建基本的頁(yè)面,我們可能會(huì)想要一些更復(fù)雜的東西。 Lapis 支持etlua,一種 Lua 模板語(yǔ)言,允許您在 html 和 文本中插入 Lua 代碼

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

默認(rèn)情況下,Lapisviews/ 目錄中搜索視圖。讓我們?cè)谀抢飫?chuàng)建一個(gè)新的視圖文件index.etlua。我們不會(huì)使用任何 etlua 的特殊標(biāo)記,所以它看起來(lái)像一個(gè)正常的HTML文件。


Hello world

Welcome to my page

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

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

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

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

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

return app

etlua 在默認(rèn)情況下不啟用,您必須通過(guò)調(diào)用應(yīng)用程序?qū)嵗系?enable 方法來(lái)啟用它。

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

運(yùn)行服務(wù)器并在瀏覽器中導(dǎo)航到它應(yīng)該可以顯示出我們渲染的模板。

使用etlua

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

<%lua_code%> 運(yùn)行的Lua代碼塊
<%= lua_expression%> 將表達(dá)式的結(jié)果寫(xiě)入輸出,HTML轉(zhuǎn)義
<%- lua_expression%> 同上,但沒(méi)有HTML轉(zhuǎn)義

在 [etlua指南]() 中了解有關(guān) etlua 集成的更多信息。
在下面的示例中,我們?cè)诓僮髦蟹峙湟恍?shù)據(jù),然后在我們的視圖中打印出來(lái):

-- 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)建布局

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

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





  
  <%= page_title or "My Page" %>


  

Greetings

<% content_for("inner") %>

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

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

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

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

-- the rest of the application...

語(yǔ)法與渲染視圖略有不同。不是為 layout 字段分配模板名稱,而是分配實(shí)際的模板對(duì)象。這可以通過(guò)引入 views.layout 獲得。如上所述,etlua 負(fù)責(zé)將 .etlua 文件轉(zhuǎn)換為L(zhǎng)ua可用的東西。

下一個(gè)

請(qǐng)閱讀[請(qǐng)求和操作]()指南,了解 Lapis 如何路由 HTTP 請(qǐng)求,并讓您對(duì)其進(jìn)行響應(yīng)。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39469.html

相關(guān)文章

  • lapis入門(mén)

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

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

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

    sarva 評(píng)論0 收藏0
  • lapis的異常處理

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

    cucumber 評(píng)論0 收藏0
  • lapis請(qǐng)求處理

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

    Olivia 評(píng)論0 收藏0
  • lapis配置之 lua語(yǔ)法

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

    BaronZhang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<