
LEWPは、技術的に有効なHTML5 Webサイトを作成するために、Rustの完全なアルゴリズムパワーを使用できるようにするサーバーサイドWebサイトレンダリングフレームワークです。
そのアプローチは、テンプレート、 JSX 、または言語をミックスする他のカスタム構文を使用しないことで、現在利用可能な人気のあるフレームワークのほとんどとは異なります。これにより、コードが厄介なスパゲッティで厄介になることができなくなります。
ページ、コンポーネント、リソースの独自の識別アプローチにより、LEWPは次のWebサイトの開発を高速化し、ソースコードに長期間触れなかった場合でも維持を容易にします。
LEWPのファイル階層実装のおかげで、リソースの構築はかつてないほど容易になりました。彼らは最終的なバイナリに編集されることさえあるため、展開時にリソースが欠落していることを心配する必要はありません。コンポーネントCSSとJavaScriptは自動的に分離され、Webページに統合されているため、 <script>および<link>タグの最適化について髪の毛を引き裂くことはもうありません。 LEWPを探索しながら、ウェブサイトの作成の単純化と最適化がさらに多くなります。
HTML5 Webサイトは、アルゴリズムの快適性と柔軟性を失うことなく、技術的に最適化され、常に有効です。
この木枠は現在進化しています。 APIの破壊の変更は、v1.0.0までいつでも発生する可能性があります。コンパイラ警告は現在、開発リマインダーとして使用されており、できるだけ早く削除されます。
これは、LEWPのPHPバージョンの調整された錆の実装です。
質問がある場合は、他の種類のリクエストを貢献したり、他の種類のリクエストを持ちたい場合は、問題を作成するよう招待されています。
プログラミング言語を混ぜたり、HTMLにロジックを入れたりせずにWebページの作成を簡単にする(テンプレートで行われているように)
本当に孤立した再利用可能なコンポーネント/モジュールを備えたモジュール化されたWebサイトを作成します。 CSSとJavaScriptを自動的に名前を付けます
リソース管理を容易にし、異なるプロジェクト間で共有する可能性のために、フォルダー階層のデフォルトの実装を提供する
両方の世界を最大限に活用し、サーバーサイドレンダリング、クライアントサイドアプリケーションロジック
ページの読み込み時間の最小化(たとえばFCPおよびTTIなど)
HTMLボイラープレートコードはありません
既に開発セットアップ中のSEOベストプラクティスを可能な限り適用する
rewpはウェブサーバーではありません。これは、コードを厄介にすることなく、あなたのビューに完全に沿ってアルゴリズムを構築することをサポートするライブラリです! Rocket、Actix-Web、Axumなどのフレームワークと完全に統合されています。
コメントのある例については、リポジトリの例をご覧ください。
use lewp :: {
component :: { Component , ComponentId , ComponentModel } ,
html :: {
api :: { h1 , text } ,
Node ,
} ,
page :: { Page , PageId , PageModel } ,
view :: PageView ,
} ;
struct HelloWorld {
data : String ,
}
impl HelloWorld {
pub fn new ( ) -> Self {
Self {
data : String :: from ( "Hello World!" ) ,
}
}
}
impl ComponentModel for HelloWorld {
type Message = ( ) ;
fn id ( & self ) -> ComponentId {
"hello-world" . into ( )
}
fn main ( & mut self ) { }
fn view ( & self ) -> Option < Node > {
Some ( h1 ( vec ! [ text ( & self . data ) ] ) )
}
}
struct HelloWorldPage ;
impl PageModel for HelloWorldPage {
fn id ( & self ) -> PageId {
"hello-world-page" . into ( )
}
fn main ( & self , view : & mut PageView ) {
let mut comp = Component :: from ( HelloWorld :: new ( ) ) ;
view . push ( & mut comp ) ;
}
}
fn main ( ) {
simple_logger :: init ( ) . unwrap ( ) ;
let page = Page :: from ( HelloWorldPage { } ) ;
let executed_page = page . main ( ) ;
println ! ( "{}" , executed_page . render ( ) ) ;
} <link>として挿入される「非レンダリングクリティカル」パーツPageModelとComponentModelのASYNCメイン方法明示的に述べられない限り、Apache-2.0ライセンスで定義されているように、このプロジェクトに含めるために意図的に提出された拠出は、追加の条件なしで、以下のようにデュアルライセンスを取得するものとします。
ガイドラインと慣習については、Contributing.mdをご覧ください。
いずれかの下でライセンスされています
あなたのオプションで。