اشتراکها
دورههای رایگان فراگیری Data Science
Finalizers are interesting and dangerous because they are an environment in which everything you know is wrong.
I’ve written a lot about the perils of C# finalizers / destructors
(either name is fine) over the years, but it’s scattered in little bits
over the internet. In this series I’m going to try to get everything in
one place; here are a bunch of things that many people believe about
finalizers, all of which are wrong.
Finalizers are interesting and dangerous because they are an environment in which everything you know is wrong.
I’ve written a lot about the perils of C# finalizers / destructors
(either name is fine) over the years, but it’s scattered in little bits
over the internet. In this series I’m going to try to get everything in
one place; here are a bunch of things that many people believe about
finalizers, all of which are wrong.
نظرات مطالب
کامپوننتها در Vue.js
نکته تکمیلی: هفت روش برای ساخت کامپوننت در vue.js
با استفاده از روش JSX تبدیل به کد خواناتر زیر میشود
1- استفاده از Strings
بصورت پیش فرض templateها بصورت رشته در جاوااسکریپت تعریف میشوند. تعریف تمپلتها به این شکل ناخوانا میباشد و توصیه نمیشود
Vue.component('todo-item', { template: '\ <li>\ {{ title }}\ <button v-on:click="$emit(\'remove\')">Remove</button>\ </li>\ ' })
2- استفاده از Template literals
در ES6 با استفاده از کاراکتر backticks میتوان یک تمپلت را در چند خط تعریف نمود و خوانایی بهتری نسبت به روش اول (استفادهاز Strings) دارد.
Vue.component('custom-input', { template: ` <input v-bind:value="value" v-on:input="$emit('input', $event.target.value)" > ` })
3-استفاده از X-Template
در این روش تمپلیت را درون تگ scriptای که بصورت x-template مشخص شده، درون یک فایل مجزا قرار میدهیم. تنها ایراد این روش جدا نوشتن تمپلیت در فایلی جداگانه و بیرون از کامپوننت میباشد.
<script type="x-template" id="my-template" src="template.js"> </script> <div id="app"></div> new Vue({ el: '#app', template: '#my-template' })
4- روش Inline Template
با اضافه کردن attributeای با نام inline-template مشخص میکنیم که یک کامپوننت میباشد (چیزی شبیه slot). نسبت به روش X-Template بهتر میباشد؛ زیرا تعریف کامپوننت در همان فایل جاری انجام میشود و نیازی به جداسازی و زمانی برای بارگذاری یک فایل جاوااسکریپتی نیست.
<div id="app"> <gallery inline-template> .... Vue.component('gallery', { ...
5- استفاده از Render functions
اگر به نوشتن کد جاوااسکریپت تسلط و علاقه دارید، میتوانید این روش را انتخاب کنید و تعریف تمپلیت در اینجا بصورت ایجاد objectای از جاوااسکریپت میباشد. نوشتن چنین تمپلیتی استفاده کامل از قابلیت جاوااسکریپت را امکان پذیر میسازد
const template = ` <ul> <li v-for="item in items"> {{ item }} </li> </ul>`; const compiledTemplate = Vue.compile(template); new Vue({ el: '#app', data() { return { items: ['Item1', 'Item2'] } }, render(createElement) { return compiledTemplate.render.call(this, createElement); } });
6- استفاده از JSX
استفاده از این روش برای نوشتن کد کمتر ترجیحا بهتر است و بعنوان یک روش خوب محسوب میشود. البته بصورت مستقیم توسط مرورگر قابلیت رندر و اجرایی ندارد و برای این منظور از babel استفاده میکنیم.
به فرض نوشتن کد زیر توسط روش Render functions
new Vue({ el: '#app', data: { msg: 'Show the message' }, methods: { hello () { alert('Here is the message') } }, render (createElement) { return createElement( 'span', { class: { 'my-class': true }, on: { click: this.hello } }, [ this.msg ] ); }, });
new Vue({ el: '#app', data: { msg: 'Show the message.' }, methods: { hello () { alert('This is the message.') } }, render(h) { return ( <span class={{ 'my-class': true }} on-click={ this.hello } > { this.msg } </span> ) } });
7- استفاده از Single File Components
در این روش هر کامپوننت دارای سه قسمت برای تعریف template , script , style میباشد و محبوبترین روش برای ایجاد کامپوننت میباشد و درصورت پیچیده شدن و زیاد شدن حجم پروژه روش مناسبی به نظر میرسد. در این مقاله نیز از همین روش استفاده شده است.
نتیجه گیری:
اینکه از چه روشی برای ایجاد کامپوننت استفاده میکنید، کاملا بستگی به اندازه پروژه، توانایی (مانند روش JSX) و علاقه شما دارد. ولی بطور کلی استفاده از روش Single File Components بیشتر مورد توجه میباشد.
اشتراکها
کتابخانه ToProgress
A lightweight (2.2 KB), no-dependency top progress bar library. Demo