diff --git a/src/guide/essentials/template-syntax.md b/src/guide/essentials/template-syntax.md index eb2eb799..cc64a758 100644 --- a/src/guide/essentials/template-syntax.md +++ b/src/guide/essentials/template-syntax.md @@ -1,84 +1,90 @@ -# Template Syntax {#template-syntax} +# سینتکس قالب {#template-syntax} -Vue uses an HTML-based template syntax that allows you to declaratively bind the rendered DOM to the underlying component instance's data. All Vue templates are syntactically valid HTML that can be parsed by spec-compliant browsers and HTML parsers. +Vue از سینتکس قالب برپایه HTML استفاده میکند که این اجازه رو به شما میدهد تا DOM نمایش داده شده را به دیتای نمونه کامپوننت پایه متصل کند. +تمام قالبهای Vue از لحاظ سینتکس،HTML معتبر هستند که میتوانند توسط مرورگرهای با مشخصات سازگار و تحلیل کننده‌های HTML تحلیل شوند. -Under the hood, Vue compiles the templates into highly-optimized JavaScript code. Combined with the reactivity system, Vue can intelligently figure out the minimal number of components to re-render and apply the minimal amount of DOM manipulations when the app state changes. +در ماءواری ماجرا، Vue قالبها را به کد جاوا اسکریپت بسیار بهینه شده کامپایل میکند. همراه با سیستم واکنش پذیری، Vue میتواند بصورت هوشمندانه از حداقل تعداد کامپوننتهایی که باید مجددا رندر شوند و در هنگام تغییر وضعیت برنامه، حداقل دستکاری‌های DOM را اعمال کند. -If you are familiar with Virtual DOM concepts and prefer the raw power of JavaScript, you can also [directly write render functions](/guide/extras/render-function) instead of templates, with optional JSX support. However, do note that they do not enjoy the same level of compile-time optimizations as templates. +اگر با کلیت Virtual DOM آشنا هستید و قدرت خالص جاوااسکریپت را ترجیح می‌دهید، شما همچنین می‌توانید [مستقیما توابع مربوط به تحلیل را](/guide/extras/render-function) بجای قالبها، با پشتیبانی اختیاری از JSX بنویسید. -## Text Interpolation {#text-interpolation} +## درج متن {#text-interpolation} -The most basic form of data binding is text interpolation using the "Mustache" syntax (double curly braces): +پایه‌ای ترین شکل بایند داده درج متن با سینتکس سیبیل (دو آکولاد) میباشد: ```vue-html -Message: {{ msg }} +پیام: {{ msg }} ``` -The mustache tag will be replaced with the value of the `msg` property [from the corresponding component instance](/guide/essentials/reactivity-fundamentals#declaring-reactive-state). It will also be updated whenever the `msg` property changes. +تگ سیبیل با مقدار `msg`، [پراپرتی از شی کامپوننت مربوطه] (/guide/essentials/reactivity-fundamentals#declaring-reactive-state) جایگزین خواهد شد. همچنین این مقدار با هر تغییر در پراپرتی `msg` بروزرسانی خواهد شد. -## Raw HTML {#raw-html} -The double mustaches interpret the data as plain text, not HTML. In order to output real HTML, you will need to use the [`v-html` directive](/api/built-in-directives#v-html): +## HTML خام {#raw-html} + +آکولاد دوتایی داده را به عنوان متن ساده تفسیر میکند. برای خروجی HTML واقعی باید از [دایرکتیو `v-html`](/api/built-in-directives#v-html) استفاده کنید. ```vue-html -

Using text interpolation: {{ rawHtml }}

-

Using v-html directive:

+

استفاده از درون‌یابی متن: {{ rawHtml }}

+

استفاده از دایرکتیو v-html:

```
-

Using text interpolation: {{ rawHtml }}

-

Using v-html directive:

+

استفاده از درون‌یابی متن: {{ rawHtml }}

+

استفاده از دایرکتیو v-html:

-Here we're encountering something new. The `v-html` attribute you're seeing is called a **directive**. Directives are prefixed with `v-` to indicate that they are special attributes provided by Vue, and as you may have guessed, they apply special reactive behavior to the rendered DOM. Here, we're basically saying "keep this element's inner HTML up-to-date with the `rawHtml` property on the current active instance." +اینجا با چیزی جدید مواجه شده ایم. اتریبیوت `v-html` همانطور که می‌بینید **دایرکتیو** نام گذاری شده است. دایرکتیوها پیشوند `v-` دارند تا نمایش دهنده این باشد که آنها اتریبیوت خاصی هستند که توسط Vue عرضه شده است و همانطور که ممکن است حدس زده باشید، آنها رفتار واکنشی ویژه ای را به DOM رندر شده اعمال می کنند. اینجاست که ما اساسا می‌گوییم "این عنصر داخلی HTML را با پراپرتی `rawHTML` بر شی فعال حال حاضر بروز رسانی نگهدارید. + +محتوای `span` با مقدار پراپرتی `rawHtml` جایگزین خواهد شد، که بعنوان HTML ساده تفسیر میشود. بایند دیتا در اینجا نادیده گرفته میشود. در نظر داشته باشید که شما نمیتوانید از `v-html` برای بایند بخشی از قالب استفاده کنید، زیرا که Vue یک موتور قالب‌بندی برپایه استرینگ نیست. در عوض، کامپوننت‌ها به عنوان واحدهای اساسی برای استفاده مجدد و بایند UI ارجحتر هستند. -The contents of the `span` will be replaced with the value of the `rawHtml` property, interpreted as plain HTML - data bindings are ignored. Note that you cannot use `v-html` to compose template partials, because Vue is not a string-based templating engine. Instead, components are preferred as the fundamental unit for UI reuse and composition. -:::warning Security Warning -Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to [XSS vulnerabilities](https://en.wikipedia.org/wiki/Cross-site_scripting). Only use `v-html` on trusted content and **never** on user-provided content. +:::warning هشدار امنیتی +رندر داینامیکی HTML دلخواه بر وبسایت شما میتواند بسیار خطرناک باشد زیرا که میتواند به آسانی منجر به ]آسیب پذیری XSS [ (https://en.wikipedia.org/wiki/Cross-site_scripting) شود. از `v-html` فقط بر مطالب مورد اعتماد استفاده کنید و **هرگز** بر محتوای ارائه شده توسط کاربر استفاده نکنید. ::: -## Attribute Bindings {#attribute-bindings} -Mustaches cannot be used inside HTML attributes. Instead, use a [`v-bind` directive](/api/built-in-directives#v-bind): +## بایند اتریبیوت {#attribute-bindings} + +آکولادها نمیتوانند در اتریبیوت HTML استفاده شوند. در عوض یک [دایرکتیو `v-bind`](/api/built-in-directives#v-bind): ```vue-html
``` -The `v-bind` directive instructs Vue to keep the element's `id` attribute in sync with the component's `dynamicId` property. If the bound value is `null` or `undefined`, then the attribute will be removed from the rendered element. +دایرکتیو `v-bind` به Vue دستور میدهد تا اتریبیوت `id` یک المنت را همگام با پراپرتی `dynamicId` کامپوننت نگهدارد. اگر مقدار مقید شده برابر با `null` یا `undefined` باشد، سپس اتریبیوت از المنت رندر شده حذف خواهد شد. -### Shorthand {#shorthand} +### مختصر نویسی {#shorthand} -Because `v-bind` is so commonly used, it has a dedicated shorthand syntax: +به این دلیل که `v-bind` استفاده خیلی رایجی دارد. درنتیجه یک قاعده دستوری اختصاصی مختصر نویسی دارد: ```vue-html
``` -Attributes that start with `:` may look a bit different from normal HTML, but it is in fact a valid character for attribute names and all Vue-supported browsers can parse it correctly. In addition, they do not appear in the final rendered markup. The shorthand syntax is optional, but you will likely appreciate it when you learn more about its usage later. + +اتریبیوتهایی که با `:` شروع میشوند ممکن است یه مقدار نسب به HTML عادی متفاوت بنظر بیان، اما این درواقع یک کاراکتر صحیح برای نامهای اتریبیوت است و تمام مرورگرهایی که از Vue پشتیبانی میکنند، میتوانند آنرا بدرستی پارس کنند. علاوه بر این، آنها در علامت نهایی رندر شده ظاهر نمیشوند. قاعده دستوری اختصاصی اختیاری میباشد، اما شما بخوبی از آن قدردان خواهید شد وقتی که از کاربردهای آن بعدا بیشتر یاد بگیرید. > For the rest of the guide, we will be using the shorthand syntax in code examples, as that's the most common usage for Vue developers. -### Boolean Attributes {#boolean-attributes} +### اتریبیوت‌های بولین {#boolean-attributes} + +[اتریبیوتهای بولین](https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes) اتریبیوتهایی هستند که میتواند true / false بودن مقادیر را با حضور آنها بر یک المنت نشان داد. برای مثال، [`disabled`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled) یکی رایج ترین اتریبیوتهای بولین استفاده شده میباشد. -[Boolean attributes](https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes) are attributes that can indicate true / false values by their presence on an element. For example, [`disabled`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled) is one of the most commonly used boolean attributes. -`v-bind` works a bit differently in this case: +`v-bind` در این مورد مقداری متفاوت عمل میکند: ```vue-html - + ``` -The `disabled` attribute will be included if `isButtonDisabled` has a [truthy value](https://developer.mozilla.org/en-US/docs/Glossary/Truthy). It will also be included if the value is an empty string, maintaining consistency with `