PHP و Node.js هر دو دربرنامه نویسی سمت سرور استفاده میشوند و شاید بتوان آنها را رقیب هم دانست. البته استفاده از کلمه "شاید" به این خاطر است که نمیتوان گفت PHP از نود جی اس بهتر است و همه باید از آن استفاده کنند یا برعکس درست نیست بگوییم که Node.js بهترین محیط برای برنامه نویسی سمت سرور است و دیگر نباید از PHP استفاده کنیم. هر دو پلتفرمی که امروز بررسی میکنیم "خوب" هستند و اگر در جای درست استفاده شوند، میتوانند کیفیت برنامه تحت وب ما را بالا ببرند. در این پست ما زبان برنامه نویسی PHP را کنار محیط اجرایی Node.js قرار میدهیم و در چند مورد متنوع به مقایسه PHP با Node.js میپردازیم. بیشتر بخوانید:پیش نیازهای یادگیری برنامه نویسی چیست ؟ [مقاله جامع و کاربردی]
معرفی کوتاه PHP
PHP مخفف Hypertext Preprocessor بوده و در سال 1994 توسط Rasmus Lerdorf طراحی گردید. PHP یک زبان متن باز و چندمنظوره میباشد اما بیشتر برنامه نویسان در سمت سرور از آن استفاده میکنند. کدهای PHP با پسوند .php ذخیره شده و داخل این فایلها میتوان کدهای HTML، CSS، Javascript و حتی متن ساده هم قرار داد.
معرفی کوتاه Node.js
Node.js یک محیط اجرایی برای زبان برنامه نویسی جاوا اسکریپت است که بر پایه موتور جاوا اسکریپت گوگل (V8 Engine) طراحی و برنامه نویسی شده است. به کمک Node.js میتوان اپلیکیشن هایی مقیاس پذیر، با سرعتی بالا نوشت. فایلهای نود جی اس با پسوند .js ذخیره شده و فقط شامل کدهای جاوا اسکریپت میباشد. این محیط اجرایی در سال 2009 توسط Rayn Dahl نوشته شد و به برنامه نویسان این قدرت را داد تا یک سرویس کامل را با زبان جاوا اسکریپت پیاده سازی نمایند. بیشتر بخوانید:Node.js چیست و چه کاربردی دارد ؟
1 - Syntax و دسترسی به خط فرمان
هر دو پلتفرم میتوانند به خط فرمان دسترسی داشته باشند، اما با دستوراتی متفاوت این کار انجام میشود. در PHP با دستور $ php -i و در Node.js با $ node میتوانیم در محیط خط فرمان اسکریپت اجرا کنیم. در ادامه دستور معروف برنامه نویسی یعنی چاپ "Hello World" را با PHP و محیط اجرایی Node.js اجرا خواهیم کرد تا کمی با سینتکس و ساختار کدهای این دو پلتفرم آشنا شویم. نمونه کد نوشته شده با PHP
echo 'Hello 7learn';
نمونه کد نوشته شده با Node.js
console.log('Hello 7learn');
2 - برنامه نویسی Synchronous یا Asynchronous
در برنامه نویسی Synchronous کدهای نوشته شده به ترتیب اجرا شده و ما با یک توالی خطی مواجه هستیم. یعنی با شروع برنامه اول خط 1 اجرا شده و بعد خط 2 وهمین روال تا آخر برنامه ادامه پیدا میکند. اما در Asynchronous ترتیب اجرای کدها خطی نبوده و هیچ اجباری نیست که برنامه به طور خط به خط اجرا شود. حالا با این ذهنیت به مقایسه PHP با Node.js میپردازیم. کدهای PHP به صورت synchronous اجرا میشوند اما یک سری API وجود دارد که اجازه میدهد برنامه نویسی نامتقارن را در PHP تجربه کنید. با یک مثال متوجه اهمیت موضوع برنامه نویسی Asynchronous یا نامتقارن خواهید شد. فرض کنید اولین خط برنامه شما تابعی است که زمان زیادی برای اجرا شدن نیاز دارد. در این حالت تا خط اول برنامه به طور کامل اجرا نشود، نمیتوان دستورات بعدی را اجرا کرد. در مقابل Node.js از نظر ماهیت به راحتی میتواند به صورت ناهمگام یا Asynchronous کار کند. به این شکل که موتور جاوا اسکریپت کل کد را اجرا کرده و منتظر بازگشت یک تابع خاص نیست. به این شکل نود جی اس میتواند سریعتر کار کرده و هنگامی که تعداد زیادی درخواست دریافت میکند بهتر از PHP آنها را مدیریت کند. بیشتر بخوانید:Asynchronous چیست؟
3 - تنوع تکنولوژی هایی که باید بلد باشید
جا به جا شدن بین زبانهای برنامه نویسی مختلف و محیطهای متنوع ممکن است در فرآیند تولید محصول کمی کار برنامه نویس را سخت کند. زمانی که از PHP استفاده میکنید، باید تسلط مناسبی روی پایگاه داده هایی مثل MySQL داشته باشید، در کنار آنها باید به HTML، CSS و جاوا اسکریپت هم مسلط باشید. از آنجایی که Node.js با جاوا اسکریپت نوشته شده است، میتوانید هم سمت سرور هم سمت کلاینت فقط از زبان جاوا اسکریپت استفاده کنید. پس دیگر نیازی نیست مرتب بین زبانهای برنامه نویسی مختلف جا به جا شوید. پس هنگام استفاده از نود جی اس، شما فقط با سینتکس جاوا اسکریپت سر و کار دارید.
4 - کار با ماژولها در PHP و Node.js به چه شکل است؟
PHP برای مدیریت ماژولها و بستههای مختلف نرم افزاری، از تکنولوژی هایی مثل PEAR یا Composer استفاده میکند. PEAR یک فریم ورک و سیستم توزیع شده است که اجازه میدهد با کامپوننتهای مختلف PHP کار کنید. Composer هم ابزاری برای مدیریت وابستگیها در PHP است، این ابزار کتابخانه هایی که پروژه به آن وابسته است را پیدا کرده و آنها را برای برنامه نویس مدیریت (نصب و بروزرسانی) میکند. در طرف مقابل نود جی اس با سیستم مدیریت بسته بسیار محبوب خود یعنی NPM (Node Package Manager) ارائه میشود که استفاده از آن بسیار آسان و لذت بخش است. NPM بزرگرین مدیر بسته دنیا با نیم میلیون ماژول مختلف میباشد.
5 - از نظر تنوع فریم ورکها Node.js بهتر است یا PHP؟
PHP محبوبترین زبان برنامه نویسی سمت سرور است و فریم ورکهای مختلفی برای این زبان عرضه شده است تا سرعت کار برنامه نویسان را بالا ببرد. بعضی از فریم ورکهای معروف PHP عبارتند از لاراول، کدایگنایتر، سیمفونی و غیره که به طورگسترده توسط برنامه نویسان استفاده میشوند. در آن سمت هم جاوا اسکریپت عملکرد مناسبی از لحاظ تنوع فریم ورکها داشته است. برخی از فریم ورکهای معروف مثل Express.js یا فریم ورکهای فول استک با پشتیبانی از MVC مثل Meteor یا Derby که بسیار خوب طراحی شده اند.
6 - PHP و Node.js با چه دیتابیس هایی کار میکنند؟
PHP در بیشتر مواقع برای کار با دادهها از دیتابیسهای رابطه ای مثل MySQL، MongoDB، PostgreSQL و غیره استفاده میکند. هر چند راهکارهای مختلفی برای استفاده از دیتابیس NoSQL در PHP وجود دارد. اما چندان رایج نیست و بین برنامه نویسان محبوبیت زیادی ندارد. از طرفی Node.js بدون هیچ مشکلی با دیتابیسهای NoSql کار میکند. نود جی اس با دیتابیسهای MongoDB، CouchDB و پایگاه دادههای مبتنی بر گراف مثل New4j هماهنگ است. تقریبا تمام دیتابیسهای مطرح دنیا در مخزن NPM به صورت پکیج وجود دارند و میتوان از آنها استفاده کرد.
7 - کار با وب سرور در PHP و Node.js
تا قبل از نسخه 5.4 PHP برنامه نویسان باید از نرم افزارهایی مثل Xampp یا Lamp برای راه اندازی سرور استفاده میکردند. اما از نسخه 5.4 به بعد PHP با یک سرور داخلی (built-in) ارائه شد. در مقابل Node.js که برای طراحی برنامههای تحت وب استفاده میشود، داخل خود ماژولهای مهمی مثل http، DNS، فایل سیستم و غیره را داشته که به برنامه نویسان کمک میکند وب سرور خود را شخصی سازی کنند. برخی از فریم ورکهای محبوب که به Node.js قدرت میدهند تا وب سرور را اجرا کند عبارتند از Express.js، Koa.js و Sails.js و راه اندازی سرور با این فریم ورکها در چند خط کد و به سادگی انجام میشود.
نتیجه گیری
در این مطلب به مقایسه PHP با Node.js پرداختیم و از ابعاد مختلف این دو پلتفرم را بررسی کردیم. باید با توجه به ویژگیهای محصول خودمان، سراغ PHP یا Node.js برویم. معمولا در برنامه هایی که نیاز به عملیات پردازشی سنگین دارند، مثل آنالیز دادههای گسترده (هواشناسی و غیره) سیستمهای مدیریت محتوا (وردپرس، جوملا و غیره) استفاده میشود. PHP برای ساخت بلاگ، سایتهای خبری یا فروشگاههای تجاری عالی است. در مقابل Node.js به خاطر رویداد محور بودن و استفاده از Asynchronous گزینه ایده آلی برای برنامههای real-time است.سرویسهایی مثل چت روم، استریم ویدئو یا موسیقی، سایتهای تک صفحه ای یا SPA، سیستمهای مدیریت پروژه و به طور کلی هر سرویسی که نیاز به تعامل زیادی با کاربر دارد میتواند از Node.js استفاده کند.
۲۰ دیدگاه
۰۴ آذر ۱۴۰۱، ۰۷:۴۶
بخش آخر(نتیجه گیری) خیلی صریح و واضح و عالی و کمک کننده در رابطه با انتخاب زبان برنامه نویسی داشت ممنون از شما
۲۲ مهر ۱۴۰۱، ۱۱:۳۸
خیلی مفید بود?
۲۱ دی ۱۴۰۰، ۱۹:۵۵
عالی بود
مرسی
۱۸ آذر ۱۴۰۰، ۰۰:۱۵
مطلب خوبی بود بخصوص نتیجه گیری آخر به نکات خوبی اشاره کردید.
ممنون از زحماتتون.
نازنین کریمی مقدم۱۸ آذر ۱۴۰۰، ۱۱:۵۸
خوشحالیم مقاله براتون مفید بوده ?
محمد گودرزی۱۰ آبان ۱۴۰۰، ۱۲:۱۴
کارتون محشره!!!!!
خیلی ممنونم بابت این مقاله بی نظیر !
Nazanin KarimiMoghaddam۱۱ آبان ۱۴۰۰، ۰۵:۴۱
درود
ممنون که ما رو حمایت میکنید :)
حامد۲۵ دی ۱۳۹۹، ۰۶:۵۰
خیلی عالی و مفید بود و نکات جالبی بیان شد
محمدرضا۲۷ آذر ۱۳۹۹، ۱۶:۴۷
سلام در عکس بخش 5 نام فریم ورکها جا به جا نوشته شده
نازنین کریمی مقدم۲۹ آذر ۱۳۹۹، ۰۵:۵۹
درود. حق با شماست در اولین فرصت اصلاحش میکنیم.
ممنون بابت همراهی و اطلاع رسانی تون :)
علیرضا۲۸ خرداد ۱۳۹۹، ۱۰:۵۸
خیلی عالی و مفید بود. ممنون
فائقه نامور۲۱ مرداد ۱۳۹۹، ۰۹:۰۶
سلام ممنون از توجه شما.
محسن۲۶ خرداد ۱۳۹۹، ۱۴:۳۱
بسیار ممنون از مقاله مفیدتون
فائقه نامور۲۱ مرداد ۱۳۹۹، ۰۹:۰۵
سلام ممنون از توجه شما
amirahmad۱۱ بهمن ۱۳۹۸، ۱۴:۲۳
خیلی ممنون از مقاله ی مفید و کاملتون
دست شما درد نکنه
پرنیا فیروزی۳۰ مهر ۱۳۹۸، ۰۷:۱۸
بسیار عاااالیییی و مفید بود.... واقعا ممنونم ?
محمد انوری۳۰ مهر ۱۳۹۸، ۰۷:۴۵
سلام ... خیلی خوشحالم که براتون مفید بود ...
موفق باشید ...
محمد۲۵ مهر ۱۳۹۸، ۱۱:۱۳
یه سوال
میشه قسمتی از سایت رو با phpنوشت و برای یک قسمت به خصوص دیگه ای از node.js استفاده کرد.
احسان آرشنیا۲۵ مهر ۱۳۹۸، ۰۹:۱۴
عالی بود ، لطفا ویژگی درج امتیاز به سبک like و یا dislike رو برای مقالهها فراهم کنید .
این نکته رو به بقیه دوستان بگم اگر مقاله ای رو خوندین و مورد رضایت شما واقع شد از لحاظ افزایش دانش و ... ، نظر خودتون رو درج نکنید بی مهری کردید . نظرات شما انگیزه خواهد داد
محمد جواد محمدی۲۴ مهر ۱۳۹۸، ۲۲:۳۹
عالی بود ممنون
شروع رایگان یادگیری برنامه نویسی
کلیک کنید 👇
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد: