AngularJS چیست؟
با گسترش وسایل لمسی، اپلیکیشنهای آن نیز موردتوجه قرار گرفته است. اغلب اپلیکیشنها، با کمک html+js قابل پیادهسازی هستند و به صورت صفحات HTML میتوانند تولید و سپس به اپ تبدیل شوند
با گسترش وسایل لمسی، اپلیکیشنهای آن نیز موردتوجه قرار گرفته است. اغلب اپلیکیشنها، با کمک html+js قابل پیادهسازی هستند و به صورت صفحات HTML میتوانند تولید و سپس به اپ تبدیل شوند از سویی بسیاری از سایتهایی که مبتنی بر ارائه گستره وسیع اطلاعات هستند، دارای یک اسکلت مشخص هستند و تنها اطلاعات آن تغییر میکند. دو عامل فوق باعث شده که فریمورکهای جاوا اسکریپتی مبتنی بر الگوی MVC (که در آن دادهها و تمپلت از کنترلر مستقل هستند) در سالهای اخیر رشد زیادی کنند که فریمورکهای Angular, Ember, Backbone, knockoutچهار نمونه معروف از آنها هستند که البته رغبت جهانی به سمت AngularJS بوده و به شدت در حال رشد است. به اینگونه برنامهها (که دارای یک اسکلت ساده یا تکصفحهای هستند)، Single Page Application یا SPA گفته میشود. AngularJS توسط شرکت Google ایجاد شده و به دلیل قدرتش بسیار هم مورد رغبت برنامهنویسان قرار گرفته، لذا تمرکز اصلی مطلب فعلی نیز روی آن است.
مزایا و معایب استفاده از این فریمورکها برای ما برنامه نویسان چیست؟
تسریع در پیادهسازی پروژه برنامهنویسی، یکی از دلایل استفاده از انگولر جیاس بین برنامهنویسان است اما برای دارندگان یک سایت (خصوصا پربازدید) مهمترین حسن استفاده از اینگونه فریمورکها؛ صرفهجویی در منابع سرور است که موجب میشود سرور بتواند به افراد بیشتری پاسخگو باشد. توضیح بیشتر آنکه؛ بخشی از پردازنده سرور صرف قرار دادن اطلاعات (Data) در قالب (Template) میشود و نهایتا سورس کامل html صفحه به سمت کاربر ارسال میشود. اما در صورت استفاده از AngularJS و امثال آن، قالب (Template) یکبار لود میشود و بعد از آن فقط دیتا رد و بدل میشود. درست مانند محیط جیمیل. این کار بار پردازشی سرور را کاهش میدهد و آن را روی دوش کلاینت میاندازد. همچنین پهنای باند مصرفی سرور و کاربر را به شدت کاهش میدهد در نتیجه کاربر احساس میکند برنامه با سرعت بسیار بیشتری کار میکند. شاید تصور کنید که AngularJS همان Ajax است ! اما خیر؛ AngularJS یک فریمورک مبتنی بر MVC است که از Ajax نیز استفاده کرده است. AngularJS موجب کاهش مقدار کدنویسی (و در نتیجه افزایش سرعت تولید برنامهها) شده است. و اما معایب آن: برای کلاینت که اشکالی ندارد و بلکه به دلیل کاهش پهنای باند مصرفی، کاملا به نفع کاربر هم هست اما برای برنامهنویسان و دارندگان یک سایت چطور؟ شاید بتوان گفت که مهمترین اشکال سپردن Template Engine به کلاینت (جاوا اسکریپت)، مساله SEO است. این امر باعث میشود که AngularJS برای برنامههایی مفید باشد که مساله SEO برایشان مهم یا اصلا مطرح نیست! مثل اپلیکیشنهای موبایلی یا سایتهایی که برای یک یا چند کاربر محدود قرار است نمایش داده شود (مثل همین جیمیل یا یک برنامه درون سازمانی که فقط افراد معدودی قرار است به آن دسترسی داشته باشند نه search engine ها!
آیا برای حل مشکل SEO ی AngularJS راه حلی وجود دارد؟ بله اما کمی سختی دارد!
از سالها قبل، مشکل موتورهای جستجو با محتویاتی که Ajax ی لود میشود، مطرح بود و راهحلهایی برای آن مطرح شد از جمله خود گوگل در این صفحه راه حل خودش را توضیح داده که از سوی بسیاری از برنامهنویسان پذیرفته شده و مبنای کار قرار گرفته است. این مقاله جدید نمونه کد و تنظیمات لازم برای کاربرد عملی آن را نشان میدهد. (هرچند راه حل اصلی همان است که گوگل در پی آن است؛ اجرای سایت به صورت یک کاربر واقعی و سپس ذخیره اطلاعات نمایش داده شده. این کار هم مشکل محتویات js ی را حل میکند و هم مانع ایندکس شدن محتویات اسپم میشود البته تکنیکهای دیگری نیز وجود دارد مثل شناسایی موتورهای جستجو و نمایش محتوای خاص به آنها و ... . مقالهAngularJS and SEO جزو بهترین مقالات آموزشی در این زمینه است. پروژه Prerender.io نیز برای تسهیل این کار با نصب برنامه خاص روی سرور اقدام کرده است که قابل تقدیر است. همانطور که گوگل در این مطلب گفته، از این به بعد گوگل جاوا اسکریپت را میفهمد! لذا لازم نیست برای سئوی انگولرجیاس هیچ کار اضافهای انجام دهید سایت Search Engine Land هم که یک سایت تخصصی سئو است، این قابلیت گوگل را در عمل تست کرده و نتیجه را در این مطلب ارائه کرده است. همانطور که میبینید، موتور ایندکس گوگل به خوبی تغییرات حتی متاتگهای مرتبط با سئو همچون title, description, canonical را تشخیص و ایندکس کرده است.
آیا برای هر سایتی مناسب است که از AngularJS استفاده کنیم؟ خیر! AngularJS
برای سایتها و اپهای اطلاعاتی (که اطلاعات مختلف را حسب نیاز کاربر نمایش میدهند) مناسب است اما اگر برنامه شما عمدتا کارش بازی با DOM است، کتابخانه دیگری مثل jQuery مناسبتر است یا مثلا اگر برنامه شما مربوط به یک game است، باز هم کتابخانههای مختص این کار را باید استفاده کنید و انگولر جیاس کمک چندانی در این زمینه نمیتواند بکند. معمولا توصیه می شود از Angular JS و JQuery به صورت همزمان استفاده نکنید. پیشنهاد این است تا از جدول های کاملا Angular استفاده نمایید ، همانند ng-table ، یا نسخه بازنویسی شده ng-grid که بدون استفاده از JQuery کار می کند ، یعنی ui-grid