valval - V言語(vlang)で最速のWebフレームワーク
https://www.wenyanet.com/opensource/ja/602e6e496b745e6d3560c91d.html
(The fastest web framework in V language (vlang))
バルバル
Valvalは、V言語で最速のWebフレームワークです。
この手段は、次のことができます開発のウェブサイトを迅速かつ実行し、それをさらに速く!
簡単なデモ:
import valval
fn hello(req valval.Request) valval.Response {
return valval.response_ok('hello world')
}
fn main() {
mut app := valval.new_app(true)
app.route('/', hello)
valval.runserver(app, 8012)
}
インストール
Gitの使用
$ git clone https://github.com/taojy123/valval $ mkdir -p ~/.vmodules $ ln -s $(pwd)/valval ~/.vmodules/valval
VPMの使用
Watchmen123456はモジュールをvpmに登録しました。PATH変数にvがある場合は、単に以下を使用してください。
$ v install watchmen123456.valval
注:vpmを使用する場合。インポートを次のように変更する必要があります。
import watchmen123456.valval
クイックスタート
最小限のアプリケーション
最小限のValvalアプリケーションは次のようになります。
// demo.v
module main
import valval
fn hello(req valval.Request) valval.Response {
return valval.response_ok('hello world')
}
fn main() {
mut app := valval.new_app(true)
app.route('/', hello)
valval.runserver(app, 8012)
}
サーバーを実行する
$ v run demo.v
その後、あなた
http://127.0.0.1:8012/はウェブサイトを見るために訪問することができます
$ curl http://127.0.0.1:8012/ hello world
デバッグモード
呼び出すときにデバッグモードを使用するかどうかを決定できます
valval.new_app()
mut app := valval.new_app(true) // debug mode
mut app := valval.new_app(false) // production mode
デバッグモードでは、アプリの実行中に詳細情報が出力されます
サービスポート
を呼び出すときにサービスポート番号を決定できます
valval.runserver()
valval.runserver(app, 8012) // listening 8012 port
valval.runserver(app, 80) // listening 80 port
valvalサーバーは
0.0.0.0アドレスをバインドするので、
127.0.0.1:PortまたはでWebサイトにアクセスできます。
ServerIp:Port
ルーティング
App.route()関数を使用してハンドラー関数をバンドし、パスを要求します
ハンドラー関数には、型のパラメーターが
Requestあり、
Response
mut app := valval.new_app(true)
app.route('/', hello) // http://127.0.0.1
app.route('/users', function1) // http://127.0.0.1/users
app.route('/user/info', function2) // http://127.0.0.1/user/info
app.route('POST:/book', function3) // http://127.0.0.1/book by POST
app.route('DELETE:/book', function4) // http://127.0.0.1/book by DELETE
app.route('/book', function5) // http://127.0.0.1/book by other methods
app.route('*', function6) // all remain
valval.runserver(app, 80)
リクエストデータへのアクセス
現在、解析できるのは次のデータのみです。
- GETリクエストによるパラメータのクエリ。沿って
valval.Request.query[xxx]
x-www-form-urlencoded
POST / PUT / PATCHリクエストによるパラメータ。沿ってvalval.Request.form[xxx]
fn hello(req valval.Request) valval.Response {
mut name = request.query['name']
if name == '' {
name = 'world'
}
return valval.response_ok('hello $name')
}
fn post_hello(req valval.Request) valval.Response {
mut name = request.form['name']
if name == '' {
name = 'world'
}
return valval.response_ok('hello $name')
}
app.route('GET:/hello', hello)
app.route('POST:/hello', post_hello)
valval.Request.get()から
queryまたはからデータを取得するための迅速な方法を提供します
form。
fn hello(req valval.Request) valval.Response {
name = request.get('name', 'world') // default: 'world'
return valval.response_ok('hello $name')
}
app.route('/hello', hello)
今後、さらに多くの種類のリクエストデータがサポートされる予定です。
- URLのパラメータ
multipart/form-data
POSTリクエストによるapplication/json
POSTリクエストによる- アップロードされたファイル
静的ファイル
valval.App.serve_staticローカルファイルを提供するために使用
mut app := valval.new_app(true)
app.serve_static('/static/', './relative/path/to/static/')
// visit http://127.0.0.1/static/xxx.js ...
app.serve_static('/static2/', '/absolute/path/to/static2/')
// visit http://127.0.0.1/static2/yyy.css ...
valval.runserver(app, 80)
レンダリングテンプレート
Valvalは、まったく新しいアイデアを使用してテンプレート関数を実装しました。Vueのシステムに触発されました。
次の利点があります。
Vue
以前に使用したことがある場合は、テンプレートの使用方法を学ぶのに時間を費やす必要はありません。- 使ったことがない
Vue
方でも、とても簡単なので早く習得できます。 - それは、次のような、いくつかの一般的に使用されるUIフレームワークを統合することができます:
element
、mint
、vant
、antd
、bootstrap
... - 組み込みのテンプレートの開発に時間を費やす必要はありません
😁 。
テンプレートの例:
server.v:
import valval
import json
struct User {
name string
age int
sex bool
}
fn users(req valval.Request) valval.Response {
// create a view by template file (`test6.html` can be a relative or absolute path)
// use `element` (https://github.com/ElemeFE/element) as ui framework
mut view := valval.new_view(req, 'users.html', 'element') or {
return valval.response_bad(err)
}
users := [
User{'Lucy', 13, false},
User{'Lily', 13, false},
User{'Jim', 12, true},
]
msg := 'This is a page of three user'
// use view.set to bind data for rendering template
// the second parameter must be a json string
view.set('users', json.encode(users))
view.set('msg', json.encode(msg))
return valval.response_view(view)
}
users.html:
<html>
<head>
<title>Users Page</title>
</head>
<body>
<!-- Content in body can use template syntax -->
<h3>{{msg}}</h3>
<p v-for="u in users">
<span>{{u.name}}</span> ,
<span>{{u.age}}</span> ,
<el-tag v-if="u.sex">Male</el-tag>
<el-tag v-else>Female</el-tag>
</p>
</body>
</html>
リダイレクト
valval.response_redirect()リダイレクト応答を生成するために使用します
fn test1(req valval.Request) valval.Response {
name = req.get('name', '')
if name == '' {
return valval.response_redirect('/not_found')
}
return valval.response_ok('hello $name')
}
反応
応答に加えて(上記
response_ok、
response_view、
response_redirect)
Valvalは、次のような他の応答タイプも提供します。
struct User {
name string
age int
sex bool
}
fn text(req valval.Request) valval.Response {
return valval.response_text('this is plain text response')
}
fn json(req valval.Request) valval.Response {
user = User{'Tom', 12, true}
return valval.response_json(user)
// -> {"name": "Tom", "age": 12, "sex": true}
}
fn json_str(req valval.Request) valval.Response {
user = User{'Tom', 12, true}
user_str = json.encode(user)
return valval.response_json_str(user_str)
// -> {"name": "Tom", "age": 12, "sex": true}
}
fn file(req valval.Request) valval.Response {
return valval.response_file('path/to/local/file')
}
fn bad(req valval.Request) valval.Response {
return valval.response_bad('Parameter error!')
// response with statu code 400
}
完全な例
- あなたは訪問することができhttps://github.com/taojy123/valval/tree/master/exampleを完全な例を参照してください。
- また、valvalの公式Webサイト(https://valval.cool)もvalvalフレームワークで記述されています:https://github.com/taojy123/valval_website
V言語をインストールする
Valvalフレームワークは現在
V languageバージョンをサポートしています
0.1.24
Vをインストールする方法は次のとおりです。
1.ビルド済みのVパッケージをダウンロードします
公式ホームページhttps://vlang.io/にアクセスしてダウンロードしてください
2.dockerでVを実行します[推奨]
docker run -it -p 8012:8012 --name vlang taojy123/vlang bash
OpenSSLが含まれています
3.ソースからVをインストールします
$ git clone https://github.com/vlang/v $ cd v $ make
OpenSSLをインストールします
macOS: $ brew install openssl Debian/Ubuntu: $ sudo apt install libssl-dev openssl ca-certificates
Windows(Win10検証済み):ソースは以下からダウンロードできます:
それがあなたが好きなら、あなたはグラフィックインストーラーを見つけることができます。
0 コメント:
コメントを投稿