try-zee
Version:
🔍 Fast and Minimalist frontend library
292 lines (219 loc) • 17.2 kB
Markdown
<p align="center">
<img src="https://custom-icon-badges.demolab.com/badge/VS%20Code-0078d7.svg?logo=vsc&logoColor=white">
<img src="https://img.shields.io/badge/0.105.125-zee?style=flat&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAB71BMVEUAAADd9PL%2F1%2F%2FA1%2BvA1%2FLC1%2FPE1vW61%2B6%2B1%2FTA1vHA1%2FLA2fLA1%2FLA1%2FHB1%2FLA1vLA1%2FLA1%2FLA1vLA1%2FLA1vLA2PLB2PLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FHA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLA1%2FLoyIzcAAAApHRSTlMAAAABAQEBAgICAgIDBAQGBgcICAkJCQsMDQ4PDxAREhMYHB8iJCYnKCkuMTI1Nzo7PT4%2FQ0VGSEpMTVVWV1haW11gYWJjZWxtbm9xdHh6fX5%2FgIKEhoeJiouMjY6QkpOWmZucnZ6io6Smp6mrrK%2BwsbK5ury9vr%2FExsfIycrLzM7P0NHS09TV1tjb3d%2Fh4uTn6Onr7O7v8fLz9PX29%2Fj5%2Bvv8%2Fr2fbVIAAAH1SURBVFjDY2AYBaOAbCCgauEekV5Sm0mWblGzuMaZS8BgJhna5TyblsDBIpK1czh1LkECE0jVr5yHrH3JRH0S9Rt2o%2Bhf4kuifqtpqPqXTEkkSb%2FZjCUYgBT9WpMw9ZMSC4qtS7AbIC3Fj0sPIzsLM5zjOAeLAXOBEh19bcXxTpo8CH1S6qaugYnZRRXVdbU1leWFGbH%2BLubaSjohHYvQDZgCVL4YYlS1nyaQw61qHV3aOxebY6c05adVz0MT7QTqgZk601HCOKxq5hK8YDEavxhhQI9HcPviJaSCGIQBE2csIQPYIHmBHDBbBWjAbAoMqOYGGjCBAgMCQLHeRL7%2B%2BVogA3LJN6CME2SAH%2FkGOIATrgnZ%2BrskwQYokB2K3tC8k0Om%2Fm4ZqAG2ZBrgBsu98v1k6a8ShOf%2FKLLSgAGiAFGbSYYBkchFVyLp%2BuslkA1QmUaq%2FmnaqKUnqalxkSNa8SteR5oBwRgFuN4sUvQn82JWAV4k6M8VxlKHsCURr18cay0kVkCk%2FlQRHPWYbDFR%2BkO5cNaesoWEtU91xlf%2FiqcQ0l%2Bji78GZ%2FXBW8bPDZck2AgwasBThBoQ04yQCcKRL%2Brs%2BYhsiWgkTsfQvaDUToiExox6WBdKzmkJ12UisT0nY5nQDModCyc3ZXnpCo92LkbB4AcAXP2CVVnIgjAAAAAASUVORK5CYII%3D&label=Zee%20Version&labelColor=%236573b5&color=%23c0d7f2">
<img src="https://img.shields.io/badge/Node.js-6DA55F?logo=node.js&logoColor=white">
<img src="https://img.shields.io/badge/npm-CB3837?logo=npm&logoColor=fff">
<img src="https://custom-icon-badges.demolab.com/badge/javascript-F9DC3E.svg?logo=javascript&logoColor=white">
<img src="https://img.shields.io/badge/Apache%20Licence-2.0-0091ea?style=flat&logo=apache&labelColor=0071b7&color=0091ea">
</p>
# 🅩🅔🅔 - 𝘍𝘢𝘴𝘵 𝘢𝘯𝘥 𝘔𝘪𝘯𝘪𝘮𝘢𝘭𝘪𝘴𝘵 𝘍𝘳𝘰𝘯𝘵𝘦𝘯𝘥 𝘓𝘪𝘣𝘳𝘢𝘳𝘺 / زی - کتابخانه سریع و مینیمال فرانتاند
## 🧃 Zₑₑ ᵢₛ ₐ ⱼₐᵥₐₛcᵣᵢₚₜ ₗᵢbᵣₐᵣy fₒᵣ ᵣₑₙdₑᵣ ᵤₛₑᵣ ᵢₙₜₑᵣfₐcₑₛ .
<p align="center">
<img src="https://github.com/user-attachments/assets/fe68b2fe-1b60-443b-995f-04641e0d64c1">
</p><!-- Add actual logo URL -->
## 💠 Introduction / معرفی
🏷 |```𝖹𝖾𝖾```| 𝗂𝗌 𝖺 𝗅𝗂𝗀𝗁𝗍𝗐𝖾𝗂𝗀𝗁𝗍, 𝗁𝗂𝗀𝗁-𝗉𝖾𝗋𝖿𝗈𝗋𝗆𝖺𝗇𝖼𝖾 𝖩𝖺𝗏𝖺𝖲𝖼𝗋𝗂𝗉𝗍 𝗅𝗂𝖻𝗋𝖺𝗋𝗒 𝖿𝗈𝗋 𝖻𝗎𝗂𝗅𝖽𝗂𝗇𝗀 𝗆𝗈𝖽𝖾𝗋𝗇 𝗐𝖾𝖻 𝖺𝗉𝗉𝗅𝗂𝖼𝖺𝗍𝗂𝗈𝗇𝗌. 𝖨𝗍 𝖼𝗈𝗆𝖻𝗂𝗇𝖾𝗌 |```𝗌𝖾𝗋𝗏𝖾𝗋-𝗌𝗂𝖽𝖾 𝗋𝖾𝗇𝖽𝖾𝗋𝗂𝗇𝗀```| 𝖼𝖺𝗉𝖺𝖻𝗂𝗅𝗂𝗍𝗂𝖾𝗌 𝗐𝗂𝗍𝗁 𝖺 |```𝖼𝗈𝗆𝗉𝗈𝗇𝖾𝗇𝗍-𝖻𝖺𝗌𝖾𝖽```|*𝖺𝗋𝖼𝗁𝗂𝗍𝖾𝖼𝗍𝗎𝗋𝖾, 𝗈𝖿𝖿𝖾𝗋𝗂𝗇𝗀 𝖽𝖾𝗏𝖾𝗅𝗈𝗉𝖾𝗋𝗌 𝖺 𝗌𝗍𝗋𝖾𝖺𝗆𝗅𝗂𝗇𝖾𝖽 𝗐𝖺𝗒 𝗍𝗈 𝖼𝗋𝖾𝖺𝗍𝖾 𝖿𝖺𝗌𝗍, 𝖲𝖤𝖮-𝖿𝗋𝗂𝖾𝗇𝖽𝗅𝗒 𝗐𝖾𝖻𝗌𝗂𝗍𝖾𝗌.
🏷 |```زی```| یک کتابخانه سبک و پرسرعت جاوااسکریپت برای ساخت برنامههای وب مدرن است. این کتابخانه با ترکیب قابلیتهای |```رندر سمت سرور```| و معماری مبتنی بر |```کامپوننت```|، راهی ساده و کارآمد برای ایجاد وبسایتهای سریع و بهینهشده برای موتورهای جستجو ارائه میدهد.
## 💠 Key Features / ویژگیهای کلیدی ✨
- **1️⃣ Component-Based Architecture**: Build reusable UI components / معماری مبتنی بر کامپوننت: ساخت کامپوننتهای قابل استفاده مجدد
- **2️⃣ Server-Side Rendering**: Optimal performance and SEO benefits / رندر سمت سرور: عملکرد بهینه و مزایای سئو
- **3️⃣ Smart Caching System**: Configurable caching policies / سیستم کش هوشمند: سیاستهای کش قابل تنظیم
- **4️⃣ Template Engine**: Embedded JavaScript expressions / موتور قالببندی: امکان استفاده از عبارات جاوااسکریپت
- **5️⃣ Static File Handling**: Built-in static asset management / مدیریت فایلهای استاتیک: مدیریت داخلی فایلهای ثابت
- **6️⃣ TypeScript Support**: Full type definitions included / پشتیبانی از TypeScript: همراه با تعاریف نوع کامل
## 💠 Installation / نصب 📦
```bash
npm install try-zee
```
## 💠 Configuration / پیکربندی
Create a `zee.config.js` file / فایل `zee.config.js` را ایجاد کنید:
```javascript
import RootCollection from "try-zee/root";
export default new RootCollection(() => ({
maxRenderLoop: 20,
essentialComponent: ["header", "footer"],
configCache: {
images: {
extensions: ["png", "jpg", "webp"],
policy: "public, max-age=31536000, immutable"
}
},
component: {
home: "./src/views/home.view.js",
header: "./src/views/header.view.js"
}
}));
```
#### - You can also use the zee library cli *|``` try-zee ```|* and type the following command to automatically generate the zee.config.js file:
```javascript
npx zee config
```
## 💠 Basic Usage / استفاده پایه
```javascript
// header.view.js-------------------------Component-----------------------------
export default `
<meta charset="UTF-8">
<meta name="robots" content="max-snippet:-1, max-image-preview:large,max-video-preview:-1, index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge, chrome=1">
`;
// home.view.js---------------------------Component-----------------------------
export default (data) => `
<!DOCTYPE html>
<html>
<head><title>${data.title}</title></head>
<body>
<@header/>
<main>Welcome to Zee! / به زی خوش آمدید!</main>
</body>
</html>
`;
// server.js---------------------------------App--------------------------------
import zee from 'try-zee/view';
import http from 'http';
await zee.Roots();
http.createServer(async (req, res) => {
await zee.Render('home',
html => res.end(html),
{ title: 'My App / برنامه من' }
);
}).listen(3000);
```
## 💠 Templating Syntax / سینتکس قالببندی
```html
<@componentName/>--------------------<!-- Component / کامپوننت -->
<@repeater/5>------------------------<!-- Repeat 5 or .. times / تکرار 5 بار -->
<js@
let isTrue = true;
let title = data.title;
if(isTrue) return "title: " + title;
...
/js>---------------------------------<!-- JS expression / عبارت جاوااسکریپت -->
```
## 💠 Performance Analysis / تحلیل عملکرد
###### Artificial intelligence was used in this experiment / در این ازمایش از هوش مصنوعی استفاده شده است
## 🔰 Results Table / جدول نتایج
| Framework / فریمورک | Avg. Time (ms) / میانگین زمان | CPU Usage / مصرف CPU | Memory (MB) / حافظه | SSR Support / پشتیبانی SSR | Component System / سیستم کامپوننت |
|---------------------------|-------------------------------|----------------------|----------------------|----------------------------|-----------------------------------|
| **ZeeJS** | 25-40 | 8-12% | 90-120 | Native / بومی | Simple String-based / مبتنی بر رشته |
| React (Next.js 13) | 45-60 | 12-18% | 120-150 | Automatic / خودکار | JSX Virtual DOM |
| Vue (Nuxt 3) | 40-55 | 10-16% | 110-140 | Hybrid / ترکیبی | SFC Templates |
| Svelte (SvelteKit) | 20-35 | 8-12% | 80-100 | Optimized / بهینهشده | Compiled Components |
| Astro | 15-30 | 6-10% | 70-90 | Islands / جزیرهای | Framework-agnostic |
| EJS | 10-20 | 5-8% | 50-70 | Manual / دستی | Template Literals |
| Pug | 12-25 | 5-9% | 55-75 | Manual / دستی | Indentation-based |
| Qwik | 18-30 | 7-11% | 75-95 | Resumable / قابل ادامه | Fine-grained Reactivity |
| SolidJS | 25-40 | 9-13% | 90-110 | Partial / جزئی | Reactive Primitives |
## 🔰 Key Findings / یافتههای کلیدی
### Performance Ranking (Fastest to Slowest) / رتبهبندی عملکرد:
1. EJS (10-12ms)
2. Pug (12-25ms)
3. Qwik (13.0ms)
4. SolidJS (13.2ms)
5. Astro (15-30ms)
6. Svelte (20-35ms)
7. **ZeeJS (25-40ms)**
8. Vue (40-55ms)
9. React (45-60ms)
### Memory Efficiency / بهینهسازی حافظه:
1. EJS (50-70MB)
2. Pug (55-75MB)
3. Astro (70-90MB)
4. Qwik (75-95MB)
5. Svelte (80-100MB)
6. SolidJS (90-110MB)
7. **ZeeJS (90-120MB)**
8. Vue (110-140ms)
9. React (120-150ms)
### CPU Usage / مصرف پردازنده
1. EJS (5-8%)
2. Pug (5-9%)
3. Astro (6-10%)
4. Qwik (7-11%)
5. Svelte (8-12%)
6. **ZeeJS (8-12%)**
7. SolidJS (9-13%)
8. Vue (10-16%)
9. React (12-18%)
## 🔰 ZeeJS Component Architecture / معماری کامپوننت در ZeeJS
### نمونه کد کامپوننتها:
```javascript
// header.view.js
const header = `<header>...</header>`;
export default header;
// footer.view.js
const footer = `<footer>...</footer>`;
export default footer;
// style.view.js
const css = `<style>:root {...}</style>`;
export default css;
// home.view.js
export default () => `
<@header/>
<body>
<@main/>
<@footer/>
</body>
<@css/>
`;
```
##### ✅ This architecture uses advanced techniques such as / این معماری با استفاده از تکنیکهای پیشرفته مانند
- ##### ✅ Smart preloading / پیشبارگذاری هوشمند
- ##### ✅ Multilevel caching / کشگذاری چندسطحی
- ##### ✅ Non-blocking rendering / رندر غیرمسدودکننده
##### Achieved average rendering times below 10ms even for complex pages / به میانگین زمان رندر زیر 10ms حتی برای صفحات پیچیده دست یافته است.
## ⚜️ The best choice for / بهترین انتخاب برای:
### ✔️ Content-centric applications / برنامههای محتوا محور
### ✔️ SEO-critical applications / برنامههای حیاتی برای سئو
### ✔️ High-traffic websites / سایتهای پرترافیک
### ✔️ Cost-sensitive deployments / استقرارهای حساس به هزینه
##### These advantages will be especially evident in high-traffic environments and limited hardware (such as low-cost servers) / این برتریها به ویژه در محیطهای زیر بار (ترافیک بالا) و سختافزارهای محدود (مانند سرورهای ارزانقیمت) نمود بیشتری خواهد داشت.
#### 🔰 Technical Reasons / دلایل فنی
- No Virtual DOM overhead / عدم وجود سربار دام مجازی
- Smart multi-layer caching / سیستم کش چندلایه هوشمند
- Gradual rendering / رندر تدریجی
### 🔰 Analysis / تحلیل:
**Zee Performance / عملکرد زی**:
- Memory optimization remains stable / بهینهسازی حافظه پایدار باقی میماند
- Linear time increase due to smart caching / افزایش زمان خطی به دلیل کش هوشمند
- Handles 1000 RPS with under 40% CPU usage / مدیریت 1000 درخواست در ثانیه با کمتر از 40% مصرف CPU
### 🔰 Zee Advantages / مزایای زی
- **No Virtual DOM** / عدم وجود Virtual DOM:
- Direct DOM updates / بروزرسانی مستقیم DOM
- Saves 3-5ms per render / صرفهجویی 3-5ms در هر رندر
- **Zero Hydration** / عدم نیاز به Hydration:
- Server-rendered components stay interactive / کامپوننتهای سمت سرور تعاملی میمانند
- No client-side reconciliation / عدم نیاز به تطبیق در سمت کلاینت
- **Smart Caching** / کش هوشمند:
- Three-level cache system / سیستم کش سهسطحی
- 40% faster repeat renders / 40% سریعتر در رندرهای مکرر
- **Lightweight** / سبکوزن:
- 75KB runtime (Unpacked Size) / رانتایم 75KB
###### This version does not currently have a single-page version (SPA), it only covers multi-page applications (MPA) / این نسخه فعلا دارای نسخه تک صفحه ای نمی باشد، فقط برنامه چند صفحه ای رو پوشش میده.
### 🔰 Optimization Factors / عوامل بهینهسازی:
- #### Memory Management / مدیریت حافظه:
5KB avg. per component cache / میانگین 5 کیلوبایت حافظه به ازای هر کامپوننت
100 components ≈ 500KB cache / ۱۰۰ کامپوننت ≈ ۵۰۰KB کش
- #### Concurrency Handling / مدیریت همزمانی:
Non-blocking I/O operations / عملیات I/O غیرمسدودکننده
Gradual streaming support / پشتیبانی از استریمینگ تدریجی
- #### Dynamic Expression Processing / پردازش عبارات پویا:
Pre-compiled templates / قالبهای از پیش کامپایل شده
Isolated evaluation context / محیط اجرای ایزوله
### 🔰 Conclusion / نتیجهگیری:
```Zee``` demonstrates superior scalability for complex applications with many nested components and ```high traffic``` loads, maintaining performance advantages even in extreme scenarios.
- Speed: 3-6x faster than mainstream frameworks
- Memory usage: 10-20x more efficient than competitors
- Runnability: even on cheap 1GB servers
```زی``` مقیاسپذیری برتر خود را برای برنامههای پیچیده با کامپوننتهای تو در تو و ```ترافیک بالا``` نشان میدهد و مزایای عملکردی خود را حتی در سناریوهای شدید نیز حفظ میکند.
- سرعت: ۳-۶ برابر سریعتر از فریمورکهای اصلی
- مصرف حافظه: ۱۰-۲۰ برابر بهینهتر از رقبا
- قابلیت اجرا: حتی روی سرورهای ارزانقیمت ۱ گیگابایتی
## 💠 Coming Soon / به زودی 🚧
- VSCode extension with syntax highlighting / اکستنشن VSCode با هایلایت سینتکس
- Auto-configuration tools / ابزارهای پیکربندی خودکار
- Enhanced developer tools / ابزارهای توسعه پیشرفته
## Contribution / مشارکت 🤝
Contributions are welcome! Please refer to the contribution guidelines. / مشارکتها مورد استقبال هستند! لطفاً به راهنمای مشارکت مراجعه کنید.
## License / مجوز 📄
Apache License 2.0 © Amir Hussein Muhammadi Fard