مرحلهی اول: نصب SDK مربوطه
در این تاریخ، این SDK در مرحلهی پیشنمایش است و نگارش نهایی آن قرار است صرفا با VS 2019 سازگار و هماهنگ باشد (و با VS 2017 کار نمیکند)؛ اما هم اکنون در VSCode قابل استفادهاست. برای این منظور SDK آنرا از آدرس https://dotnet.microsoft.com/download/dotnet-core/3.0 دریافت و نصب کنید. پس از نصب، یک چنین خروجی را در خط فرمان مشاهده خواهید کرد:
> dotnet --version 3.0.100-preview-010184
مشکل: پس از نصب نگارش 3، ممکن است برنامههایی که از SDK نگارش 2 استفاده میکنند، به مشکل بر بخورند.
راه حل: برنامههای مبتنی بر NET Core.، شماره نگارش SDK خود را از فایل ویژهای به نام global.json دریافت میکنند. اگر این فایل در ریشهی پروژهی شما وجود نداشته باشد، یعنی همواره از آخرین شمارهی SDK نصب شده استفاده شود. بنابراین ابتدا لیست SDKهای نصب شده را با دستور زیر پیدا کنید:
> dotnet --list-sdks
> dotnet new globaljson --sdk-version 2.2.100 > type global.json
مرحلهی دوم: نصب افزونهی پیشنمایش VSCode مخصوص C# 8.0
در این تاریخ هنوز این افزونه در نگارش بتای آن قرار دارد. بنابراین در لیست دریافتهای خودکار VSCode قرار نمیگیرد و باید دستی نصب شود. برای این منظور به آدرس https://github.com/OmniSharp/omnisharp-vscode/releases مراجعه کرده و آخرین نگارش بتای آنرا دریافت کنید.
در VSCode، قسمتیکه افزونهها را نمایش میدهد، یک دکمهی ... مانند وجود دارد. بر روی آن که کلیک کنید. در منوی باز شده، گزینهی install from vsix نیز موجود است که دقیقا برای نصب دستی یک چنین افزونههایی پیشبینی شدهاست. پس از نصب فایل vsix دریافت شدهی از GitHub، شماره نگارش 1.18.0-beta7 در قسمت افزونههای VSCode قابل مشاهده خواهد بود.
مرحلهی آخر: ایجاد یک پروژهی جدید مخصوص NET Core 3x. با پشتیبانی از C# 8.0
اکنون یک پوشهی جدید را ایجاد کرده و در خط فرمان دستور dotnet new console را صادر کنید. سپس فایل csproj آنرا به صورت زیر تغییر دهید تا از NET Core 3x. و C# 8.0 و قابلیت جدید Nullable Reference Types آن پشتیبانی کند:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <LangVersion>8.0</LangVersion> <NullableContextOptions>enable</NullableContextOptions> </PropertyGroup> </Project>
سایت آموزشی ZetCode
به نقل از این سایت: " مأموریت این سایت آموزش سریع و آسان و فهم تکنولوژیهای روز است. "
CoffeeScript #15
قسمتهای اصلاح نشده
در ادامهی مطالب قسمت قبل، به برخی دیگر از معایب طراحی در جاوااسکریپت که در CoffeeScript نیز اصلاح نشدهاند میپردازیم.استفاده از parseInt
تابع ()parseInt در جاوااسکریپت، در صورتیکه یک مقدار رشتهای را به آن ارسال کنید و پایهی مناسب آن را تعیین نکنید، نتایج غیره منتظرهای (unexpected) را باز میگرداند . برای مثال:
# Returns 8, not 10! parseInt('010') is 8
# Use base 10 for the correct result parseInt('010', 10) is 10
Strict mode
Strict mode یکی از قابلیتهای ECMAScript 5 است که به شما اجازه میدهد تا یک برنامه یا تابع جاوااسکریپت را در محیطی محدود اجرا کنید. این محدودیت موجب نمایش بیشتر خطاها و هشدارها نسبت به حالت نرمال میشود و به توسعه دهندگان این امکان را میدهد تا از نوشتن کدهای غیر قابل بهینه سازی برای اشتباهات رایج جلوگیری کنند.
به عبارت دیگر Strict mode باعث کاهش اشکالات، افزایش امنیت، بهبود عملکرد و حذف برخی از سختیهای استفاده از ویژگیهای زبان میشود.
در حال حاضر Strict mode، در مرورگرهای زیر پشتیبانی میشود:
- Chrome >= 13.0
- Safari >= 5.0
- Opera >= 12.0
- Firefox >= 4.0
- IE >= 10.0
با این حال، Strict mode به طور کامل با مرورگرهای قدیمی سازگار است.
تغییرات Strict mode
- خطا در پروپرتیها و نام آرگومانهای تابع تکراری
- خطا در عدم استفادهی صحیح از delete
- خطا در زمان دسترسی به arguments.caller و arguments.callee (به دلایل عملکرد)
- استفاده از عمگر with سبب بروز خطای نحوی میشود
- متغیرهای خاص مانند undefined که قابل نوشتن نیستند
- معرفی کلمات کلیدی رزرو شده مانند implements, interface, let, package, private, protected, public, static و yield.
با این حال، برخی از رفتارهای زمان اجرای Strict mode نیز تغییر کرده است:
- متغییرهای سراسری به صورت صریح و روشن هستند (کلمه کلیدی var نیاز است). مقدار سراسری this نیز به صورت undefined است.
- eval نمیتواند متغیر جدیدی را در حوزهی محلی خود تعریف کند.
- بدنهی هر تابع باید قبل از استفاده تعریف شده باشد (قبلا گفتم که در جاوااسکریپت شما میتوانید قبل از تعریف تابع آن را فراخوانی کنید).
- آرگومانها تغییر ناپذیر هستند.
CoffeeScript در حال حاضر بسیاری از الزامات Strict mode را پیاده سازی کردهاست مانند: همیشه از کلمه کلیدی var برای تعریف متغیر استفاده میکند؛ اما فعال کردن Strict mode در برنامههای CoffeeScript نیز بسیار مفید خواهد بود. در واقع CoffeeScript بر روی انطباق برنامهها با Strict mode در زمان کامپایل را، در برنامههای آینده خود دارد.
استفاده از Strict mode
برای فعال کردن بررسی محدودیت، کد و توابع خود را با این رشته شروع کنید:-> "use strict" # ... your code ...
do -> "use strict" console.log(arguments.callee)
Strict mode دسترسی به arguments.callee و arguments.caller، که تاثیر بدی را بر روی عملکرد کد شما دارند، حذف میکند و استفادهی از آنها سبب بروز خطا میشود.
در مثال زیر در حالت strict mode سبب بروز خطای TypeError میشود، اما در حالت نرمال به خوبی اجرا شده و یک متغیر سراسری را ایجاد میکند.
do -> "use strict" class @Spine
do -> "use strict" class window.Spine
شما میتوانید در زمان توسعه برنامه جاوااسکریپت خود Strict mode را فعال کنید و در زمان انتشار، بدون Strict mode برنامهی خود را منتشر کنید.
JavaScript Lint
JavaScript Lint یک ابزار بررسی کیفیت کدهای جاوااسکریپت است و اجرای برنامهی شما از طریق این راه عالی باعث بهبود کیفیت و بهترین شیوهی کد نویسی میشود. این پروژه براساس ابزار JSLint است. شما میتوانید چک لیست سایت JSLint را که شامل موضوعاتی است که باید آنها در نظر داشته باشید، مانند متغیرهای سراسری، فراموش کردن نوشتن سمی کالن، کیفیت ضعیف عمل مقایسه را نام برد.
خبر خوب این است که CoffeeScript تمام موارد گفته شدهی در چک لیست را انجام میدهد. بنابراین کد تولیدی CoffeeScript با JavaScript Lint کاملا سازگار است. در واقع ابزار coffee از lint ،option پشتیبانی میکند.
coffee --lint index.coffee index.coffee: 0 error(s), 0 warning(s)