MDUI: как отдать UI backend-разработчикам
Как сократить Time-to-Market в 7 раз и научить бэкенд-разработчиков собирать страницы за 15 минут? В этой статье я делюсь опытом внедрения Meta-Driven UI в ERP-системе. Расскажу, как я «душила» легаси с помощью Strangler Fig Pattern, внедрила FSD-архитектуру на Vue 3 и почему Render-функции оказались эффективнее обычных шаблонов.
https://habr.com/ru/articles/980684/
#vuejs #frontendразработка #MDUI #fsd #erpсистемы #refactoring
La lib de *signals* (ce qui sous-tend le système de réactivité des frameworks JavaScript modernes) utilisée par Vue 3.6 en mode *Vapor* (alternative au *virtual DOM*).
🔗 https://github.com/stackblitz/alien-signals
Рендер-функции и Teleport в Vue.js
Декларативные шаблоны Vue решают 90% задач фронтенда. Но периодически возникают ситуации, где шаблонного синтаксиса оказывается мало. Нужен более тонкий контроль над рендерингом или возможность вынести часть компонента за пределы его естественной позиции в DOM-дереве. Для таких случаев Vue 3 послал нам render-функции и встроенный компонент Teleport. Понять Vue
https://habr.com/ru/companies/otus/articles/978308/
#vuejs #рендерфункции #Teleport #виртуальный_DOM #реактивность #SPA
Manuales de VueJS https://myblog.clonbg.es/manuales-de-vuejs/ #Programación #VueJs https://clonbg.es

Pinia Zombie State: Kẻ ẩn náu nguy hiểm trong ứng dụng Vue của bạn. Khi state không còn được sử dụng nhưng vẫn tồn tại, nó có thể gây ra các bug khó lường như form tự động điền, validation sai, UI hoạt động bất thường. Nguyên nhân chính: store không được reset khi chuyển trang hoặc kết thúc luồng nghiệp vụ. Giải pháp: 1) Thêm hàm reset rõ ràng, 2) Reset khi context thay đổi, 3) Kiểm soát async request, 4) Tách biệt UI state và domain state. #Pinia #VueJS #StateManagement #ZombieState #Frontend #
How to use wa-card with Vue
Last month, I talked about wanting to spend some time exploring Web Awesome and Vue.js. I figured that we would start with the wa-card element. This is a great option for displaying a collection of elements that have photos, names, and descriptions. Let’s take a look at a simple example.
[cmsmasters_html shortcode_id=”xiyvc2iir9″]PHAgY2xhc3M9ImNvZGVwZW4iIGRhdGEtaGVpZ2h0PSIzMDAiIGRhdGEtZGVmYXVsdC10YWI9Imh0bWwscmVzdWx0IiBkYXRhLXNsdWctaGFzaD0ibXlWR2ROWiIgZGF0YS1wZW4tdGl0bGU9IndhLWNhcmQgZGVtbyAxIiBkYXRhLXVzZXI9InN0ZWluYnJpbmciIGRhdGEtdG9rZW49IjE4YmM5YTM5NGMyY2Q4MWE1ZTJiNjgxZmM2YjgyYThiIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGJvcmRlcjogMnB4IHNvbGlkOyBtYXJnaW46IDFlbSAwOyBwYWRkaW5nOiAxZW07Ij4KICAgICAgPHNwYW4+U2VlIHRoZSBQZW4gPGEgaHJlZj0iaHR0cHM6Ly9jb2RlcGVuLmlvL3N0ZWluYnJpbmcvcGVuL215VkdkTlovMThiYzlhMzk0YzJjZDgxYTVlMmI2ODFmYzZiODJhOGIiPgogIHdhLWNhcmQgZGVtbyAxPC9hPiBieSBKb2UgU3RlaW5icmluZyAoPGEgaHJlZj0iaHR0cHM6Ly9jb2RlcGVuLmlvL3N0ZWluYnJpbmciPkBzdGVpbmJyaW5nPC9hPikKICBvbiA8YSBocmVmPSJodHRwczovL2NvZGVwZW4uaW8iPkNvZGVQZW48L2E+Ljwvc3Bhbj4KICAgICAgPC9wPgogICAgICA8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9wdWJsaWMuY29kZXBlbmFzc2V0cy5jb20vZW1iZWQvaW5kZXguanMiPjwvc2NyaXB0Pg==[/cmsmasters_html]
Web Awesome is an open-source library of web-standards-based and framework-agnostic UI components, so adapting them to work with Vue.js is easy. We just need variables for each of the elements of the content and a little createApp() magic.
[cmsmasters_html shortcode_id=”421v0kf01t”]PHAgY2xhc3M9ImNvZGVwZW4iIGRhdGEtaGVpZ2h0PSIzMDAiIGRhdGEtZGVmYXVsdC10YWI9Imh0bWwscmVzdWx0IiBkYXRhLXNsdWctaGFzaD0iRWFQZWFWTCIgZGF0YS1wZW4tdGl0bGU9IndhLWNhcmQgZGVtbyAyOiBEdXBsaWNhdGluZyB3aXRoIFZ1ZSIgZGF0YS11c2VyPSJzdGVpbmJyaW5nIiBkYXRhLXRva2VuPSIxYmVkYTZhYjNjYWYxNTZlZTAzNWMzYjc5MjdhYmY4NiIgc3R5bGU9ImhlaWdodDogMzAwcHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBib3JkZXI6IDJweCBzb2xpZDsgbWFyZ2luOiAxZW0gMDsgcGFkZGluZzogMWVtOyI+CiAgICAgIDxzcGFuPlNlZSB0aGUgUGVuIDxhIGhyZWY9Imh0dHBzOi8vY29kZXBlbi5pby9zdGVpbmJyaW5nL3Blbi9FYVBlYVZMLzFiZWRhNmFiM2NhZjE1NmVlMDM1YzNiNzkyN2FiZjg2Ij4KICB3YS1jYXJkIGRlbW8gMjogRHVwbGljYXRpbmcgd2l0aCBWdWU8L2E+IGJ5IEpvZSBTdGVpbmJyaW5nICg8YSBocmVmPSJodHRwczovL2NvZGVwZW4uaW8vc3RlaW5icmluZyI+QHN0ZWluYnJpbmc8L2E+KQogIG9uIDxhIGhyZWY9Imh0dHBzOi8vY29kZXBlbi5pbyI+Q29kZVBlbjwvYT4uPC9zcGFuPgogICAgICA8L3A+CiAgICAgIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3B1YmxpYy5jb2RlcGVuYXNzZXRzLmNvbS9lbWJlZC9pbmRleC5qcyI+PC9zY3JpcHQ+[/cmsmasters_html]
The above example gives you the same result as the first one, but instead of the values being in the markup, they are in JavaScript variables. So, how do we adapt this to work with more complex data?
[cmsmasters_html shortcode_id=”vhd59gyl”]PHAgY2xhc3M9ImNvZGVwZW4iIGRhdGEtaGVpZ2h0PSIzMDAiIGRhdGEtZGVmYXVsdC10YWI9Imh0bWwscmVzdWx0IiBkYXRhLXNsdWctaGFzaD0icUViSlltSyIgZGF0YS1wZW4tdGl0bGU9IndhLWNhcmQgZGVtbyAzOiBSZW5kZXJpbmcgYW4gYXJyYXkiIGRhdGEtdXNlcj0ic3RlaW5icmluZyIgZGF0YS10b2tlbj0iOWIyMDRlZTUxNDYwZTA4MTFkOTcyNTI2MGY5MzM4MWYiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYm9yZGVyOiAycHggc29saWQ7IG1hcmdpbjogMWVtIDA7IHBhZGRpbmc6IDFlbTsiPgogICAgICA8c3Bhbj5TZWUgdGhlIFBlbiA8YSBocmVmPSJodHRwczovL2NvZGVwZW4uaW8vc3RlaW5icmluZy9wZW4vcUViSlltSy85YjIwNGVlNTE0NjBlMDgxMWQ5NzI1MjYwZjkzMzgxZiI+CiAgd2EtY2FyZCBkZW1vIDM6IFJlbmRlcmluZyBhbiBhcnJheTwvYT4gYnkgSm9lIFN0ZWluYnJpbmcgKDxhIGhyZWY9Imh0dHBzOi8vY29kZXBlbi5pby9zdGVpbmJyaW5nIj5Ac3RlaW5icmluZzwvYT4pCiAgb24gPGEgaHJlZj0iaHR0cHM6Ly9jb2RlcGVuLmlvIj5Db2RlUGVuPC9hPi48L3NwYW4+CiAgICAgIDwvcD4KICAgICAgPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vcHVibGljLmNvZGVwZW5hc3NldHMuY29tL2VtYmVkL2luZGV4LmpzIj48L3NjcmlwdD4=[/cmsmasters_html]
In the above example, we are looping over a 3-item array using v-for. Since the only styling on the example is a width on the cards, it looks a little off. We can fix that with a little grid magic, though.
[cmsmasters_html shortcode_id=”ielp7k42p”]PHAgY2xhc3M9ImNvZGVwZW4iIGRhdGEtaGVpZ2h0PSIzMDAiIGRhdGEtZGVmYXVsdC10YWI9Imh0bWwscmVzdWx0IiBkYXRhLXNsdWctaGFzaD0iSm9HbXZtbSIgZGF0YS1wZW4tdGl0bGU9IndhLWNhcmQgZGVtbyA0OiBSZW5kZXJpbmcgYW4gYXJyYXkgd2l0aCBleHRyYSBzdHlsaW5nIiBkYXRhLXVzZXI9InN0ZWluYnJpbmciIGRhdGEtdG9rZW49IjJiM2E3YTFjZjBlZWYxYmI0MmIyNjE0YTk2NWY2ZWUwIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGJvcmRlcjogMnB4IHNvbGlkOyBtYXJnaW46IDFlbSAwOyBwYWRkaW5nOiAxZW07Ij4KICAgICAgPHNwYW4+U2VlIHRoZSBQZW4gPGEgaHJlZj0iaHR0cHM6Ly9jb2RlcGVuLmlvL3N0ZWluYnJpbmcvcGVuL0pvR212bW0vMmIzYTdhMWNmMGVlZjFiYjQyYjI2MTRhOTY1ZjZlZTAiPgogIHdhLWNhcmQgZGVtbyA0OiBSZW5kZXJpbmcgYW4gYXJyYXkgd2l0aCBleHRyYSBzdHlsaW5nPC9hPiBieSBKb2UgU3RlaW5icmluZyAoPGEgaHJlZj0iaHR0cHM6Ly9jb2RlcGVuLmlvL3N0ZWluYnJpbmciPkBzdGVpbmJyaW5nPC9hPikKICBvbiA8YSBocmVmPSJodHRwczovL2NvZGVwZW4uaW8iPkNvZGVQZW48L2E+Ljwvc3Bhbj4KICAgICAgPC9wPgogICAgICA8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9wdWJsaWMuY29kZXBlbmFzc2V0cy5jb20vZW1iZWQvaW5kZXguanMiPjwvc2NyaXB0Pg==[/cmsmasters_html]
In the next post, let’s see if we can take this to the next level.
[cmsmasters_divider shortcode_id=”aa2s5ph03″ width=”long” height=”1″ style=”solid” position=”center” margin_top=”50″ margin_bottom=”50″ animation_delay=”0″]
First example: https://codepen.io/steinbring/pen/myVGdNZ/18bc9a394c2cd81a5e2b681fc6b82a8b
Second example: https://codepen.io/steinbring/pen/EaPeaVL/1beda6ab3caf156ee035c3b7927abf86
Third example: https://codepen.io/steinbring/pen/qEbJYmK/9b204ee51460e0811d9725260f93381f
Fourth example: https://codepen.io/steinbring/pen/JoGmvmm/2b3a7a1cf0eef1bb42b2614a965f6ee0
#VueJs #WebAwesome
Ejemplo de Vuex con Nuxt https://myblog.clonbg.es/ejemplo-de-vuex-con-nuxt/ #Programación #VueJs https://clonbg.es

VueJS vs Angular: Khung nào phù hợp cho dự án của bạn?
VueJS nhẹ, dễ học, linh hoạt, phù hợp ứng dụng nhỏ - trung bình hoặc giao diện hướng UI. Angular toàn diện, mạnh mẽ, hỗ trợ TypeScript, lý tưởng cho ứng dụng lớn, doanh nghiệp với nhiều module và đội ngũ phát triển lớn.
Lựa chọn nên dựa trên quy mô dự án, độ phức tạp, yêu cầu về hiệu năng và năng lực đội ngũ.
#VueJS #Angular #Frontend #JavaScript #Frameworks #Vue #AngularFramework #LậpTrìnhFrontend #JavaScriptFramework #VueJSvsAngular
htt
Ejemplo de Vuex con Nuxt https://myblog.clonbg.es/ejemplo-de-vuex-con-nuxt/ #Programación #VueJs https://clonbg.es

Tác giả thiết kế website cho doanh nghiệp địa phương nhưng họ hủy giữa chừng. Dự án bị dừng lại, anh quyết định hoàn thiện thành template miễn phí, tối giản, phù hợp cho người mới, lập trình viên hoặc ai cần xây dựng trang web nhanh. Hỗ trợ tự nguyện nếu muốn cảm ơn. #Github #VueJS #TaiLieuMoRong #HtmlCss #LamNhiet
https://www.reddit.com/r/SideProject/comments/1pkeq6m/sharing_a_minimal_website_template_i_built/
Manuales de VueJS https://myblog.clonbg.es/manuales-de-vuejs/ #Programación #VueJs https://clonbg.es

How to Unit Test a Vue Composable With TypeScript, by @johnfraney.ca:
https://johnfraney.ca/blog/how-to-unit-test-a-vue-composable-with-typescript/
#howtos #testing #vuejs #functions #typescript