معرفی Sprout 1.0 🌱💜: عصر جدیدی برای الگوهای Go

هی، برو توسعه دهندگان!
من هیجان زده هستم که اعلام کنم Sprout 1.0، کتابخانه نهایی برای ارتقای الگوهای Go شما به سطح بعدی. چه چیزی ساده بسازید و چه در قالب های پیچیده غواصی کنید، Sprout پشت شماست. با ویژگی های قدرتمند و تمرکز بر سهولت استفاده، Sprout عصر جدیدی از امکانات را برای پروژه های Go شما به ارمغان می آورد.
بیایید بررسی کنیم که چرا Sprout ممکن است بهترین ابزاری باشد که نمی دانستید به آن نیاز دارید. اگر به دنبال کتابخانه ای می گشتید که قدرت، سرعت و سادگی را متعادل کند، این همان است.
اولین نسخه نسخه 1.0.0 من در تمام دوران، به لطف LLama3.3 (نصب محلی) که به من در نوشتن این پست کمک کرد.
چرا جوانه زدن؟
Sprout به دلیل نیاز به یک کتابخانه قالب قدرتمندتر، انعطافپذیرتر و کاربرپسند برای Go متولد شد. Sprout که بر پایه Sprig ساخته شده است اضافه می کند:
- توابع بیشتر: مجموعه ای قوی از ابزارها (200+) برای مدیریت همه چیز، از دستکاری رشته تا ریاضیات پیشرفته، به شما کمک می کند در زمان و تلاش خود صرفه جویی کنید.
- رسیدگی به خطا: کاملاً با مکانیزمهای مدیریت خطای بومی Go یکپارچه شده است و اشکالزدایی و انعطافپذیری را آسان میکند.
- بارگیری قابل تنظیم: فقط آنچه را که نیاز دارید بارگیری کنید، برنامههایتان را سبکتر و سریعتر بدون هزینه اضافی غیرضروری کنید.
- نامگذاری ثابت: دیگر نامهای مرموز وجود ندارد – Sprout آن را واضح و آسان برای استفاده نگه میدارد، بنابراین میتوانید روی ساختن تمرکز کنید.
- اسناد جامع: برای تسلط بر هر ویژگی و باز کردن پتانسیل کامل کتابخانه، به مثالها و راهنماهای دقیق بروید.
با Sprout، شما فقط از یک کتابخانه استفاده نمی کنید. شما در حال افزودن یک جعبه ابزار هستید که برای ساده سازی و تقویت تجربه الگوسازی Go شما طراحی شده است.
شروع به کار
در اینجا نحوه شروع استفاده از Sprout در پروژه های خود آورده شده است:
$ go get github.com/go-sprout/sprout
پس از نصب، می توانید از آن به صورت زیر استفاده کنید:
package main
import (
"log"
"os"
"text/template"
"github.com/go-sprout/sprout"
"github.com/go-sprout/sprout/registry/strings"
)
// This example demonstrates the basic usage of Sprout to enhance Go templates.
// - It uses the "toUpper" function from the "strings" registry to convert text to uppercase.
// - The handler builds the function map and integrates it with the Go "text/template" package.
func main() {
// Initialize a Sprout handler with the strings registry.
handler := sprout.New(
sprout.WithRegistries(strings.NewRegistry()),
)
// Build the function map from the handler.
funcs := handler.Build()
// Define a template string that uses the "toUpper" function.
tmplString := `{{ toUpper "hello, sprout!" }}`
// Parse the template with the custom functions.
tmpl, err := template.New("example").Funcs(funcs).Parse(tmplString)
if err != nil {
log.Fatalf("Error parsing template: %v", err)
}
// Execute the template and print the output.
if err := tmpl.Execute(os.Stdout, nil); err != nil {
log.Fatalf("Error executing template: %v", err)
}
}
این مثال ساده نشان می دهد که چگونه Sprout است toUpper
تابع تبدیل متن به حروف بزرگ را یک نسیم می کند. تنها با چند خط، می توانید قالب های خود را با عملکردی قدرتمند و کارآمد گسترش دهید. شروع به درخشش پروژه های خود به همین راحتی است.
نمونه مستعار و مستعار
یکی از جالبترین ویژگیهای Sprout توانایی آن در مدیریت توابع و نامهای مستعار منسوخ شده است. این بدان معنی است که می توانید بدون شکستن قالب های قدیمی، نام توابع را تغییر دهید یا جایگزین کنید. در اینجا نحوه کار آن آمده است:
package main
import (
"log"
"os"
"text/template"
"github.com/go-sprout/sprout"
"github.com/go-sprout/sprout/registry/strings"
)
func main() {
// Initialize the handler with deprecation notices and aliases.
handler := sprout.New(
// Register the standard "strings" functions, including operations like toUpper.
sprout.WithRegistries(strings.NewRegistry()),
// Add a deprecation notice for "uppercase" to guide users to the new "toUpper" function.
sprout.WithNotices(
sprout.NewDeprecatedNotice("uppercase", "please use `toUpper` instead"),
),
// Create an alias so "uppercase" still works but maps to the new "toUpper" function.
sprout.WithAlias("toUpper", "uppercase"),
)
// Define a template string that uses the deprecated "uppercase" function.
tmplString := `{{ uppercase "Hello, Sprout!" }}`
// Parse the template with the custom functions.
tmpl, err := template.New("example").Funcs(handler.Build()).Parse(tmplString)
if err != nil {
log.Fatalf("Error parsing template: %v", err)
}
// Execute the template and print the output.
if err := tmpl.Execute(os.Stdout, nil); err != nil {
log.Fatalf("Error executing template: %v", err)
}
}
در این مثال، uppercase
منسوخ شده است و به toUpper
. یک هشدار نمایش داده می شود تا به شما اطلاع دهد که عملکرد قدیمی در آینده حذف خواهد شد. این ویژگی انتقال صاف و الگوهای آینده را بدون اختلال تضمین می کند.
چه چیزی Sprout را متمایز می کند؟
- توسعه فعال: Sprout با به روز رسانی ها و بهبودهای منظم بر اساس بازخورد کاربران به طور مداوم در حال تکامل است.
- سبک و سریع: حداقل وابستگی ها باعث می شود برنامه های شما سریع و کارآمد بمانند.
- جامعه محور: بازخورد توسعهدهندگانی مانند شما، آینده Sprout را شکل میدهد و آن را به کتابخانهای تبدیل میکند که واقعاً برای جامعه ساخته شده است.
- ساخته شده برای مقیاس پذیری: چه در حال مدیریت پروژه های کوچک یا برنامه های کاربردی در مقیاس بزرگ باشید، Sprout بدون زحمت با نیازهای شما سازگار می شود.
Sprout فقط یک کتابخانه الگوی دیگر نیست، بلکه شریکی در سفر توسعه شما است، گردش کار را ساده می کند و خلاقیت را باز می کند.
می خواهید مشارکت کنید یا بیشتر بدانید؟
چه برای یادگیری یا مشارکت اینجا باشید، Sprout از همه افراد برای پیوستن به جامعه رو به رشد آن استقبال می کند. با هم می توانیم آینده الگوی Go را شکل دهیم.
به گفتگو بپیوندید
نظر شما در مورد Sprout 1.0 چیست؟ آیا ایده یا ویژگی هایی دارید که دوست دارید ببینید؟ نظر خود را در زیر بگذارید یا در GitHub مشارکت کنید.
با هم، بیایید الگوهای Go را برای همه بهتر کنیم!
من واقعاً فکر می کنم که قالب های Go نیاز به بهبود دارند، و من می خواهم Sprout مکانی برای این تکامل باشد!
تجربیات خود را به اشتراک بگذارید، پروژه های خود را به نمایش بگذارید و دیگران را تشویق کنید تا چیزهای شگفت انگیزی با Sprout بسازند.
کد نویسی مبارک! 🚀💜