Vugu هي مكتبة تجريبية لـ Web UIs مكتوبة في GO واستهداف Webassembly. دليل ومستندات في https://www.vugu.org. godoc في https://godoc.org/github.com/vugu/vugu.
إذا كنت ترغب في كتابة واجهة مستخدم في JS ، فلم يكن Pure Go ... وقم بتشغيله في متصفحك ، الآن ... هذا المستقبل (التجريبي ؛) هنا!
تقديم Vugu (وضوح /ˈvuː.ɡuː/) ، مكتبة مستوحاة من Vuejs في Go Hopping WASM.
لا عقدة. لا ي. لا NPM. لا يوجد مجلد node_modules يتنافس مع مكتبة الموسيقى الخاصة بك لمساحة القرص.
ابدأ: http://www.vugu.org/doc/start
لا يزال العمل قيد التقدم ، ولكن الكثير من الأشياء وظيفية بالفعل. بعض العمل بشكل جيد.
يجب أن يكون لديك v1.22.3 كحد أدنى لاستخدام vugu . نطلب من تغييرات الحلقة التي تم تقديمها في GO v1.22 ، وكان الإصدار 1.22.3 هو الأخير في ذلك الوقت.
vugu للمساهمين يستخدم vugu الآن Mage لإدارة بناء أدوات vugu - vugugen و vugufmt و vgfrom . يستخدم Mage أيضًا لإدارة عملية الاختبار.
يرجى الاطلاع على تعليمات الإنشاء المحدثة في دليل المساهمين
لتشغيل الأمثلة ، يجب أن يكون لديك أداة mage و docker و goimports مثبتة. يستخدم vugu mage لإدارة عملية الإنشاء.
أبسط طريقة لتثبيت mage هي:
git clone https://github.com/magefile/mage
cd mage
go run bootstrap.go
يجب تشغيل mage من جذر الوحدة النمطية لـ vugu ، هذا هو الدليل الذي يوجد فيه المستوى go.mod .
ستحتاج أيضًا إلى تثبيت أداة goimports . من المحتمل جدًا أن تكون قد تم تثبيته بالفعل ، عادة كجزء من البرنامج المساعد المحرر. إذا لم يكن الأمر كذلك ، فيمكن تثبيت ذلك مع:
go install golang.org/x/tools/cmd/goimports@latest
من أجل تشغيل الأمثلة التي ستحتاج أيضًا إلى تثبيت docker . إذا لم يكن لديك تثبيت docker ، فاتبع تعليمات تثبيت Docker. سيتم تقديم كل مثال بواسطة حاوية nginx محلية.
جميع الأمثلة في دليل examples . كل دليل فرعي examples يحتوي على مثال واحد. كل مثال هو وحدة GO الخاصة.
بناء وخدمة جميع الأمثلة بسيطة مثل:
cd path/to/vugu
mage examples
أو
cd path/to/vugu
mage -v examples
سيتم تقديم كل مثال في عنوان URL للنموذج
http://localhost:8888/<name-of-example-directory>
على سبيل المثال ، لمشاهدة مثال fetch-and-display سيكون عنوان URL هو:
http://localhost:8888/fetch-and-display
أو إذا كنت تريد فقط تشغيل مثال واحد استخدمه:
cd path/to/vugu
mage singleExample <name-of-example-module>
على سبيل المثال لخدمة مثال fetch-and-display سيكون الأمر هو:
cd path/to/vugu
mage singleExample github.com/vugu/vugu/example/fetch-and-display
إذا كنت بحاجة إلى إنشاء مثال جديد ، فإن العملية مستقيمة إلى حد ما. النقطة الحرجة هي أن تبنيها على مثال عمل.
على سبيل المثال
cd /path/to/vugu
cp -r ./examples/fetch-and-display/ ./examples/my-new-example
ستقوم cp بنسخ كل شيء في الدليل بما في ذلك ملف .gitignore المحلي الحاسم إلى دليل المثال الجديد. يرجى جعل sire .gitignore
تحتاج بعد ذلك إلى تحرير ./examples/my-new-example/go.mod هذه الخطوة أمر بالغ الأهمية.
يجب تغيير اسم الوحدة لمطابقة المثال ، لذلك في هذه الحالة سيتم تغيير اسم الوحدة إلى github.com/vugu/vugu/examples/my-new-example
يمكنك بعد ذلك تحرير root.vugu أو root.go حسب الحاجة لدعم المثال ، أو إضافة المزيد من ملفات *.vugu و *.go حسب الضرورة.
لا ينبغي تحرير الملفات main_wasm.go و wasm_exec.js .
سيحتاج ملف index.html الأمثلة إلى تحريره في مكانين متميزين. الأول هو خط حوالي 11
<script src="/fetch-and-display/wasm_exec.js"></script>
لتغيير المسار لتعكس اسم المثال. في هذه الحالة:
<script src="/my-new-example/wasm_exec.js"></script>
التغيير الثاني مشابه ولكنه يعكس مسار المركز main.wasm . هذا هو خط حوالي 29
WebAssembly.instantiateStreaming(fetch("/fetch-and-display/main.wasm"), go.importObject).then((result) => {
التي سيتم تغييرها في هذه الحالة إلى:
WebAssembly.instantiateStreaming(fetch("/my-new-example/main.wasm"), go.importObject).then((result) => {
يمكن بعد ذلك بناء المثال الجديد وتقديمه:
cd /path/to/vugu
mage examples
أو بشكل فردي مثل هذا:
cd /path/to/vugu
mage singleExample github.com/vugu/vugu/example/my-new-example
<tag :prop='expr'> . إنه مبني أشبه بالمكتبة أكثر من الإطار . على الرغم من أن VUGU تقوم بتوليد الكود لملفات مكون .vugu الخاصة بك ، (وسوف تخرج حتى الافتراضي main_wasm.go لمشروع جديد وإنشاء برنامجك تلقائيًا عند تحديث الصفحة) ، فأنت في الأساس لا تزال تتحكم. تدفق البرنامج بشكل عام ، وأسلاك التطبيق والتهيئة ، حلقة العرض التي تحافظ على الصفحة متزامنة مع مكوناتك - لديك التحكم في كل ذلك. أطراف الاتصال الكود الخاص بك. Vugu هي مكتبة ، يطلق عليها الكود (حتى لو كان Vugu يولد القليل من ذلك بالنسبة لك في البداية لتسهيل الأمور). كان أحد الأهداف الأساسية لـ Vugu ، عندما يتعلق الأمر بالمطورين الذين يواجهونه أولاً ، هو جعلها سريعة وسهلة للبدء ، ولكن دون فرض قيود غير ضرورية على كيفية تنظيم المشروع. GO Build Tooling (والآن نظام الوحدة النمطية) رائع. والفكرة هي الاستفادة من ذلك إلى أقصى حد ممكن ، بدلاً من إعادة برمجة العجلة.
لذلك لن تجد أداة سطر أوامر Vugu تقوم بتشغيل خادم تطوير ، بدلاً من ذلك ستجد في المستندات مقتطفًا مناسبًا من التعليمات البرمجية التي يمكنك لصقها في ملف go run بنفسك. بالنسبة لتوليد الكود بينما يوجد http.handler يمكنه القيام بذلك عند تحديث الصفحة ، يمكنك أيضًا (وينبغي!) تشغيل vugugen عبر go generate . هناك العديد من القرارات الصغيرة في Vugu التي تتبع هذه الفلسفة: أينما كان ذلك ممكنًا ، ما عليك سوى استخدام الآلية الحالية بدلاً من اختراع من جديد. واستمر في القيام بذلك حتى يكون هناك دليل على أن هناك حاجة إلى شيء آخر حقًا. حتى الآن كان يعمل بشكل جيد. ويسمح لـ Vugu بالتركيز على الأشياء المحددة التي يجلبها إلى الطاولة.
يمكن العثور على أمثلة للتطبيقات في مستودعات أمثلة
نظرًا لأن معظم التعليمات البرمجية ستكون في ملفات .vugu ، ستحتاج إلى تثبيت ائتمانات VSCODE-VUGU إلى Binhonglee.