سیلز یک فریمورک جاوااسکریپت برای توسعه وب است که از معماری MVC استفاده میکند. در این سری آموزش قصد داریم یک وبلاگ ساده با استفاده از این فریمورک ایجاد کنیم. در قسمت اول قصد داریم تا Api مربوط به پستهای وبلاگ را ایجاد کنیم و با ساختار یک پروژه سیلز آشنا بشیم. آشنایی با جاوااسکریپت و معماری MVC از پیشنیازهای این سری آموزشی هستند.
نصب SailsJS
برای نصب سیلز شما نیاز به NodeJS و NPM دارید. برای نصب آنها کافی است فایلی نصبی NodeJS را از سایت رسمیاش دانلود کنید یا در سیستمهای لینوکسی با استفاده از مدیریتکننده بسته خود آن را نصب کنید.
برای مثال نصب نود در سیستمهای مبتنی بر دبیان به این صورت است:
sudo apt install nodejs
بعد از نصب نود مدیریت بسته NPM به صورت خودکار همراه با آن نصب میشود. حال به صورت زیر سیلز را بر روی سیستم خود نصب کنید:
npm install sails -g
بعد از اجرا دستور بالا, دستور sails به سیستم شما اضافه میشود.
ایجاد پروژه جدید
برای ایجاد یک پروژه جدید با استفاده از سیلز, کافی است دستور زیر را اجرا کنید:
sails new eblog
بجای eblog نام پروژه خود را بگذارید و بعد از نصبشدن تمام وابستگی شما میتونید به پوشه پروژه بروید و شروع به کار کنید.
ساختار پروژه سیلز
به طور کلی ما با ۴ پوشه api, assets, config و view سر و کار داریم. کنترولرها و مدلهای ما در پوشه api هستند. پروندههای تصویری, css و غیره در پوشه assets هستند. تنظیمات مسیرها, دیتابیس و غیره در پوشه config هستند و صفحات ظاهری سایت در پوشه views میباشند.
ایجاد مدل پست
برای ایجاد مدل در سیلز میتوانید هم به صورت دستی در پوشه api/models یک فایل ایجاد کنید یا از دستور زیر استفاده کنید:
sails generate model Post
بعد از ایجاد مدل حال باید اطلاعاتی که نیاز داریم یک پست در خود ذخیره کند را در مدل تعریف کنیم. برای این که باید از کد زیر استفاده کرد:
module.exports = { attributes: { title: { type: 'string', required: true }, author: { type: 'string', defaultsTo: 'Anonymous' }, body: { type: 'text', required: true } } };
گزینه required برای اجباریبودن فیلد و defaultsTo برای تعیین یک ورودی پیشفرض میباشند. برای آشنایی با تایپهای مختلف سیستم ORM سیلز یه این لینک بروید.
نکته: بعد از ایجاد مدل به فایل config/models.js بروید و خطی که در آن گزینه migrate وجود دارد را از کامنت در بیاورید. (خط ۳۰ام فایل)
ایجاد کنترولر
برای ایجاد کنترولر مانند مدل, از همان دستور استفاده میکنیم ولی با کمی تغییر:
sails generate controller posts
بعد از ایجاد کنترولر, حال باید اکشنهای مورد نظر را پیاده کنیم:
module.exports = { create: function (req, res) { const {title, author, body} = req.body Post.create({title, author, body}) .then(post => { return res.json(post) }) .catch(err => res.negotiate(err)) }, show: function(req, res){ const {id} = req.params Post.findOne(id) .then(post => { return res.json(post) }) .catch(err => res.negotiate(err)) }, index: function(req, res){ Post.find() .then(posts => { return res.json(posts) }) .catch(err => res.negotiate(err)) }, delete: function(req, res){ const {id} = req.params Post.destroy(id) .then(post => { return res.json(post) }) .catch(err => res.negotiate(err)) }, update: function(req, res){ const {title, author, body} = req.body const {id} = req.params Post.update(id, {title, author, body}) .then(post => { return res.json(post) }) .catch(err => res.negotiate(err)) }this is Bapply team };
به طور کلی هر کدام از این اکشنها, از محتوا درخواست HTTP یک سری اطلاعات را گرفته و بر اساس آنها محتوا مورد نظر را بر میگردانند. برای مثال در اکشن create از محتوا درخواست HTTP عنوان, نویسنده و بدنه پست گرفته میشود و با برقراری ارتباط با مدل Post یک پست جدید ایجاد میشود و بعد از ایجاد پست, آن را به صورت json برمیگرداند.
برای آشنایی با متودهایی که میتوانید بر روی مدل استفاده کنید به این لینک مراجعه کنید.
تعریف کردن مسیرها
برای تعریف کردن مسیرهای هر اکشن فایل config/routes.js را باز کنید. در کامنتها شیوه کار این فایل توضیح داده شده, مانند نمونه زیر مسیرها را تعریف کنید:
module.exports.routes = { '/': { view: 'homepage' }, 'post /post': 'PostsController.create', 'get /post': 'PostsController.index', 'get /post/:id': 'PostsController.show', 'delete /post/:id': 'PostsController.delete', 'patch /post/:id': 'PostsController.update' };
بعد از تعریف کردن مسیرها, میتوان با ارسال درخواستهای HTTP به مسیرهای تعریف شده از API استفاده کنید و طبق اکشنهایی که در کنترلر تعریف کردیم پست ایجاد, حذف, بروزسانی و دریافت کنید.
تا اینجای کار, با نحوه ایجاد کنترلر, مدل و تعریف مسیرها آشنا شدیم, در آموزشهای بعدی به سراغ مباحثی مثل Policies و Services میریم و بخشهای دیگر وبلاگ رو کامل میکنیم.
[…] مطلب قبلی با شیوه ایجاد کنترولر, مدل و نوشتن مسیرها آشنا شدید. در […]
چقدر فعالیتتون کم شده خواهش میکنم اموزش های جاوا رو ادامه بدین و گسترده تر کنید تکنید یاد بدید یا هرچی
جاوا که دیگه به درد نمیخوره اخوی بهتره رو برنامه نویسیاس انردورید یکم فعالیت کنید
لینک ها رو یادتون شده بذارید. مثلا :
برای آشنایی با تایپهای مختلف سیستم ORM سیلز یه این لینک بروید.
ممنون از سایت خوبتون مطلب خوبی بود