<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Vanilla高性能 Web 應(yīng)用開發(fā)框架

          聯(lián)合創(chuàng)作 · 2023-10-01 14:25

          香草/Vanilla

          香草/Vanilla是一個(gè)基于Openresty實(shí)現(xiàn)的高性能Web應(yīng)用開發(fā)框架.

          Vanilla

          郵件列表

           

          安裝

          目前Vanilla支持兩種安裝方式

          • Make(推薦使用此種)

          • Luarocks

          make install安裝須知

          Vanilla 支持的選項(xiàng)都提供了默認(rèn)值,如果你的環(huán)境與默認(rèn)值不一樣,請configure時(shí)指定成你自己的。

          特別注意選項(xiàng)--openresty-path,默認(rèn)為/usr/local/openresty,請確保設(shè)置正確。

          可以在源碼目錄下執(zhí)行configure --help來查看安裝選項(xiàng)的使用方法。

          下面是一個(gè)簡單的安裝示例:

          ./configure --prefix=/usr/local/vanilla --openresty-path=/usr/local/openresty
          
          make install (如果沒有C模塊【目前支持lua-filesystem】,則不需要make,直接make install)

          luarocks install安裝須知

          可以使用luarocks安裝vanilla,但是下面三點(diǎn)請注意 1. Luarocks應(yīng)該基于lua5.1.x的版本安裝,因?yàn)槠渌姹綥ua和Luajit的ABI存在兼容性問題。 2. Luarocks安裝的Vanilla在nginx.conf文件的NGX_PATH變量不可用。 3. 請確保nginx命令可以直接運(yùn)行(nginx命令在你的環(huán)境變量中)

          Vanilla 使用

          Vanilla命令

          Vanilla 目前提供了兩個(gè)命令vanilla,和vanilla-console

          • vanilla用來初始化應(yīng)用骨架,停啟服務(wù)(添加--trace參數(shù)可以看到執(zhí)行的命令)

          • vanilla-console是一個(gè)交互式命令行,主要提供一種方便學(xué)習(xí)Lua入門的工具,可以使用一些vanilla開發(fā)環(huán)境下的包,比如table輸出的lprint_r方法。

          命令行執(zhí)行vanilla就能清晰看到vanilla命令提供的選項(xiàng)。

          vanilla
          Vanilla v0.1.0-rc3, A MVC web framework for Lua powered by OpenResty.
          
          Usage: vanilla COMMAND [ARGS] [OPTIONS]
          
          The available vanilla commands are:
           new [name]             Create a new Vanilla application
           start                  Starts the Vanilla server
           stop                   Stops the Vanilla server
          
          Options:
           --trace                Shows additional logs

          創(chuàng)建應(yīng)用

          vanilla new app_name
          cd app_name
          vanilla start [--trace]     -- 默認(rèn)運(yùn)行在development環(huán)境
          
          ## 在linux的bash環(huán)境下:
          VA_ENV=production vanilla start [--trace]  -- 運(yùn)行在生產(chǎn)環(huán)境
          ## 在BSD等tcsh環(huán)境下:
          setenv VA_ENV production;vanilla start [--trace]  -- 運(yùn)行在生產(chǎn)環(huán)境

          代碼目錄結(jié)構(gòu)

          ? /Users/zj-git/app_name/ tree ./
          ./
          ├── application(應(yīng)用代碼主體目錄)
          │   ├── bootstrap.lua(應(yīng)用初始化 / 可選<以下未標(biāo)可選為必選>)
          │   ├── controllers(應(yīng)用業(yè)務(wù)代碼主體目錄)
          │   │   ├── error.lua(應(yīng)用業(yè)務(wù)錯(cuò)誤處理,處理本路徑下相應(yīng)業(yè)務(wù)報(bào)錯(cuò))
          │   │   └── index.lua(hello world示例)
          │   ├── library(應(yīng)用本地類包)
          │   ├── models(應(yīng)用數(shù)據(jù)處理類)
          │   │   ├── dao(數(shù)據(jù)層業(yè)務(wù)處理)
          │   │   │   └── table.lua
          │   │   └── service(服務(wù)化業(yè)務(wù)處理,對DAO的再次封裝)
          │   │       └── user.lua
          │   ├── nginx(*Openresty所封裝Nginx請求處理各Phase)
          │   │   └── init.lua(*init_by_lua示例)
          │   ├── plugins(插件目錄)
          │   └── views(視圖層,與controllers一一對應(yīng))
          │       ├── error(錯(cuò)誤模板)
          │       │   └── error.html
          │       └── index(index controller模板)
          │           └── index.html
          ├── config(應(yīng)用配置目錄)
          │   ├── application.lua(應(yīng)用基礎(chǔ)配置 / 路由器、初始化等設(shè)置)
          │   ├── errors.lua(應(yīng)用錯(cuò)誤信息配置)
          │   ├── nginx.conf(nginx配置文件模板)
          │   ├── nginx.lua(服務(wù)各種運(yùn)行環(huán)境配置 / 是否開啟lua_code_cache等)
          │   ├── waf-regs(應(yīng)用防火墻規(guī)則配置目錄)
          │   │   ├── args
          │   │   ├── cookie
          │   │   ├── post
          │   │   ├── url
          │   │   ├── user-agent
          │   │   └── whiteurl
          │   └── waf.lua(服務(wù)防火墻配置)
          ├── logs(日志目錄)
          │   └── hack(攻擊日志目錄 / 保持可寫權(quán)限)
          ├── pub(應(yīng)用Nginx配置根路徑)
              └── index.lua(應(yīng)用請求入口)

          業(yè)務(wù)代碼示例 IndexController

          local IndexController = {}
          
          function IndexController:index()
              local view = self:getView()
              local p = {}
              p['vanilla'] = 'Welcome To Vanilla...'
              p['zhoujing'] = 'Power by Openresty'
              view:assign(p)
              return view:display()
          end
          
          return IndexController

          模板示例 views/index/index.html

          <!DOCTYPE html> <html> <body> <img src="http://m1.sinaimg.cn/maxwidth.300/m1.sinaimg.cn/120d7329960e19cf073f264751e8d959_2043_2241.png"> <h1><a href = 'https://github.com/idevz/vanilla'>{{vanilla}}</a></h1><h5>{{zhoujing}}</h5> </body> </html>

          為什么需要Vanilla

          回答這個(gè)問題,我們只需要看清楚Openresty和Vanilla各自做了什么即可。

          Openresty

          • 提供了處理HTTP請求的全套整體解決方案

          • 給Nginx模塊開發(fā)開辟了一條全新的道路,我們可以使用Lua來處理Web請求

          • 形成了一個(gè)日趨完善的生態(tài),這個(gè)生態(tài)涵蓋了高性能Web服務(wù)方方面面

          Vanilla

          • 使復(fù)雜的Nginx配置對Web業(yè)務(wù)開發(fā)者更透明化

          • 開發(fā)者不再需要了解Openresty的實(shí)現(xiàn)細(xì)節(jié),而更關(guān)注業(yè)務(wù)本身

          • 實(shí)現(xiàn)了Web開發(fā)常規(guī)的調(diào)試,錯(cuò)誤處理,異常捕獲

          • 實(shí)現(xiàn)了請求的完整處理流程和插件機(jī)制,支持路由協(xié)議、模板引擎的配置化

          • 整合、封裝了一系列Web開發(fā)常用的工具集、類庫(cookie、應(yīng)用防火墻等)

          • 實(shí)現(xiàn)了自動化、配置化的Nginx指令集管理

          • 更合理的利用Openresty封裝的8個(gè)處理請求Phase

          • 支持不同運(yùn)行環(huán)境(開發(fā)、測試、上線)服務(wù)的自動化配置和運(yùn)行管理

          • 功能使用方便易于擴(kuò)展

          • 基于Openresty開發(fā),具備Openresty一切優(yōu)良特性

           

          瀏覽 15
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  韩国一级视频 | 欧美日韩成人一区二区在线观看 | 青青草免费黄片 | 囯产精品久久久久久久久久98 | 免费播放婬乱男女婬视频国产 |