چرا Angular؟
در این مطلب نویسنده خلاصه ای راجع به انگیولار، مزایا و معایبش گفته. در آخر هم نتیجه گیری کرده با وجود اینکه Angular 2 در راه است اما Angular 1 برای زمان طولانی پشتیبانی خواهد شد.
Consider using a class instead of an interface for services and declarables (components, directives, and pipes)
Consider using an interface for data models
البته این مورد موافقها و مخالفهایی هم دارد.در کل سلیقهای است و بهتر است یکنواختی و یکدستی کد مدنظر باشد.
function isWasmSupported() { try { if (typeof WebAssembly === "object" && typeof WebAssembly.instantiate === "function") { const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00)); if (module instanceof WebAssembly.Module) return new WebAssembly.Instance(module) instanceof WebAssembly.Instance; } } catch (e) { } return false; } if(!isWasmSupported()) { alert("WebAssembly is not available in your browser. Please try using the latest version of Chrome, Firefox, Edge or Safari."); }
Blazor WebAssembly 6x به همراه قابلیتی است به نام ahead-of-time (AOT) compilation که در این حالت، کدهای دات نتی برنامه، مستقیما به native WebAssembly کامپایل میشوند. این مورد سبب بالا رفتن کارآیی برنامه خواهد شد؛ در عوض بالا رفتن حجم نهایی قابل توزیع.
اگر از AOT compilation استفاده نشود (یعنی حالت متداول)، Blazor WebAssembly در مرورگر، به کمک مفسر IL یا همان NET Intermediate Language. که به صورت WebAssembly تهیه شدهاست، اجرا خواهد شد. یک چنین حالتی به دلیل استفادهی از مفسر، نسبت به حالت استفادهی از JIT سمت سرور (یا همان NET just-in-time (JIT) runtime.)، اندکی کندتر است. AOT compilation جهت رفع یک چنین کمبودی ارائه شدهاست تا کدهای دات نتی را مستقیما و بدون نیاز به مفسر، تبدیل به یک native WebAssembly کند. این مورد سرعت و کارآیی برنامههایی را که کارهای محاسباتی مبتنی بر CPU را انجام میدهند، به نحو قابل ملاحظهای افزایش میدهد. در مقابل باید درنظر داشت که حجم نهایی WebAssemblyهای واقعی تولید شده، از نمونهی IL آنها بالاتر است (حدود 2 برابر) که مدت زمان ابتدایی دریافت برنامه را افزایش میدهند.
روش فعالسازی کامپایل AOT
ابتدا نیاز است work load آنرا توسط دستور زیر دریافت کرد (ابزارهای کامپایل AOT، جزئی از SDK نیستند):
dotnet workload install wasm-tools
<PropertyGroup> <RunAOTCompilation>true</RunAOTCompilation> </PropertyGroup>
یک نکته: هنوز در نگارش 6.0 RTM، یکسری از قابلیتهای AOT اضافه نشدهاند که باید منتظر سرویسپکهای آن بود. برای مثال اگر این کامپایل، بر روی پروژهای که فقط سورس کد است اجرا شود، با موفقیت به پایان میرسد؛ اما با اضافه شدن کتابخانههای ثالث ممکن است با شکست مواجه شود. اگر در این حالت خطایی را دریافت کردید، عملیات publish را به صورت dotnet publish -p:RunAOTCompilation=true -bl انجام دهید. سوئیچ bl- سبب میشود تا فایلی به نام msbuild.binlog در ریشهی پروژهی شما تولید شود. این فایل در حقیقت لاگ باینری MSBuild است که توسط برنامهی Viewer آن قابل مشاهدهاست. در اینجا به دنبال exit codeها بگردید؛ یک نمونهی آن.
کتابخانه Zepto.js
Zepto is a minimalist JavaScript library for modern browsers with a largely jQuery-compatible API. If you use jQuery, you already know how to use Zepto.
While 100% jQuery coverage is not a design goal, the APIs provided match their jQuery counterparts. The goal is to have a ~5-10k modular library that downloads and executes fast, with a familiar and versatile API, so you can concentrate on getting stuff done.
npm install zepto