当前位置: 首页 > 软件库 > 服务器软件 > HTTP服务器 >

Vanilla

高性能 Web 应用开发框架
授权协议 MIT
开发语言 Perl Lua
所属分类 服务器软件、 HTTP服务器
软件类型 开源软件
地区 国产
投 递 者 吕宇定
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

香草/Vanilla

香草/Vanilla是一个基于Openresty实现的高性能Web应用开发框架.

Vanilla

邮件列表

 

安装

目前Vanilla支持两种安装方式

  • Make(推荐使用此种)

  • Luarocks

make install安装须知

Vanilla 支持的选项都提供了默认值,如果你的环境与默认值不一样,请configure时指定成你自己的。

特别注意选项--openresty-path,默认为/usr/local/openresty,请确保设置正确。

可以在源码目录下执行configure --help来查看安装选项的使用方法。

下面是一个简单的安装示例:

./configure --prefix=/usr/local/vanilla --openresty-path=/usr/local/openresty

make install (如果没有C模块【目前支持lua-filesystem】,则不需要make,直接make install)

luarocks install安装须知

可以使用luarocks安装vanilla,但是下面三点请注意 1. Luarocks应该基于lua5.1.x的版本安装,因为其他版本Lua和Luajit的ABI存在兼容性问题。 2. Luarocks安装的Vanilla在nginx.conf文件的NGX_PATH变量不可用。 3. 请确保nginx命令可以直接运行(nginx命令在你的环境变量中)

Vanilla 使用

Vanilla命令

Vanilla 目前提供了两个命令vanilla,和vanilla-console

  • vanilla用来初始化应用骨架,停启服务(添加--trace参数可以看到执行的命令)

  • vanilla-console是一个交互式命令行,主要提供一种方便学习Lua入门的工具,可以使用一些vanilla开发环境下的包,比如table输出的lprint_r方法。

命令行执行vanilla就能清晰看到vanilla命令提供的选项。

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

创建应用

vanilla new app_name
cd app_name
vanilla start [--trace]     -- 默认运行在development环境

## 在linux的bash环境下:
VA_ENV=production vanilla start [--trace]  -- 运行在生产环境
## 在BSD等tcsh环境下:
setenv VA_ENV production;vanilla start [--trace]  -- 运行在生产环境

代码目录结构

 /Users/zj-git/app_name/ tree ./
./
├── application(应用代码主体目录)
│   ├── bootstrap.lua(应用初始化 / 可选<以下未标可选为必选>)
│   ├── controllers(应用业务代码主体目录)
│   │   ├── error.lua(应用业务错误处理,处理本路径下相应业务报错)
│   │   └── index.lua(hello world示例)
│   ├── library(应用本地类包)
│   ├── models(应用数据处理类)
│   │   ├── dao(数据层业务处理)
│   │   │   └── table.lua
│   │   └── service(服务化业务处理,对DAO的再次封装)
│   │       └── user.lua
│   ├── nginx(*Openresty所封装Nginx请求处理各Phase)
│   │   └── init.lua(*init_by_lua示例)
│   ├── plugins(插件目录)
│   └── views(视图层,与controllers一一对应)
│       ├── error(错误模板)
│       │   └── error.html
│       └── index(index controller模板)
│           └── index.html
├── config(应用配置目录)
│   ├── application.lua(应用基础配置 / 路由器、初始化等设置)
│   ├── errors.lua(应用错误信息配置)
│   ├── nginx.conf(nginx配置文件模板)
│   ├── nginx.lua(服务各种运行环境配置 / 是否开启lua_code_cache等)
│   ├── waf-regs(应用防火墙规则配置目录)
│   │   ├── args
│   │   ├── cookie
│   │   ├── post
│   │   ├── url
│   │   ├── user-agent
│   │   └── whiteurl
│   └── waf.lua(服务防火墙配置)
├── logs(日志目录)
│   └── hack(攻击日志目录 / 保持可写权限)
├── pub(应用Nginx配置根路径)
    └── index.lua(应用请求入口)

业务代码示例 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

回答这个问题,我们只需要看清楚Openresty和Vanilla各自做了什么即可。

Openresty

  • 提供了处理HTTP请求的全套整体解决方案

  • 给Nginx模块开发开辟了一条全新的道路,我们可以使用Lua来处理Web请求

  • 形成了一个日趋完善的生态,这个生态涵盖了高性能Web服务方方面面

Vanilla

  • 使复杂的Nginx配置对Web业务开发者更透明化

  • 开发者不再需要了解Openresty的实现细节,而更关注业务本身

  • 实现了Web开发常规的调试,错误处理,异常捕获

  • 实现了请求的完整处理流程和插件机制,支持路由协议、模板引擎的配置化

  • 整合、封装了一系列Web开发常用的工具集、类库(cookie、应用防火墙等)

  • 实现了自动化、配置化的Nginx指令集管理

  • 更合理的利用Openresty封装的8个处理请求Phase

  • 支持不同运行环境(开发、测试、上线)服务的自动化配置和运行管理

  • 功能使用方便易于扩展

  • 基于Openresty开发,具备Openresty一切优良特性

 

  • vanilla When building Single Page Applications a feature I frequently find myself adding is a simple search filter. Nothing too in depth, I'll just want a text field to be able to quickly filter over

  • 和 http://piggyq.com/pen/what-is-vanilla-cplusplus.html  的作者同样的经历,也是多次看到vanilla C,起初查了一下vanilla,无果,遂作罢,后面又在一篇文档上看到这个词汇出现了,抱着非要弄清楚的态度,找到了这个作者的解惑,稍微啰嗦一下,作为解惑和补充吧。 引用 “Vanilla C++” is a bit of a geeky wor

  •   The kernels at www.kernel.org are vanilla kernels.

  • 又是一个有趣的名词,了解下  http://en.wikipedia.org/wiki/Linux_kernel he current development model of the Linux kernel is such that Linus Torvalds makes the releases of new versions, also called the "vanilla" or "

  • Generally speaking, we say something is Vanilla when it’s as “pure” as its producer did in computing world. (The term Vanilla is mainly used in an unix environment to indicate that the Kernel is witho

  • Vanilla software From Wikipedia, the free encyclopedia Vanilla software is computer software that is not customized from its delivered form - i.e. it is used without any customizations applied to it.

  • Vanilla是什么 经常在论文里看到这个单词,翻译成香草很怪异的感觉 vanilla 英 [vəˈnɪlə] 美 [vəˈnɪlə] n. 香草醛,香草香精(从热带植物香子兰豆中提取,用于冰激凌等甜食) adj. 有香子兰香味的;香草味的;普通的;寻常的;毫无特色的 Policy Gradient的原始版本叫做Vanilla Policy Gradient(VPG) RNN的最简单最初版本叫Va

  •   In information technology, vanilla (pronounced vah-NIHL-uh ) is an adjective meaning plain or basic. The unfeatured version of a product is sometimes referred to as the vanilla version. The term is

  • vanilla 英[vəˈnɪlə]美[vəˈnɪlə] n.香子兰,香草; 香子兰荚; 香子兰精,香草精;adj.香草的; 香草味的; 相对没有新意的,普通的; 这个单词的本义是“香草”,但是常常用来引申为“原始的”“普通的”“最初版本的”意思。 请问这个香草本身或是英语文化有什么联系么? 大约是说20世纪70年代起白冰激淋出现且香草是大众口味。 今天,遇上这样一个短语:plain vanill

  • Vanilla是神经网络领域的常见词汇,比如Vanilla Neural Networks、Vanilla CNN等。Vanilla本意是香草,在这里基本等同于raw。比如Vanilla Neural Networks实际上就是BP神经网络,而Vanilla CNN实际上就是最原始的CNN。 BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首

  • 在视频中反复看到这个词,不知道是什么,搜索了一下,发现指的纯粹的JavaScript (pure JavaScript, 或者 plain JavaScript),没有使用任何框架或库的JavaScript。 The term vanilla script is used to refer to the pure JavaScript (or we can say plain JavaScript

 相关资料
  • 本文向大家介绍推荐 21 款优秀的高性能 Node.js 开发框架,包括了推荐 21 款优秀的高性能 Node.js 开发框架的使用技巧和注意事项,需要的朋友参考一下 Node.js 框架可以帮助你开发出更友好的 web 应用。Node.js 框架的许多特性和功能也能开发出大型的 web 应用。下面我们来介绍 21 款最好的 Node.js 框架,帮助开发者快速开发 web 应用。 Express

  • 27. 开发Web应用 Spring Boot非常适合Web应用开发。您可以轻易地使用嵌入式的Tomcat、Jetty或Undertow创建一个独立自足的HTTP服务器。大多数Web应用会使用spring-boot-starter-web模块快速启动并运行。 如果您尚未开发过Spring Boot的Web应用,可以按照入门章节中的“Hello World!”示例操作。

  • Vanilla 的包开发 可以使用任意 LUA 包的开发方式来开发 Vanilla 包(Controllers,Library,Dao,Services等),也可以使用 Vanilla 所提供的面向对象 方式进行开发 对 Controller 使用继承和构造器 下面我们看一个例子: local IndexController = Class('controllers.index', Loa

  • Web 前端应用开发 前期准备 软件安装 应用开发 一、创建应用 二、Web 应用编码 三、运行调试 四、应用发布 Web 前端应用开发 更新时间:2018-07-03 23:58:06 本文将以开发一个 RGB智能灯的控制面板为例,介绍 Web 托管的开发过程,方案基于 Node.js 和 Bone Web 开发框架。 前期准备 软件安装 安装 Node.js LTS 版本(>=8.9):htt

  • Spring Boot非常适合Web应用程序开发。 您可以使用嵌入式Tomcat,Jetty,Undertow或Netty创建自包含的HTTP服务器。 大多数Web应用程序使用spring-boot-starter-web模块快速启动和运行。 您还可以使用spring-boot-starter-webflux模块选择构建响应式Web应用程序。 如果您还没有开发Spring Boot Web应用程序

  • Web 前端应用开发-本地开发 平台流程 安装开发环境 本地开发 开发资源 Web 前端应用开发-本地开发 更新时间:2018-07-03 09:38:46 本章讲解:如何进行 Web 前端应用的本地开发 平台流程 **进入开发部署步骤。页面上方展示了 App ID: 安装开发环境 请参照 Bone Web 文档安装开发环境:https://bone.aliyun.com/bone-web/bon

  • 一个应用程序开发框架。作者实现了很多控件效果,方便其他开发者各取所需。所实现的效果包括:打分星星、响应点击动作、旋转按钮效果、根据文字多少改变大小的UILabel等等效果。 [Code4App.com]

  • Python 作为一门强大的脚本语言,能够适应快速原型和较大项目的制作,它被广泛用于 web 应用程序的开发中。 Context WSGI Web 服务网关接口 (简称为 "WSGI" ) 是一种在 Web 服务器和 Python Web 应用程序框架之间的标准接口。 通过标准化 Web 服务器和Python web 应用程序框架之间的行为和通信,WSGI 使得编写可移植的的 Python web