
LEWP는 서버 측 웹 사이트 렌더링 프레임 워크로 기술적으로 유효한 HTML5 웹 사이트를 만들기 위해 Rust의 전체 알고리즘 전력을 사용할 수 있습니다.
이 접근법은 언어를 혼합하는 템플릿, JSX 또는 기타 사용자 정의 구문을 사용하지 않음으로써 현재 사용 가능한 인기있는 프레임 워크의 대부분과 다릅니다. 이렇게하면 코드가 지저분한 스파게티에서 지저분 해지는 것을 방지합니다.
페이지, 구성 요소 및 리소스의 고유 한 식별 방식으로 LEWP는 다음 웹 사이트의 개발 속도를 높이고 소스 코드를 더 오랫동안 터치하지 않은 경우에도 더 쉽게 유지할 수 있습니다.
LEWP의 파일 계층 구현 덕분에 리소스를 구성하는 것이 더 쉬운 적이 없습니다. 그들은 심지어 최종 바이너리로 컴파일되므로 더 이상 배포시 자료가 누락 될까 걱정할 필요가 없습니다. 구성 요소 CSS 및 JavaScript는 웹 페이지에 자동으로 분리되어 통합되므로 <script> 및 <link> 태그의 최적화에 대해 더 이상 머리카락을 찢지 않습니다. LEWP를 탐색하면서 웹 사이트 생성에 대한 더 단순화 및 최적화를 찾을 수 있습니다.
알고리즘의 편안함과 유연성을 잃지 않고 기술적으로 최적화되고 항상 유효한 HTML5 웹 사이트를 생성하십시오.
이 상자는 현재 진화하고 있습니다. API 브레이킹 변경은 V1.0.0까지 언제든지 발생할 수 있습니다. 컴파일러 경고는 현재 개발 알림으로 사용되며 가능한 빨리 제거됩니다.
이것은 LEWP의 PHP 버전의 조정 된 녹 구현입니다.
궁금한 점이 있거나 기여하거나 다른 유형의 요청을 원하시면 초대하여 문제를 만들도록 초대하십시오.
프로그래밍 언어를 혼합하지 않고 웹 페이지 생성을 단순화하거나 HTML에 로직을 넣습니다 (예 : 템플릿에서 수행)
진정으로 고립 되고 재사용 가능한 구성 요소/모듈로 모듈 식 웹 사이트를 만듭니다. CSS 및 JavaScript의 자동으로 네임 스패닝 된
쉬운 리소스 관리 및 다른 프로젝트간에 공유 할 수있는 폴더 계층 구조의 기본 구현 제공
두 세계, 서버 측 렌더링 및 클라이언트 측 응용 프로그램 논리를 최대한 활용하기
페이지 로딩 시간 최소화 (예 : FCP 및 TTI)
HTML 보일러 플레이트 코드가 없습니다
이미 개발 설정에 이미 SEO 모범 사례 적용 가능한
lewp는 웹 서버가 아닙니다. 코드가 지저분 해지지 않고도 알고리즘을 구성하는 데 도움이되는 라이브러리입니다. 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 의 비동기 기본 방법명시 적으로 언급되지 않는 한, APACHE-2.0 라이센스에 정의 된 대로이 프로젝트에 포함시키기 위해 의도적으로 제출 된 모든 기부금은 추가 이용 약관이나 조건없이 아래와 같이 이중 라이센스를받습니다.
가이드 라인 및 컨벤션은 Contributing.md를 살펴보십시오.
어느 쪽에도 라이센스가 부여되었습니다
귀하의 선택에.