65 lines
3.4 KiB
Markdown
65 lines
3.4 KiB
Markdown
![]() |
---
|
|||
|
id: 589690e6f9fc0f352b528e6e
|
|||
|
title: Очистити ваш проект з модулями
|
|||
|
challengeType: 2
|
|||
|
forumTopicId: 301549
|
|||
|
dashedName: clean-up-your-project-with-modules
|
|||
|
---
|
|||
|
|
|||
|
# --description--
|
|||
|
|
|||
|
Зараз все, що ви маєте є у файлі `server.js`. Це може привести до складного управління кодом, який не дуже розширюється. Створіть 2 нових файли: `routes.js` і `auth.js`
|
|||
|
|
|||
|
Обидва повинні починатися з такого коду:
|
|||
|
|
|||
|
```js
|
|||
|
module.exports = function (app, myDataBase) {
|
|||
|
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Тепер, зверху вашого серверного файлу, подайте ці файли так: `const routes = require('./routes.js');`. Одразу після того, як ви встановите вдалий зв'язок з базою даних, пропишіть кожен з них таким чином: `routes(app, myDataBase)`
|
|||
|
|
|||
|
Врешті, візьміть усі ваші маршрути на сервері та вставте їх в нові файли, і видаліть їх з вашого серверного файлу. Також візьміть функцію `ensureAuthenticated`, оскільки її створили спеціально для маршрутизації. Тепер ви маєте правильно додати залежності, в яких використовуються функції, такі як `const passport = require('passport');`, з самого верху, над експортним рядком у вашому файлі `routes.js`.
|
|||
|
|
|||
|
Продовжуйте додавати їх, поки помилки не припинять існувати, а ваш серверний файл більше не матиме маршрутизування (**за винятком шляху в блок catch**)!
|
|||
|
|
|||
|
Тепер зробіть те саме в вашому файлі auth.js з усім, що пов'язане з автентифікацією, як ось серіалізація і налаштування локальної стратегії, і видаліть їх з вашого серверного файлу. Обов'язково додайте залежності і наберіть `auth(app, myDataBase)` на сервері в цьому ж місці.
|
|||
|
|
|||
|
Підтвердьте вашу сторінку, якщо все зрозуміло. Якщо ви натрапите на помилки, можете перевірити виконання проєкту до цього етапу [тут](https://gist.github.com/camperbot/2d06ac5c7d850d8cf073d2c2c794cc92).
|
|||
|
|
|||
|
# --hints--
|
|||
|
|
|||
|
Модулі мають бути присутні.
|
|||
|
|
|||
|
```js
|
|||
|
(getUserInput) =>
|
|||
|
$.get(getUserInput('url') + '/_api/server.js').then(
|
|||
|
(data) => {
|
|||
|
assert.match(
|
|||
|
data,
|
|||
|
/require\s*\(('|")\.\/routes(\.js)?\1\)/gi,
|
|||
|
'You should have required your new files'
|
|||
|
);
|
|||
|
assert.match(
|
|||
|
data,
|
|||
|
/client\s*\.db[^]*routes/gi,
|
|||
|
'Your new modules should be called after your connection to the database'
|
|||
|
);
|
|||
|
},
|
|||
|
(xhr) => {
|
|||
|
throw new Error(xhr.statusText);
|
|||
|
}
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
# --solutions--
|
|||
|
|
|||
|
```js
|
|||
|
/**
|
|||
|
Backend challenges don't need solutions,
|
|||
|
because they would need to be tested against a full working project.
|
|||
|
Please check our contributing guidelines to learn more.
|
|||
|
*/
|
|||
|
```
|