Когда я впервые услышал о парусах, я погуглил о его различии с экспрессом, но я не нашел подходящего ответа, поэтому теперь, когда я работал над многими проектами с использованием Sails over Express, позвольте мне рассказать вам, ребята, реальную разницу, с которой вы столкнетесь при переходе с Express на Sails.

Изучите Express перед переходом на Sails

Это самая важная вещь, о которой вам никто не скажет. Sails - отличный фреймворк, но если вы не знаете, как работает маршрутизация или что такое ORM, каковы различные методы HTTP, тогда вы не сможете получить волшебство, стоящее за парусами.

Более того, вам нужно лучше понять эти концепции, чтобы стать отличным веб-разработчиком. Так что, если вы не очень разбираетесь в этих концепциях, попробуйте погуглить день или два.

Об этих трех основных компонентах я расскажу во время работы над Sails и Express.

Маршрутизация

Хотя экспресс-маршрутизатор - это круто и работает как шарм, вам все равно нужно писать код для каждого маршрута, если вы хотите использовать маршруты в маршрутах (или подмаршрутах), вам нужно будет использовать регулярные выражения в чтобы правильно их вложить.

В Express вам нужно будет сделать что-то вроде этого:

Вероятно, это наш основной файл или корневой файл вашего проекта Express:

var orderRoute = require('./modules/orders/route');
app.use('^/api/order', orderRoute);

Тогда это может находиться где-то внутри ваших модулей:

var controller = require("./controller");
var fetchcontroller = require("./fetch");
var newOrderController = require("./newOrderController");
var express = require("express");
var verification = require("../auth/verification");

var router = express.Router();
router.route('^/$').post(verification.verifytoken, newOrderController.NewOrder);
router.route('^/:order_id/$').get(verification.verifytoken, controller.GetSingleOrder);
module.exports = router;

Это будет ваш файл контроллера:

var getSingleOrder = function (req, res) {

    Order.findOne({'_id': req.params.order_id}, function (err, orders) {


        if (err)
            res.json(err);
        else if (orders == null) {
            res.status(status.NOT_FOUND).json({'message': 'not found'});
        }
        else {
            res.json(orders);
        }

    });

};
Controller = {
    GetSingleOrder: getSingleOrder
};

// exporting module
module.exports = Controller;

Итак, как видите, это то, что вам нужно будет сделать, если вы будете следовать лучшим практикам Express.

Если вы используете паруса, просто напишите:

sails generate api Order

и вы получите модель (схему) и файл контроллера для нее. Теперь просто определите свою схему в файле модели (ORM используется здесь как ватерлиния вместо мангуста, используемого в традиционных приложениях Express), и ваш API CRUD будет автоматически сгенерирован для вас. Вы не сможете увидеть код своего API, потому что весь его общий код, который управляет парусами, настраивается от вашего имени.

Протестируйте свои API в Postman Client и убедитесь сами. Самое приятное то, что эти API также являются Restful (опять же, если вы не знаете, что такое REST и Restful, пожалуйста, погуглите). Итак, у нас есть:

  1. СОЗДАТЬ-ЗАПИСАТЬ
  2. ЧИТАТЬ-ПОЛУЧИТЬ
  3. ОБНОВЛЕНИЕ-УСТАНОВИТЬ
  4. УДАЛИТЬ-УДАЛИТЬ

ORM

ORM, используемый в Sails, - это Waterline, в то время как люди используют Mongoose при работе с Express. Переход от мангуста к ватерлинии - это прогулка по парку, поскольку оба работают одинаково, ватерлиния использует библиотеку обещаний BlueBird, которую тоже полезно изучить.

Основное преимущество Waterline заключается в том, что вы не ограничены только MongoDB, т.е. вы можете использовать с ним любую базу данных (SQL или NoSQL) без изменения кода. Адаптеры для различных баз данных доступны на npm, и их можно настроить для использования с Waterline.

Однако одним из недостатков Waterline является то, что вам не разрешено определять встроенные объекты / документы, как это можно сделать в Mongoose. Но поддержка трех основных отношений, т.е. Один ко многим, многие ко многим и один к одному можно красиво реализовать с помощью ватерлинии по сравнению с мангустом.

Пишите меньше шаблонов с парусами

Все в парусах предварительно установлено и настроено для вас, если вы хотите включить / отключить какую-либо функцию, вы можете легко сделать это в файлах конфигурации, паруса следует соглашению по настройке.

Сопровождение крупных проектов

Поскольку Sails следует принципу COC, исходный код всех проектов очень похож, потому что разработчики должны следовать одной и той же структуре папок и файловой структуре в каждом проекте Sails. Это делает вашу базу кода стандартизированной для нескольких модулей.

Так что я думаю, что к настоящему времени я бы порекомендовал SailsJs всем, кто читает этот пост. Скоро напишу подробности, спрашивайте в комментариях, буду рад помочь.