نست فریمورکی برای ساختن اپلیکشن های بک اند در NodeJs هست که با TypeScript ساخته شده و بطور کامل ازش پشتیبانی میکنه و همچنین قابلیت های کار با وب سوکت، GraphQl ،Rest و ... رو برامون فراهم میکنه.
در لایه های زیرین خودش از فریمورک ExpressJs بطور پیشفرض استفاده میکنه و همچنین میتونید بجای اکسپرس از Fastify هم استفاده کنید. در واقع یک لایه ابسترکشن روی فریمورکهای express یا fastify هست و در عین حال امکان این رو بهمون میده که مستقیما با api های این فریمورک ها هم کار کنیم و خوبیش اینه که میتونیم از لایبری ها و ماژول هایی که برای این فریمورک ها هست به راحتی استفاده کنیم.
چرا بجای اکسپرس از نست استفاده کنیم؟
یکی از دلایل میشه گفت وجود نداشتن ساختار و استانداردی در پروژه های nodejs هست. هر موقع که وارد یک پروژه جدید نود میشیم احتمال زیاد با یک ساختار متفاوت رو به رو میشیم مثلا بعضی ها ممکنه فقط از یک فایل استفاده کرده باشند ! یا بعضیا از معماری MVC و خیلی چیزای دیگه. این حالت بیشتر واسه کسایی که تازه کار هستن و زیاد با معماری ها و ساختارها آشنا نیستن میتونه گیج کننده باشه و در کل احتمال تولید کد کثیف و غیرقابل نگهداری با گذشت زمان بیشتر میشه که در نهایت کار توسعه رو سخت تر و زمانبر میکنه.
نست فقط یک ساختار و معماری رو بهمون معرفی میکنه و میگه که فقط توی این قالب و استایل کد بزنین.
کامپوننت ها معماری یک اپلیکشن نست به این صورته:
- کنترلر ها (Controllers)
- ماژول ها (Modules)
- پروایدر Provider ها (services, repositories, factories, helpers , ...)
- کلاس های DTO
- کلاس های مدل (Entities)
دلیل اصلی استفاده از این معماری و ساختار این هست که اپلیکشن رو به بخش های کوچیکی بشکنیم. یادگیری و کارکردن به این شیوه برای کسایی که انگولار یا spring boot کار کردن میتونه ساده باشه.
در ادامه به معرفی این کامپوننت ها بصورت اجمالی میپردازیم.
کنترلر ها (Controllers):
هدف اصلی دریافت درخواست از کاربر یا هرچیزی دیگه ای هست و فرستادنش به کامپوننت سرویس ها (business logic) برای انجام کار مورد نظر و سپس برگرداندن پاسخ.
ماژول ها (Modules):
ماژول مثل یک کانتینر هست که بقیه بخش هایی که بهم مرتبط هستن رو در خودش نگه میداره .
مثلا یک ماژول بنام user فقط شامل سرویس ها و کنترل ها و ... مخصوص و مرتبط کار با یوزر هاست و به این صورت بخش های مختلف اپ رو جداسازی میکنه.
پروایدر ها Providers:
این بخش مقداری عمومی هستش و میتونه شامل ریپازیتوری مدل های دیتابیس، سرویس، کلاس های helper و ... باشه. ایده کلی پرواید ها اینه که میتونه در جاهای مختلف به صورت وابستگی تزریق بشه، مثل یک کانکشن دیتابیس که میتونه در بخش ها و کلاس های مختلفی تزریق بشه و امکان کار کردن با دیتابیس رو بده. در واقع سرویس ها شامل business logic و منطق برنامه هستن که میتونن در هرجایی استفاده بشن.
کلاس های DTO:
این بخش که مخفف Data Transfer Object هست یک ساختار و فرمت برای داده هایی که در یک اندپوینت (route) از کاربر دریافت میشه تعیین میکنه. مثلا میخواید که کاربر سن رو بصورت عدد براتون بفرسته یا نام بصورت یک رشته باشه. که با ترکیب اینها با لایبری هایی مثل class-validator میتونیم بعنوان ولیدشن هایی قوی ازشون استفاده کنیم و داده های ورودی کاربر رو کنترل کنیم.
مدل ها (Entities):
مدل ها جایی هستن که اطلاعات مربوط به دیتابیس رو توی اون ها میسازیم مثلا با استفاده از typeorm که یک ORM کاملا سازگار با تایپ اسکریپت هست میتونیم یک کلاس مدل بسازیم و جدول دیتابیس رو بدون یک خط کد SQL و فقط با کد تایپ اسکریپت درست کنیم.
سخن پایانی:
این فریمورک استاداردها و استایلی رو جلوی پامون میزاره که باعث افزایش کارایی کدنویسی میشه و ممکنه که در نگاه اول سخت بنظر بیاد ولی وقتی که یادش گرفتید درکنار تایپ اسکریپت میتونه به سرعت کدنویسی، خوانایی، ساختار منظم، نگهداری کد و ... کمک زیادی کنه.
میتونید به سایت nestjs مراجعه کنید که داکیومنتش خیلی خوب توضیح داده و به راحتی میتونید از اونجا یاد بگیرید.
خواندن فایل ها با استفاده از ماژول fs در Node.js
شما می توانید با استفاده از متود fs.readFile()
یک فایل را به صورت ناهمگام بخوانید.
سینتکس زیر نحوه تعریف یک متد خواندن فایل را با استفاده از ماژول fs در Node.js نشان می دهد:
fs.readFile(fileName [,options], callback)
توضیح پارامترهای سینتکس بالا:
filename
: آدرس کامل یا همان full path فایلی که قرار است خوانده شود. (در قالب رشته)
options
: این پارامتر میتواند یک رشته و یا Object باشد که حاوی encoding و flag است. encoding پیشفرض برابر utf8 و flag برابر r است. (بعدا بیشتر توضیح می دهیم)
callback
: یک فانکشن است که دو پارامتر err
و fd
را دریافت می کند. پارامتر err
حاوی پیغام های خطا و پارامتر fd
حاوی اطلاعات درون فایل خواهد بود.
مثال زیر نشان می دهد که چگونه می توانیم اطلاعات فایلی به نام TestFile.txt
که در کنار اسکریپت ما قرار دارد را به صورت ناهمگام بخوانیم:
var fs = require('fs');
fs.readFile('TestFile.txt', function (err, data) {
if (err) throw err;
console.log(data);
});
فصل ۱۱ – مثال ۱
هنگامی که از ناهمگام بودن نحوه خواندن اطلاعات از فایل ها صحبت می کنیم منظورمان این است که ابتدا نرم افزار شروع به خواندن اطلاعات فایلها می کند و پس از اتمام فعالیت خود فانکشن callback را صدا می زند.
در مثال بالا پارامتر err
در صورتی که فایل موجود نباشد حاوی مقداری خواهد بود. در غیر این صورت پارامتر data
اطلاعات فایل را دارا می باشد.
به عنوان مثال در کنار فایل js مثال بالا، فایلی ایجاد کنید به نام TextFile.txt
که حاوی متن Hello word باشد.
سپس در محیط ترمینال یا CMD با زدن دستور node server.js
، فایل اصلی را اجرا کنید.
در صورتی که مشکلی وجود نداشته باشد باید متن Hello word را در محیط کنسول مشاهده کنید.
همچنین می توانید با استفاده از متود fs.readFileSync()
به صورت همگام اطلاعات را بخوانید.
مثال زیر نشان می دهد که چگونه می توانید با استفاده از متود fs.readFileSync()
یک فایل را به صورت همگام یا synchronous بخوانید:
var fs = require('fs');
var data = fs.readFileSync('TestFile.txt', 'utf8');
console.log(data);
فصل ۱۱ – مثال ۲
نوشتن بر روی فایل با استفاده از ماژول fs در Node.js
نوشتن بر روی یک فایل به همان سادگی خواندن فایل ها در Node.js است. با استفاده از متود fs.writeFile()
قادر هستید تا بر روی یک فایلی که در حال حاضر موجود است اطلاعاتی را بنویسید.
سینتکس نگارش متود fs.writeFile()
به شرح زیر است:
fs.writeFile(filename, data[, options], callback)
توضیح پارامترهای سینتکس بالا:
filename
: آدرس کامل یا همان full path فایلی که قرار است بر روی آن متنی شود. (در قالب رشته)
data
: اطلاعاتی که باید درون فایل نوشته شود.
options
: این پارامتر میتواند یک رشته و یا Object باشد که حاوی encoding و flag است. encoding پیشفرض برابر utf8 و flag برابر r است. (بعدا بیشتر توضیح می دهیم)
callback
: یک فانکشن است که دو پارامتر err
و fd
را دریافت می کند. پارامتر err
حاوی پیغام های خطا و پارامتر fd
حاوی اطلاعات درون فایل خواهد بود.
مثال زیر یک فایل به نام test.txt
ایجاد خواهد کرد و به صورت ناهمگام متن “Hello World” را درون آن خواهد نوشت:
var fs = require('fs');
fs.writeFile('test.txt', 'Hello World!', function (err) {
if (err)
console.log(err);
else
console.log('Write operation complete.');
});
فصل ۱۱ – مثال ۳
توجه داشته باشید که مثال بالا، اگر فایل موجود باشد، هر چیزی که درون این فایل از قبل موجود باشد را پاک خواهد کرد و سپس متن جدید را جایگزین آن خواهد کرد.
اگر می خواهید که اطلاعات درون یک فایل پاک نشود و اطلاعات جدید بعد از اطلاعات حال حاضر درون این فایل قرار بگیرد می توانید از متود fs.appendFile()
استفاده کنید.
مثال زیر نشان می دهد که چگونه می توانید جمله “Hello Word!” را بعد از هر چیزی که درون فایل test.txt
وجود دارد بنویسید:
var fs = require('fs');
fs.appendFile('test.txt', 'Hello World!', function (err) {
if (err)
console.log(err);
else
console.log('Append operation complete.');
});
فصل ۱۱ – مثال ۴
باز کردن یک فایل با ماژول fs در Node.js
به صورت آلترناتیو نسبت به متود های بالا شما میتوانید از متود fs.open()
در باز کردن یک فایل برای خواندن یا نوشتن بر روی آن استفاده کنید.
سینتکس متود fs.open()
به شرح زیر است:
fs.open(path, flags[, mode], callback)
توضیح پارامترهای سینتکس بالا:
path
: آدرس کامل یا همان full path فایلی که قرار است باز شود. (در قالب رشته)
flag
: پرچم عملیاتی که قرار است بر روی فایل صورت پذیرد. (در ادامه آموزش جدول کل پرچم های ممکن را می توانید مشاهده کنید)
mode
: انتخاب حالت باز کردن فایل برای خواندن، نوشتن یا خواندن-نوشتن فایل.
callback
: یک فانکشن است که دو پارامتر err
و fd
را دریافت می کند. پارامتر err
حاوی پیغام های خطا و پارامتر fd
حاوی اطلاعات درون فایل خواهد بود.
پرچم های قابل استفاده درون فانکشن های مرتبط با فایل در Node.js:
پرچم | توضیحات |
---|---|
r |
یک فایل را برای خواندن باز می کند، اگر فایل موجود نباشد ارور ایجاد می شود. |
r+ |
یک فایل را برای خواندن و نوشتن باز می کند، اگر فایل موجود نباشد ارور ایجاد می شود. |
rs |
فایل را برای خواندن همگام باز می کند. |
rs+ |
یک فایل را برای خواندن و نوشتن باز می کند، این فلگ به سیستم اعلام می کند که این کار را به صورت همگام انجام دهد. |
w |
یک فایل را برای نوشتن باز می کند. اگر فایل موجود نباشد آن را می سازد، اگر فایل موجود باشد آن را ابتدا خالی می کند. |
wx |
مثل w عمل می کند، اما اگر path موجود باشد ارور ایجاد خواهد شد. |
w+ |
یک فایل را برای نوشتن و نوشتن باز می کند. اگر فایل موجود نباشد آن را می سازد، اگر فایل موجود باشد آن را ابتدا خالی می کند. |
wx+ |
مثل w+ عمل می کند، اما اگر path موجود باشد ارور ایجاد خواهد شد. |
a |
یک فایل را برای اضافه کردن چیزی به انتهای آن باز می کند. |
ax |
مثل a عمل می کند، اما اگر path موجود باشد ارور ایجاد خواهد شد. |
a+ |
یک فایل را برای اضافه کردن چیزی به انتهای آن و خواندن آن باز می کند. اگر فایل موجود نباشد ایجاد خواهد شد. |
ax+ |
مثل a+ عمل می کند، اما اگر path موجود باشد ارور ایجاد خواهد شد. |
مثال زیر یک فایل از قبل موجود را باز می کند و اطلاعات درون آن را می خواند:
var fs = require('fs');
fs.open('TestFile.txt', 'r', function (err, fd) {
if (err) {
return console.error(err);
}
var buffr = Buffer.alloc(1024);
fs.read(fd, buffr, 0, buffr.length, 0, function (err, bytes) {
if (err) throw err;
// Print only read bytes to avoid junk.
if (bytes > 0) {
console.log(buffr.slice(0, bytes).toString());
}
// Close the opened file.
fs.close(fd, function (err) {
if (err) throw err;
});
});
});
فصل ۱۱ – مثال ۵
حذف فایل با ماژول fs در Node.js
حذف فایل ها در Node.js بسیار ساده انجام می شود اما در مورد حذف حتما مراقب باشید.
شما می توانید با استفاده از متود fs.unlink()
یک فایل را از سیستم حذف کنیم.
سینتکس استفاده از متود fs.unlink()
برای حذف فایلها در Node.js به شرح زیر است:
fs.unlink(path, callback);
مثال زیر نشان می دهد که چگونه می توانید یک فایل را در نود حذف کنید:
var fs = require('fs');
fs.unlink('test.txt', function () {
console.log('deleting operation complete.');
});
فصل ۱۱ – مثال ۶
متود های قابل استفاده در ارتباط با فایل ها در Node.js
fs.readFile(fileName [,options], callback)
اطلاعات درون یک فایل که از قبل موجود است را می خواند.
fs.writeFile(filename, data[, options], callback)
اطلاعاتی را در یک فایل می نویسد. اگر فایل موجود باشد اطلاعات اولیه را پاک کرده و سپس متن را درون آن می نویسد و اگر فاییل موجود نباشد، ابتدا آن را ایجاد می کند و سپس اطلاعات را درون آن قرار می دهد.
fs.open(path, flags[, mode], callback)
فایل را برای خواندن و نوشتن باز می کند.
fs.rename(oldPath, newPath, callback)
یک فایل که از قبل وجود دارد را تغییر نام می دهد.
fs.chown(path, uid, gid, callback)
عملیات chown را به صورت نا همگام انجام می دهد.
fs.stat(path, callback)
آبجکت fs.stat
را باز می گرداند که حاوی اطلاعات مهمی از فایل درخواستی است.
fs.link(srcpath, dstpath, callback)
به صورت ناهمگام فایل ها را لینک می کند.
fs.symlink(destination, path[, type], callback)
به صوت ناهمگام Symlink برای فایل ایجاد می کند.
fs.rmdir(path, callback)
یک دایکتوری که از قبل وجود دارد را تغییر نام می دهد.
fs.mkdir(path[, mode], callback)
یک دایرکتوری جدید را ایجاد می کند.
fs.readdir(path, callback)
محتوای یک دایرکتوری درخواستی را می خواند.
fs.utimes(path, atime, mtime, callback)
timestamp یک فایل را تغییر می دهد.
fs.exists(path, callback)
مشخص می کند آیا فایل درخواستی وجود دارد یا نه.
fs.access(path[, mode], callback)
قابلیت دسترسی کاربر به فایلی را مشخص می کند.
fs.appendFile(file, data[, options], callback)
مقداری متن جدید به انتهای فایلی که از قبل وجود دارد اضافه می کند.
برنامه نویسی Node.js با ماژول ها، برنامه نوشته شده را بسیار خوانا تر می کند. معمولا ماژول فقط یک کار خاص را انجام می دهند و بار ها در طول اپلیکیشن مورد قابل استفاده قرار می گیرند. یک ماژول معمولا حاوی یک عملیات خاص می باشد که به صورت مستقل قادر به انجام هدف خود است.
در فصل قبلی ما دیدیم که چگونه می توانید با استفاده از module.exports
یک ماژول لوکال را اکسپورت کنید (برای استفاده در تمامی اپلیکیشن، ماژول را معرفی کنید). اکنون می خواهیم نشان دهیم که چگونه می توانید ماژول های مختلف از انواع مختلف را با استفاده از module.exports
اکسپورت کنید.
module.exports
یا exports
دو شی خاص هستند که در تمامی فایلهای جاوا اسکریپت Node.js به طور پیش فرض وارد می شوند.
در
module.exports
درواقع کلمهmodule
یک متغیر است که اشاره به ماژولی که درون آن هستیم دارد و کلمهexports
یک شی است که این ماژول را برای کل اپلیکیشن به عنوان یک ماژول در دسترس معرفی خواهد کرد.
هر چیزی که شما به module.exports
اختصاص دهید به عنوان یک ماژول به اپلیکیشن معرفی خواهد شد.
معرفی مقدار Literal به عنوان ماژول (خروجی گرفتن از Literal)
همانطور که در بالا اشاره کردیم exports
یک شی یا همان object است. پس این شی هر چیزی که به آن اختصاص دهید را در اختیار کل اپلیکیشن قرار خواهد داد. پس در نتیجه اگر شما یک مقدار رشته را به این شیء اختصاص دهید آن رشته به عنوان یک ماژول به اپلیکیشن معرفی خواهد شد.
مثال زیر نشان میدهد که شما چگونه می توانید یک مقدار رشته را به عنوان یک ماژول به سیستم معرفی کنید. بهتر است فایلی به نام Message.js
بسازید و فقط کد زیر را درون آن قرار دهید:
module.exports = 'Hello world';
//or
exports = 'Hello world';
فصل ۸ – مثال ۱ (فایل Message.js)
اکنون ماژولی که ساختید را درون فایل app.js
با فانکشن require()
فراخوانی کنید. مانند مثال زیر:
var msg = require('./Messages.js');
console.log(msg);
فصل ۸ – مثال ۱ (فایل app.js)
اگر دقت کنید قبل از اسم فایل نقطه و اسلش قرار گرفته است. ./
درواقع به همان فولدر که درون آن هستیم اشاره دارد. البته برای استفاده از ماژول های هسته ای نیاز به مشخص کردن path یا همان مسیر فایل ها ندارید.
برای اجرای مثال بالا می توانید در محیط ترمینال یا CMD دستور node app.js
را تایپ کرده و اینترنت بزنید. (دقت کنید که در محیط ترمینال ابتدا باید با دستور cd به مکانی که فایل را ساخته اید نقل مکان کنید.)
معرفی Object به عنوان ماژول (خروجی گرفتن از Object)
exports
یک object است پس می توانید به آن صفت یا متود اختصاص دهید.
مثال زیر نشان می دهد که شما چگونه می توانید یک رشته را به عنوان صفت به یک آبجکت اختصاص دهید و object را اکسپورت کنید. بهتر است فایلی به نام Message.js
ساخته و کد زیر را درون آن کپی کنید:
exports.SimpleMessage = 'Hello world';
//or
module.exports.SimpleMessage = 'Hello world';
فصل ۸ – مثال ۲ (فایل Message.js)
در مثال بالا ما صفت SimpleMessage
را به شی export
اختصاص داده ایم.
شما اکنون می توانید ماژول ساخته شده را در فایل app.js
به شکل زیر مورد استفاده قرار دهید:
var msg = require('./Messages.js');
console.log(msg.SimpleMessage);
فصل ۸ – مثال ۲ (فایل app.js)
در مثال بالا فانکشن require()
آبجکت { SimpleMessage : 'Hello World'}
را باز می گرداند. پس شما می توانید با استفاده از نام متغیر اختصاص داده شده به این ماژول، صفت های درون آن را صدا بزنید. مانند: msg.SimpleMessage
مثال بالا را با استفاده از node app.js
در ترمینال اجرا کنید.
به همین سبک بالا می توانید یک فانکشن را به همراه آبجکت اکسپورت کنید.
مثال زیر نشان می دهد که شما چگونه می توانید فانکشن لاگ را به همراه یک شی به عنوان یک ماژول اکسپورت کنید، این کد ها را در فایل Log.js
ذخیره کنید:
module.exports.log = function (msg) {
console.log(msg);
};
فصل ۸ – مثال ۳ (فایل Log.js)
مثال بالا در واقع آبجکت { log : function(msg){ console.log(msg); } }
را در هنگام استفاده از require()
باز خواهد گرداند. پس شما می توانید با استفاده از نام متغیر اختصاص داده شده به متود های درونی آن دسترسی پیدا کنید.
به مثال زیر توجه کنید، این کد ها محتویات فایل app.js
است:
var msg = require('./Log.js');
msg.log('Hello World');
فصل ۸ – مثال ۳ (فایل app.js)
مثال بالا را با استفاده از node app.js
در ترمینال اجرا کنید.
شما می توانید به روش زیر نیز یک object را به عنوان ماژول اکسپورت کنید. بهتر است فایلی به نام data.js
ساخته و متن زیر را درون آن کپی کنید:
module.exports = {
firstName: 'James',
lastName: 'Bond'
}
فصل ۸ – مثال ۴ (فایل data.js)
برای فراخوانی این ماژول می توانید در فایل app.js
کد زیر را استفاده کنید:
var person = require('./data.js');
console.log(person.firstName + ' ' + person.lastName);
فصل ۸ – مثال ۴ (فایل app.js)
مثال بالا را با استفاده از node app.js
در ترمینال اجرا کنید.
معرفی فانکشن به عنوان ماژول (خروجی گرفتن از Function)
به روش زیر شما قادر هستید تا یک فانکشن را به عنوان یک ماژول export کنید. پیشنهاد می شود فایلی به نام Log.js
ساخته و کد زیر را درون آن کپی کنید:
module.exports = function (msg) {
console.log(msg);
};
فصل ۸ – مثال ۵ (فایل Log.js)
اکنون می توانید با کد زیر ماژول را درون فایل app.js
فراخوانی کنید:
var msg = require('./Log.js');
msg('Hello World');
فصل ۸ – مثال ۵ (فایل app.js)
در مثال بالا متغیر msg
به یک عبارت عملیاتی یا همان Function Expression تبدیل خواهد شد. پس شما می توانید با استفاده از پرانتز بعد از نام متغیر، فانکشن را اجرا کنید.
مثال بالا را با استفاده از node app.js
در ترمینال اجرا کنید.
معرفی فانکشن به عنوان یک کلاس
در زبان جاوا اسکریپت می توان با یک فانکشن به عنوان یک کلاس برخورد کرد.
مثال زیر نشان می دهد که شما چگونه می توانید یک فانکشن را مانند یک کلاس export کنید. این محتویات را درون فایل Person.js
کپی کنید:
module.exports = function (firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
this.fullName = function () {
return this.firstName + ' ' + this.lastName;
}
}
فصل ۸ – مثال ۶ (فایل Person.js)
ماژول ساخته شده بالا را می توان به روش زیر در فایل app.js
مورد استفاده قرار داد:
var person = require('./Person.js');
var person1 = new person('James', 'Bond');
console.log(person1.fullName());
فصل ۸ – مثال ۶ (فایل app.js)
مثال بالا را با استفاده از node app.js
در ترمینال اجرا کنید تا نتیجه James Bond را همان جا مشاهده کنید.
بارگذاری ماژول ها از پوشه های دیگر
برای بارگذاری ماژول ها، در هر پوشه ای که باشند، در فانکشن require()
فقط کافی است تا از full path یا همان آدرس کامل فایل استفاده کنید.
به عنوان مثال اگر فایلی که در آن از فانکشن require()
استفاده کرده اید ماژولی که در فولدر utility قرار داده شده باشد را فراخوانی می کند، به این صورت عمل کنید:
var log = require('./utility/Log.js');
فصل ۸ – مثال ۷ (فایل app.js)
در مثال بالا نقطه .
مشخص می کند که فولدر utility کنار همین فایلی که در حال اجرای require هست، وجود دارد.
بارگذاری ماژول ها فقط با نام پوشه ای که درون آن قرار دارند
Node.js به شما اجازه می دهد تا فقط با اشاره به نام فولدری که ماژول درون آن قرار دارد، ماژول را فراخوانی کنید. البته مراحل کمی متفاوت است.
مانند مثال زیر که شبیه مورد بالا عمل می کند:
var log = require('./utility');
فصل ۸ – مثال ۸ (فایل app.js)
این مرحله اول کار بود. هنگامی که از نام پوشه استفاده می کنید، Node.js بنا را بر این می گذارد که درون این پوشه یک پکیج وجود دارد. برای اینکه شما Node.js را برای درک بهتر این پکیج راهنمایی کنید، باید فایلی به نام package.json
را درون پوشه utility قرار دهید. با محتویات زیر:
{
"name" : "log",
"main" : "./Log.js"
}
فصل ۸ – مثال ۸ (فایل package.json)
درواقع این کلمه کلیدی “main
” مشخص می کند که فایل اصلی که پکیج ما به آن اشاره دارد کدام فایل است و همچنین نام پکیج را کلمه کلیدی “name
” مشخص می کند.
اگر فایل
package.json
وجود نداشته باشد، Node.js به صورت اتوماتیک فایلindex.js
را به عنوان فایل ماژول در نظر می گیرد.
منبع: نتران
پروفایل
نکات، تجربیات، محتوای آموزشی و مطالب گردآوری شده در حوزه برنامه نویسی وب