Nova Template Engine: انقلابی در دنیای موتورهای قالب - ساختارشکنی سینتکس‌های سنتی

Nova Template Engine: انقلابی در دنیای موتورهای قالب - ساختارشکنی سینتکس‌های سنتی

وب‌سایت

105 بازدید مدت زمان مطالعه 3 دقیقه

مشخصات نمونه کار
اسکریپت مورد نیاز: Onepower
برنامه‌نویس: امیر بصیر
شرکت: تیم برنامه نویسی وان پاور
ورژن: 3.2.0
ورژن‌های پشتیبانی شده: 2.0.0
تکنولوژی‌ها: PHP Javascript Alpinejs
زبان‌ها: PHP Javascript
آخرین به‌روزرسانی: 1 هفته پیش - 1404-09-01
نیازمندی ها: PHP 7.4 or Higher
آدرس پروژه: بازدید از پروژه
آدرس گیت‌هاب: مشاهده در گیت‌هاب
تغییرات: مشاهده تغییرات
توضیحات
Nova Template Engine: موتور قالب بومی با سینتکس یکپارچه @ - پیشرفته‌ترین سیستم نمایش در جهان با پشتیبانی از Alpine.js و کاملترین کتابخانه متدها و فیلترها.


مقدمه: تولد یک پارادایم جدید در دنیای Template Engine ها

در دنیای شلوغ موتورهای قالب، جایی که توسعه‌دهندگان مجبور بودند بین سینتکس‌های مختلف {{ }}، {% %}، {!! !!} و ده‌ها نماد دیگر سردرگم شوند، Nova Template Engine متولد شد تا یک انقلاب اساسی ایجاد کند. این موتور قالب بومی که توسط تیم وان پاور به رهبری امیر بصیر طراحی شده، نه تنها یک ابزار، بلکه یک فلسفه جدید در توسعه front-end ارائه می‌دهد.


لطفا بخش اول Nova Template Engine را مطالعه کنید:
Nova Template Engine: طراحی هوشمند، اجرای بی‌نظیر – موتور قالب نسل بعدی PHP


لطفا بخش مربوط به یکپارچگی Nova Template Engine با Alpinejs را مطاعه کنید:
یکپارچه‌سازی حرفه‌ای Nova Template Engine با Alpine.js در فریمورک Onepower


فصل اول: چرا Nova؟ چرا سینتکس @؟

مشکل اساسی موتورهای قالب موجود

تمامی Template Engine های معروف جهان یک مشکل مشترک دارند: سینتکس چندپاره
// In Twig you should write like this:
{{ variable }}

{{ variable|filter }}

// In Blade you should write like this:
{{ $variable }}
@foreach($items as $item)
    {{ $item->name }}
@endforeach
{{ $variable }}

// In Smarty you should write like this:
{$variable}
{foreach $items as $item}
    {$item.name}
{/foreach}
{$variable|filter}

راه‌حل Nova: یک نماد برای همه چیز

Nova Template Engine با شعار "یک نماد برای تمام نیازها" این مشکل را برای همیشه حل کرد:
// In Nova you just write:
@var(variable)
@for(item in items)
    @var(item.name)
@endfor
@var(variable|filter)

فصل دوم: قدرت تشخیص هوشمند - قابلیتی که در هیچ موتور قالب دیگری وجود ندارد

تشخیص خودکار انواع داده‌ها

Nova قادر است به صورت هوشمندانه تمامی انواع داده‌های PHP را تشخیص دهد:
// Recognize simple and multidimensional arrays
@var(users.0.name)           // $users[0]['name']
@var(users['admin'].email)   // $users['admin']['email']
@var(posts.2.comments.5.text) // $posts[2]['comments'][5]['text']

// تشخیص توابع و متدهای استاتیک
@var(User::getActiveCount())  // User::getActiveCount()
@var(Helper::formatDate(created_at)) // Helper::formatDate($created_at)

// تشخیص ثابت‌ها
@var(App::VERSION)           // App::VERSION
@var(PROJECT_STATUS_ACTIVE)  // PROJECT_STATUS_ACTIVE

تشخیص خودکار متغیرها با $ و بدون $

// هر دو سینتکس کار می‌کنند!
@var(user.name)     // $user['name'] or $user->name
@var($user.name)    // $user['name'] or $user->name
@var(post.title)    // $post['title'] or $post->title
@var($post.title)   // $post['title'] or $post->title

فصل سوم: مقایسه عملی - کدهای Nova در مقابل PHP خام

مثال ۱: نمایش لیست مقالات

// Raw PHP - 12 lines of code
<?php foreach($blogs as $blog): ?>
    <div class="blog-post">
        <h2><?php echo htmlspecialchars($blog['title']); ?></h2>
        <p><?php echo substr(strip_tags($blog['content']), 0, 200); ?>...</p>
        <span>Author: <?php echo strtoupper($blog['author']['name']); ?></span>
        <span>Date: <?php echo date('Y-m-d', $blog['created_at']); ?></span>
        <img src="<?php echo $blog['image']; ?>" alt="<?php echo $blog['title']; ?>">
    </div>
<?php endforeach; ?>
// Nova - 8 lines of code with better readability
@for(blog in blogs)
    <div class="blog-post">
        <h2>@var(blog.title)</h2>
        <p>@var(blog.content|pure:200)...</p>
        <span>Author: @var(blog.author.name|upper)</span>
        <span>Date: @var(blog.created_at|date:'Y-m-d')</span>
        @img(file:blog['image'], alt:blog['title'], size:800)
    </div>
@endfor

مثال ۲: سیستم شرطی پیشرفته

// Raw PHP - complex and error-prone
<?php if($user['status'] === 'active'): ?>
    <?php if($user['role'] === 'admin'): ?>
        <div class="admin-panel">
            <h3>Admin Panel</h3>
            <p>Welcome <?php echo $user['first_name'] . ' ' . $user['last_name']; ?></p>
        </div>
    <?php elseif($user['role'] === 'editor'): ?>
        <div class="editor-panel">
            <p>Dear Editor, <?php echo $user['first_name']; ?></p>
        </div>
    <?php else: ?>
        <div class="user-panel">
            <p>Dear user</p>
        </div>
    <?php endif; ?>
<?php else: ?>
    <div class="inactive-account">
        <p>Your account is inactive.</p>
    </div>
<?php endif; ?>
// Nova - Simple and readable
@if(user.status === 'active')
    @switch(user.role)
        @case('admin')
            <div class="admin-panel">
                <h3>Admin Panel</h3>
                <p>Welcome @format('%s %s', user.first_name, user.last_name)</p>
            </div>
        @break
        @case('editor')
            <div class="editor-panel">
                <p>Dear Editor, @var(user.first_name)</p>
            </div>
        @break
        @default
            <div class="user-panel">
                <p>Dear user</p>
            </div>
    @endswitch
@else
    <div class="inactive-account">
        <p>Your account is inactive.</p>
    </div>
@endif

فصل چهارم: کاملترین کتابخانه فیلترهای جهان

فیلترهای نمایش داده‌ها

// Number and currency formatting
@var(price|number_format:2)              // 12345.678 → 12,345.68
@var(price|currency:'USD')               // 12345 → $12,345.00
@var(score|percent:1)                    // 0.8567 → 85.7%

// Text and String Management
@var(title|upper)                        // hello world → HELLO WORLD
@var(title|lower)                        // HELLO WORLD → hello world
@var(title|capitalize)                   // hello world → Hello World
@var(title|slugify)                      // Hello World → hello-world
@var(content|pure:200)                   // Remove HTML tags and shorten

// Working with Date and Time
@var(created_at|date:'Y-m-d H:i')        // Date formatting
@var(updated_at|time_ago)                // 2 hours ago
@var(timestamp|relative_time)            // 3 days later

// Processing Arrays
@var(tags|join:', ')                     // ['php','js'] → php, js
@var(users|count)                        // Number of array elements
@var(numbers|max)                        // Maximum value
@var(numbers|min)                        // Lowest value
@var(items|slice:0:5)                    // First 5 elements of the array

فیلترهای شرطی و منطقی

// Default value
@var(user.avatar|or:'default-avatar.jpg')
@var(blog.excerpt|or:blog.content|pure:150)

// Smart bets on Nova
@var(user.points|if:'Number of points:')      // If points exist
@var(blog.views|if_gt:1000:'Most visited')   // If more than 1000 views
@var(product.stock|if_eq:0:'Non-existent')     // If the balance is zero

فصل پنجم: یکپارچگی بی‌نظیر با Alpine.js

لطفا این بخش را مطالعه کنید:
یکپارچه‌سازی حرفه‌ای Nova Template Engine با Alpine.js در فریمورک Onepower

فصل ششم: سیستم مدیریت تصاویر هوشمند

تولید خودکار تصاویر بهینه‌شده

// Simple image with advanced settings
@img(module:'blog', file:post['image'], size:800, alt:post['title'])

// Image with automatic fallback
@img(module:'users', file:user['avatar'], size:300, alt:user['name'], default:'default-avatar.jpg')

// Image with custom style and class
@img(module:'portfolio', file:project['cover'], size:1200, alt:project['title'], 
     class:'project-image', style:'border-radius: 12px;')

// Image without lazy loading
@img(module:'gallery', file:photo['url'], size:1024, alt:photo['caption'], lazy:false)

// Minimum parameters - Smartest mode
@img(file:product['image'], alt:product['name'])

فصل هفتم: حلقه‌های پیشرفته و کنترل جریان

حلقه‌های هوشمند با قابلیت‌های پیشرفته

// Simple loop
@for(i in 0..10)
    <span>Number: @var(i)</span>
@endfor

// Loop with continue and break
@for(i in 0..20)
    @continue(i % 2 === 0)  // @// Skip even numbers
    @break(i > 15)          // @// Stop at 15
    <p>Odd number: @var(i)</p>
@endfor

// Loop over arrays
@for(user in users)
    <div class="user-card">
        <h3>@var(user.name)</h3>
        <p>@var(user.email)</p>
    </div>
@endfor

// Loop with key and value
@for(key, value in settings)
    <div class="setting-item">
        <strong>@var(key):</strong>
        <span>@var(value)</span>
    </div>
@endfor

فصل هشتم: سیستم match و switch پیشرفته

ساختارهای شرطی خوانا

// Match structure for simple conditions
@match(user.status)
    @when('active') 
        <span class="badge badge-success">Active</span>
    @when('pending') 
        <span class="badge badge-warning">Waiting</span>
    @when('suspended') 
        <span class="badge badge-danger">Suspended</span>
    @default 
        <span class="badge badge-secondary">Uncertain</span>
@endmatch

// switch structure for complex conditions
@switch(order.status)
    @case('pending')
        <div class="alert alert-info">
            <p>Your order is awaiting confirmation.</p>
            <p>Date: @var(order.created_at|date:'Y-m-d')</p>
        </div>
    @break
    
    @case('processing')
        <div class="alert alert-warning">
            <p>Your order is being processed.</p>
            <p>@var(order.items|count) Item in preparation</p>
        </div>
    @break
    
    @case('completed')
        <div class="alert alert-success">
            <p>Your order has been completed.</p>
            <p>Final amount: @var(order.total|currency:'IRR')</p>
        </div>
    @break
    
    @default
        <div class="alert alert-secondary">
            <p>The order status is unclear.</p>
        </div>
@endswitch
نتیجه‌گیری: چرا Nova Template Engine انتخاب برتر است؟
Nova تنها یک موتور قالب نیست؛ یک اکوسیستم کامل برای توسعه front-end است:
· سینتکس یکپارچه - فقط @ را به خاطر بسپارید
· تشخیص هوشمند - همه انواع داده PHP پشتیبانی می‌شوند
· کاملترین کتابخانه فیلتر - ۱۰۰+ فیلتر آماده
· یکپارچگی با Alpine.js - تعاملات پیچیده بدون JavaScript
· کارایی فوق‌العاده - بهینه‌شده برای PHP 7.4+
· مستندات کامل - یادگیری در کمتر از ۱ ساعت
· پشتیبانی حرفه‌ای - تیم وان پاور پشتیبان شماست
این موتور قالب اثبات می‌کند که نوآوری ایرانی می‌تواند استانداردهای جهانی را تعریف کند و راه‌حلی ارائه دهد که توسعه‌دهندگان در سراسر جهان به آن نیاز دارند.
امکانات و ویژگی‌ها
امکانات و ویژگی‌های کلیدی Nova Template Engine:
1. سینتکس یکپارچه و ساده (@)
- استفاده از تنها یک نماد برای تمامی دستورات
- حذف سردرگمی بین {{ }}، {% %}، {!! !!}
- یادگیری سریع در کمتر از ۱ ساعت
2. تشخیص هوشمند انواع داده‌های PHP
- پشتیبانی از متغیرهای معمولی و شیءگرا
- تشخیص خودکار توابع استاتیک و ثابت‌ها
- شناسایی آرایه‌های ساده و چندبعدی
3. پشتیبانی از هر دو سینتکس dot و bracket
- @var(user.name) و @var(user['name'])
- @var(blog.0.title) و @var(blog[0]['title'])
- سازگاری با تمامی سبک‌های کدنویسی
4. کاملترین کتابخانه فیلترهای جهان
- ۱۰۰+ فیلتر آماده برای انواع داده‌ها
- فیلترهای متنی: upper, lower, capitalize, slugify
- فیلترهای عددی: number_format, currency, percent
- فیلترهای تاریخ و زمان: date, time_ago, relative_time
- فیلترهای آرایه: join, count, max, min, slice
5. یکپارچگی native با Alpine.js
- ایجاد کامپوننت‌های تعاملی بدون JavaScript
- پشتیبانی از Modal، Dropdown، Tab
- مدیریت state با سینتکس ساده
- transition و animation داخلی
6. سیستم مدیریت تصاویر هوشمند
- تولید خودکار آدرس تصاویر
- resize و بهینه‌سازی خودکار
- lazy loading پیشرفته
- fallback هوشمند برای تصاویر مفقود
7. حلقه‌های پیشرفته و کنترل جریان
- حلقه for با سینتکس ساده
- دستورات continue و break در حلقه‌ها
- پشتیبانی از key-value در حلقه‌ها
- محدوده‌های عددی هوشمند
8. ساختارهای شرطی خوانا
- دستور if با سینتکس طبیعی
- ساختار switch-case پیشرفته
- دستور match برای شرط‌های ساده
- شرط‌های تو در تو با خوانایی بالا
9. سیستم format پیشرفته
- پشتیبانی از sprintf-style formatting
- جایگزینی هوشمند آرگومان‌ها
- قالب‌بندی اعداد و تاریخ
- متن‌های چندزبانه
10. فیلترهای شرطی و منطقی
- فیلتر or برای مقادیر پیش‌فرض
- فیلتر if برای نمایش شرطی
- فیلترهای مقایسه‌ای: if_gt, if_lt, if_eq
- ترکیب فیلترها به صورت زنجیره‌ای
11. پشتیبانی از انواع داده‌های PHP
- تشخیص خودکار integer, float, string
- کار با آرایه‌های پیچیده
- پشتیبانی از object properties
- شناسایی توابع و متدها
12. امنیت داخلی بالا
- escaping خودکار خروجی‌ها
- اعتبارسنجی ورودی‌ها
- محافظت در برابر XSS
- فیلترهای امنیتی پیشرفته
13. کارایی و بهینه‌سازی
- کامپایل و cache خودکار قالب‌ها
- کاهش مصرف memory
- بارگذاری lazy برای منابع
- بهینه‌سازی برای PHP 7.4+
14. سیستم توسعه‌پذیری
- امکان ایجاد فیلترهای سفارشی
- پلاگین‌های توسعه‌پذیر
- integration با فریمورک‌های دیگر
- API برای توسعه‌دهندگان
15. ابزارهای دیباگ و توسعه
- خطایابی پیشرفته
- logging فعالیت‌ها
- نمایش خطاهای خوانا
- profiling عملکرد
16. پشتیبانی از ماژول‌های مختلف
- سیستم نامگذاری ماژول‌ها
- مدیریت آدرس‌های ماژول‌محور
- isolation بین ماژول‌های مختلف
- اشتراک‌گذاری داده بین ماژول‌ها
17. سیستم template inheritance
- ارث‌بری بین قالب‌ها
- block و section مدیریت
- override هوشمند بخش‌ها
- layout های چندسطحی
18. پشتیبانی از چندزبانه
- integration با سیستم‌های i18n
- فیلترهای ترجمه
- قالب‌بندی تاریخ و اعداد محلی
- پشتیبانی از RTL و LTR
19. سیستم کش هوشمند
- cache خودکار خروجی‌ها
- invalidation هوشمند کش
- کش سطح‌بندی شده
- پشتیبانی از driver های مختلف
20. مستندات کامل و جامعه پشتیبان
- مستندات فارسی و انگلیسی
- مثال‌های عملی متعدد
- پشتیبانی فعال توسط تیم وان پاور
21. سازگاری با استانداردهای وب
- پشتیبانی از HTML5
- سازگاری با CSS frameworks
- integration با JavaScript libraries
- استانداردهای accessibility
22. ابزارهای command line
- کامپایل از طریق CLI
- بررسی سلامت قالب‌ها
- تولید خودکار documentation
- ابزارهای توسعه‌دهی
این ویژگی‌ها Nova Template Engine را به کاملترین و پیشرفته‌ترین موتور قالب در جهان تبدیل کرده است.
بازدید روزانه: 10
بازدید هفتگی: 133
بازدید ماهانه: 133
بازدید سالانه: 8052
0%