با سلام وتشکر؛ آیا امکان تبدیل تاریخ شمسی به میلادی وجود دارد؟ که البته تاریخ شمسی حاضر از نوع string میباشد برای نمونه "1399/01/11"؟ ممنون
بنده از sample-22-backend-part-01.zip استفاده کردم. مشکل از CORS بود. تنظیمات CORS را اعمال کردم، مشکل برطرف شد. تشکر
نظرات مطالب
5 دلیل برای استفاده از یک ابزار ORM
یک مقایسه دیگر هم اینجا است
http://farasun.wordpress.com/2011/01/26/entity-framework-vs-nhibernate/
کامنتها رو هم حتما بخونید
http://farasun.wordpress.com/2011/01/26/entity-framework-vs-nhibernate/
کامنتها رو هم حتما بخونید
اشتراکها
کتاب آموزش مقدماتی JavaScript
بعد از ایجاد فایل Text template که در جلسه قبل با آن آشنا شدید، برای شروع قواعد زیر را در نظر بگیرید :
- تنظیمات مربوط به فایل Text template و نحوه تولید خروجی در ابتدای فایل و بین علامت <#@ و #> قرار میگیرد.
- هر متنی که بصورت معمول در فایل tt نوشته شود، به همان صورت در فایل خروجی قرار میگیرد.
- هر دستوری که در بین علامتهای <#= و #> قرار گیرد هنگام کامپایل اجرا شده و معادل آن در همان مکان متن قرار میگیرد.
- هر دستوری که بین علامتهای <# و #> قرار گیرد، هنگام کامپایل اجرا میشود. در این صورت دستورات نوشته شده در این قسمت فقط اجرا میگردد و معمولا برای استفاده در قسمتهای دیگر، داخل بلوک <#= #> نوشته میشود .
- برای تعریف کلاس یا متد جدید جهت استفاده در فایل tt میتوانیم کلاس را در بین علامت <#+ و #> قرار دهیم. در این صورت کلاس و متدهای نوشته شده در قسمتهای دیگر، داخل بلوک <#= #> و یا <# #> مورد استفاده قرار میگیرند.
اجازه دهید با یک مثال ساده قواعد اولیه را بررسی کنیم :
در این مثال، T در واقع متغیری است که در بلوک <# #> تعریف گردیده و در بلوک <#= #> مقدار آن استفاده میشود. خروجی فایل چیزی شبیه به دو خط زیر خواهد بود:
خروجی Text template بالا فایل Cs با محتوی
شبیه کد زیر خواهد بود: (روز نگارش مطلب البته دوشنبه است) فکر میکنم این 3 مثال ساده، تا حد زیادی قواعد اولیه T4 Text
Template را برای شما روشن کرده باشد. در
قسمت بعدی برخی قواعد تکمیلی را در این مورد خدمتتون ارائه میدم.
- تنظیمات مربوط به فایل Text template و نحوه تولید خروجی در ابتدای فایل و بین علامت <#@ و #> قرار میگیرد.
- هر متنی که بصورت معمول در فایل tt نوشته شود، به همان صورت در فایل خروجی قرار میگیرد.
- هر دستوری که در بین علامتهای <#= و #> قرار گیرد هنگام کامپایل اجرا شده و معادل آن در همان مکان متن قرار میگیرد.
- هر دستوری که بین علامتهای <# و #> قرار گیرد، هنگام کامپایل اجرا میشود. در این صورت دستورات نوشته شده در این قسمت فقط اجرا میگردد و معمولا برای استفاده در قسمتهای دیگر، داخل بلوک <#= #> نوشته میشود .
- برای تعریف کلاس یا متد جدید جهت استفاده در فایل tt میتوانیم کلاس را در بین علامت <#+ و #> قرار دهیم. در این صورت کلاس و متدهای نوشته شده در قسمتهای دیگر، داخل بلوک <#= #> و یا <# #> مورد استفاده قرار میگیرند.
اجازه دهید با یک مثال ساده قواعد اولیه را بررسی کنیم :
<#@ template debug="false" hostspecific="false" language="C#" #> <#@ output extension=".txt" #> <# var T = DateTime.Now; #> The Time is : <#= T #> The Time is : <#= DateTime.Now #>
The Time is : 02/16/2014 14:17:39
The Time is : 02/16/2014 14:17:39
به عنوان یک مثال دیگر که قواعد توضیح داده شده را پوشش دهد به مثال زیر توجه کنید : The Time is : 02/16/2014 14:17:39
<#@ template debug="true" hostspecific="false" language="C#" #> <#@ output extension=".cs" #> using System; using System.Text; <# string ClassName = "DotnetTips"; #> public class <#= ClassName + "_" + new MyTestClass().Str #> { } <#+ public class MyTestClass { public string Str { get{return new DateTime().DayOfWeek.ToString() ;} } } #>
using System; using System.Text; public class DotnetTips_Monday { }
به عنوان یک مثال ساده دیگر برای فهم بیشتر به کد زیر جهت تولید Table در Html توجه کنید:
<#@ template debug="false" hostspecific="false" language="C#" #> <#@ output extension=".html" #> <html><body> <table> <# for (int i = 1; i <= 10; i++) { #> <tr> <td>Test name <#= i #> </td> <td>Test value <#= i * i #> </td> </tr> <# } #> </table> </body></html>
اشتراکها
کتابخانه css3-slick-modal-popups
HTML5 and CSS3 Slick Modal popups are made for your
convenience and ease of use to get your popups showing quickly and
efficiently.
- 15 transitions effects
- 5 transition speeds
- 9 popup positions
- 50+ basic options
- Advanced options
- Custom modal size
- Set a cookie for visitors
- Set a timed visibility delay
- Easy to use and modify
- Lightweight and flexible
- HTML5 and CSS3 powered
- jQuery powered
در قسمتهای قبلی( ^ و ^) نحوهی ارتباط بین کامپوننتها در Vue.js بررسی و مزایا و معایب آنها بیان شد. روش دیگری هم برای ارسال اطلاعات از کامپوننتِ Parent به فرزندانش وجود دارد که با استفاده از Dependency Injection یا به اختصار DI مقدور میباشد و در ورژن +2.2 معرفی شد که نحوهی ارتباط بین کامپوننتِ Parent و فرزندانش را آسان نمود. پیشتر برای ارتباط از Parent به Child، از Props استفاده میکردیم، ولی اگر قرار بود در چند سطح این ارتباط عمیق باشد، باز هم مدیریت کردن Props مشکل و سخت بود. اکنون با استفاده از provide و inject قادر خواهیم بود تا آبجکت، فانکشن و یا دیتایِ یک کامپوننتِ Parent را در فرزندانش فراخوانی و استفاده کنیم. اگر در حالت عادی نیاز بود تا در دو سطح، یا بیشتر (مانند تصویر زیر) دیتایِ کامپوننت پدر را به فرزند، نوه و ... انتقال دهیم، میبایست اطلاعات را بصورت Props به هر Level انتقال دهیم.
و در کامپوننتهای فرزند به شکل زیر میتوانیم مقدار foo را دریافت کنیم:
روش جاری شباهت زیادی به استفاده از Context در React دارد:
Context provides a way to pass data through the component tree without having to pass props down manually at every level
جهت به اشتراک گذاری دیتا یا تابعی در کامپوننت Parent با Children، به شکل زیر عمل میکنیم. در اینجا با استفاده از provide، دیتای foo به اشتراک گذاشته شدهاست:
// parent component providing 'foo' var Provider = { provide: { foo: 'bar' }, // ... }
// child component injecting 'foo' var Child = { inject: ['foo'], created () { console.log(this.foo) // => "bar" } // ... }
میتوانیم مقدار پیش فرض دیتایِ ارسالی از کامپوننت Parent را در قسمت data و props در کامپوننت Child دریافت نماییم:
Using an injected value as the default for a prop //دریافت میکنیم props در قسمت child را در کامپوننت foo مقدار const Child = { inject: ['foo'], props: { bar: { default () { return this.foo } } } } Using an injected value as data entry //دریافت میکنیم data در قسمت child را در کامپوننت foo مقدار const Child = { inject: ['foo'], data () { return { bar: this.foo } } }
نکته: در این روش در صورتیکه دیتایِ به اشتراک گذاشته شده در کامپوننتِ Parent تغییر کند، مقدار آن در کامپوننت Child تغییری نخواهد کرد و مانند روشهای قبلی (^ و ^) نیست و نیاز به نوشتن کدی برای تعامل داشتن و بهروز رسانی مقادیر، در کامپوننت Child میباشد.
کد زیر را در نظر بگیرید؛ با زدن دکمهی Increment counter مقدار counter در کامپوننتِParent تغییر میکند، ولی در کامپوننت Child، مقدار counter_in_child تغییری حاصل نمیکند.
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <title>Dependency injection</title> </head> <body> <div id="app"> <button @click="counter++">Increment counter</button> <h2>Parent</h2> <p>{{counter}}</p> <div> <h3>Child</h3> <child></child> </div> </div> <script> const Child = { inject: ['counter_in_child'], template: `<div>Counter Child is:{{ counter_in_child }}</div>` }; new Vue ({ el: "#app", components: { Child }, provide() { return { counter_in_child: this.counter }; }, data() { return { counter: 0 }; } }); </script> </body> </html>
برای اینکه بتوان تغییرات ایجاد شدهی بر روی دیتا را در کامپوننتِChild، مشاهده کرد، نیاز داریم کد زیر را در قسمت provide به ازای آن دیتا اضافه کنیم:
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <title>Dependency injection</title> </head> <body> <div id="app"> <button @click="counter++">Increment counter</button> <h2>Parent</h2> <p>{{counter}}</p> <div> <h3>Child</h3> <child></child> </div> </div> <script> const Child = { inject: ['counter_in_child'], template: `<div>Counter Child is:{{ counter_in_child.counter }}</div>` }; new Vue ({ el: "#app", components: { Child }, provide() { const counter_in_child={}; Object.defineProperty(counter_in_child,'counter',{ enumerable:true, get:()=>this.counter }) return { counter_in_child }; }, data() { return { counter: 0 }; } }); </script> </body> </html>
مثالی از نحوه به اشتراک گذاری متد بین Parent و Child.
نتیجه گیری:
A) استفاده از این روش مرسوم نیست و بیشتر برای ساخت پلاگین در Vuejs مورد استفاده قرار میگیرد:
provide
and inject
are primarily provided for advanced plugin / component library use cases. It is NOT recommended to use them in generic application code C) این روش برای ارتباط Sibling Component مناسب نیست.
نظرات مطالب
بلاگر و دومین سفارشی
نحوه اضافه کردن دیسکاس به بلاگر
http://www.bloggertipandtrick.net/2011/03/add-disqus-comment-system-to-blogger.html
http://www.bloggertipandtrick.net/2011/03/add-disqus-comment-system-to-blogger.html