سلام
من باجاوا اسكريپت كار ميكنم و ميخوام سمت بك اند يك زبان رو انتخاب كنم.
زبان هاي ديگري غير از جاوا اسكريپت رو كار نكردم كه ببينم چطوري هستن و ميخوام بك اند رو node js انتخاب كنم.
به دور از كاربرد خاصي كه node داره به نظر شما معايب و مزايا اون چي هست و ميشه مسائل مختلف و چالش هايي كه به وجود مياد رو راحت باهاش حل كرد و مانور داد و كتابخانه هاي مختلفي داره كه بشه ازشون استفاده كرد و اينكه سخت و پيچيده هست يا راحت ميشه اونو يادگرفت؟
و اينكه جاوا اسكريپت خالص براي من يك مقدار سخت هستش و مثلاً با jquery يسري كار هامو انجام ميدم و ميخواستم بدونم node فرم جاوا اسكريپت خالص رو مثل يك كتابخونه يا فريمورك راحت تر كرده يا نه ؟
ببینید node.js کاربرد خاص خودشو داره مثلا جاهایی که نیاز به ارتباط دائمی با سرور هست مثل اپلیکیشن چت یا مثلا میخواین هر لحظه مکان یه نفر رو روی نقشه بفهمین و هی باید درخواست بره به سرور . مثل اسنپ
از طرفی دیتابیس mongodb هم که بیشتر با نودجی اس استفاده میشه کاربردش برای همین موارد هست . مثل سیستم چت و لاگ گیری و کش کردن و ...
.
ولی اگه شما بخواین مثلا یه فروشگاه پیشرفته با nodejs بنویسید واقعا پیچیدگی زیادی داره و خیلی سختتره نسبت به لاراول یا دات نت یا جنگو
یا مثلا یه سیستم سفارش آنلاین غذا که شامل چندین رستوران و چند غذا و ... میشه . اگه بخوای با nodejs بزنی واقعا پدر آدم در میاد ! ولی جنگو و لاراول و دات نت مثل آب خوردن هندل میکنن چنین پروژه ای رو
.
بستگی به نوع پروژه ای که قراره بزنید داره .
@rezajashnsaz0011
مكنون از راهنمايي خوبتون
در بحث فرانت react js ممنون ميشم راهنمايي كنيد
اينكه سطح يادگيريش چطوره و اينكه نسبت به بك اند چالش هاي كمتري داره و جذاب تر هست يا نه؟
چون خودم تا حالا فقط فرانت كار كردم و هيچ ديدگاهي نسبت به بك اند ندارم
@arminbeik
فرانت و بک هر دوش میتونه سخت یا آسون باشه... اگه آدمی هستین که منطق و قدرت تحلیلتون به خلاقیت و قدرت تخیل میچربه برید سمت بک اند .. در غیر اینصورت فرانت اند
شما مطمئن هستین با نود جی اس سخت تر هست برای ساخت سایت های فروشگاهی حتی از این فریم ورک express هم استفاده بشه؟
چون بالاخره این همه افراد دارن ازش استفاده میکنن
@mohammadbrzbrz72
اکسپرس در حد مینی فریمورکه ! حتی کمتر از بعضی مینی فریمورکا هم امکانات داره!
اکسپرس و کلا نود جی اس رو بعنوان میکروسرویس تو بخش هایی از پروژه استفاده میکنن نه بعنوان بیس اصلی پروژه!
اخه تا اونجای که من مقاله های مربوط به نودجی اس رو دیدم بیشترین قدرت رو داره برای وب و اپلیکیشن
و پایتون که مختص به شبکه و هوش مصنوعی و..هست و اونجا خودش رو حسابی نشون داده
و نودجی اس خیلی کتابخونه ها بهش اضافه شده و به عنوان بهترین تکنولوژی برای وب و اپلیکیشن در سال 2019 انتخاب شده بود با مقاله هایی که خوندم و بزرگترین پروژه ها رو هم میشه باهاش انجام داد و قدرتش نسبت php هم بیشتره و این قابلیت رو داره که بیشتر از سخت افزار استفاده کنه و خروجی بیشری داشته باشه
اما php هم در جایگاه خودش محفوظه ..همین دیجی کالا بک اندش با php هست
البته خوندم بک اند اصلا کار نکردم که بخوام نظر تخصصی در این مورد بدم و بر اساس مقاله هایی که درمورد اشنایی باهاش خوندم اینا رو میگم
@mohammadbrzbrz72
ببینید من با laravel و django پروژه واقعی انجام دادم و با express هم یه آشنایی دارم .
شما اگه دوره آشنایی با لاراول و آشنایی با نود جی اس همین سایت راکت رو ببینید کاملا واضحه که لاراول خیلی خیلی ساده تر از اکسپرس هست!
از نوع کوئری زدن به دیتابیس گرفته تا نحوه اعتبارسنجی و auth و acl و امکانات آماده و فولدربندی و سازمان یافته بودن و .....
تازه این فقط برای یه blog ساده بود . تو فروشگاه پیشرفته کلی رابطه هست بین جداول ! اگه بخوای با express این موارد رو بزنی خیلی خیلی سختتره تا لاراول
لاراول چیزی به اسم Eloquent داره که مثل آب خوردن پیچیده ترین روابط رو حل میکنه ! ولی توی express شما باید هی دنبال پکیج های خارجی باشی اخرشم هر پکیج یه چیزی کم داره! مثلا mongoose اصلا در حد eloquent نیست ...
@mohammadbrzbrz72
یه مثال ساده بزنم .
فرض کنید شما میخواید اطلاعات یه مقاله رو ویرایش کنید تو پنل ادمین . خب باید اول اون مقاله و دسته بندی ها رو بدست بیارید و بعد بفرستید سمت html
تو express.js همچین چیزی میشه
Article.findById(req.params.id , function (err, article) {
if(err) throw err;
Category.find({}).select("name").exec(function (err,categories) {
if(err) throw err;
حالا تو لاراول
Article::find($id);
Category::all();
یا فرض کنید میخواین یه کامنت رو حذف کنید
تو expressjs
Comment.findByIdAndRemove(req.params.id , function (err, comment) {
if(err) throw err;
تو لاراول
Comment::destroy($id);
این فقط یه مثال ساده از یه بلاگ ساده بود !
تو فروشگاههای پیشرفته شما نیاز به کوئری های خیلی زیاد و تودرتو و پیچیده دارید و expressjs واقعا کلافه میکنه آدمو
nodejs کاربرد خاص خودشو داره و نباید ازش چیزی بخوایم که واسش ساخته نشده
مسلما سرعت توسعه با لاراول بالاتر هست
نقاط قوت NodeJs رو بارها در فروم راکت بررسی کردیم اما
یکی از ضعف های NodeJs زمانی خودشو نشون میده که بخواهید با الگوریتم های سنگین CPU رو زیر بار ببرید.
@rezajashnsaz0011
اره ظاهرا سینتکس جاهایی خیلی راحت تره در php تا node.js
حالا طبق گفته ی آقای بیات باید دید نقاط قوتش چیه در کنارش!
@ali.bayat
شما گفتین که با الگوریتم های سنگین در پروژه های بزرگ ..مطمئنا در این زمان از سرور های قوی تری برای اینکار انجام میشه و از سرور های معمولی استفاده نمیشه که مشکلی پیش بیاد در حین اجرای برنامه
در مورد عملکرد CPU من نوشته های یه سایت دیگه رو براتون quote میکنم.
Not efficient in handling CPU-intensive apps. Being an event-based and a single threaded environment, Node.js is not suitable because it is not efficient enough to handle CPU-intensive apps. Generating audio, video, or editing graphics etc are some concurrent requests which cannot be managed by Node.js.
چند تا مشخصه خاص توی NodeJs هست، که میشه گفت در PHP کمتر بهشون بها داده شده:
پردازش ناهمزمان » در داخل NodeJs هست اما برای PHP شما باید از پکیج های خاص استفاده کنید:
https://github.com/spatie/async
برای رویدادمحور-بودن و non-blocking I/O هم کتابخونه های خاصی در PHP وجود داره:
https://reactphp.org/
@ali.bayat
با این حال یعنی باز این نودجی اس راه های طولانی تر در پیش داره تا خلاصه نویسی تر بشه و اینکه این مشکلات خودش رو رفع کنه
یا اینکه بر همین روال پیش میره؟
اما فکر کنم در زبان ها بک اند مثل php , پایتون , asp.net و یا پلتفرم های بک اندی مثل نود جی اس روند توسعه و تغییر در کلمات کند تری دارن تا فرانت اند...
یه جورایی هم مزیت حساب میشه برای اینکه تغییرات زیادی در کلمات کلیدی این ها دیده نمیشه مثل فرانت اند که روز به روز ادم باید ایدیت باشه یک لایبرری یا یک تکنولوژی جدید میاد و شخص مجبوره هی اطلاعاتی کسب کنه و اطلاعاتی رو هم دور بریزه
بله مسلما راهی در پیش داره.
NodeJs الان کلا 11 ساله که بوجود اومده.. احتمالا در طی مسیر تکاملش این مشکلات رو بتونه برطرف کنه (کاری که توسعه دهنده های همه زبان ها مداوم دارند انجام میدند)
این حرف همیشه نمیتونه درست باشه که: برای فرانت کار بودن باید نسبت به کسی که بک اند کار میکنه، بیشتر به روز باشیم.
درسته خود PHP داره تو بازه های بلند مدت آپدیت میشه اما لاراول رو در نظر بگیرید. داره 2-3 هفته یک بار، نسخه جدید ارائه میده.
در کل یک برنامه نویش باید به روز باشه.. حالا تو هر رشته ای که کار میکنه
خیلی ممنونم از شما و توضیحاتتون
اگر همین php بیان باز نویسیش کنن و سینتکس و کلمات کلیدی همون باشه و قابلیت های نودجی اس رو بهش اضافه کنن مشکلی نخواهد داشت ولی نمیدونم چرا این کار رو براش نمیکنن ...
حتی اون هسته ی php با هرچی که نوشتن نشه کلا run time کردش ولی بیان دوباره باز نویسی کننش شاید خیلی از این چیزهایی که در نود جی اس داریم در زبان php هم بتونن دقیقا این کار ها رو انجام بدن
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟