Узел JS Express включает / импортирует/экспортирует

#javascript #node.js #express #import #module

#javascript #node.js #экспресс #импорт #модуль

Вопрос:

Хорошо, итак, в основном я пытаюсь изучить и освоиться с модулями экспорта / импорта в Node. Я создал app.js , который содержит, все. Чтобы сделать app.js файл немного чище и удобочитаемее, я пытаюсь включить .js файл из другой папки ( middleware/sass.js) , как бы мне это сделать?

Мой sass.js файл выглядит следующим образом:

 let sassMiddleware = require('node-sass-middleware');

app.use(
    sassMiddleware({
        src: path.join(__dirname, 'resources/scss'),
        dest: path.join(__dirname, 'public/css'),
        debug: true,
        indentedSyntax: false,
        outputStyle: 'compressed',
        prefix: '/css'
    })
);
  

Как мне «включить» это в app.js , не имея всего этого там? Я бы сказал, что я пытаюсь сделать что-то вроде PHP include()

Ответ №1:

Вам нужно либо иметь экземпляр приложения в отдельном модуле, чтобы его можно было импортировать в несколько мест:

index.js

 require('./sass');
const app = require('./app');
app.listen(...);
  

app.js

 ...
const app = express();
module.exports = app;
  

sass.js

 const app = require('./app');
...
app.use(...);
  

Или используйте внедрение зависимостей и оберните все части, которые зависят от экземпляра приложения, функцией:

index.js

 const app = require('./app');
require('./sass')(app);
app.listen(...);
  

sass.js

 ...
module.exports = app => {
  app.use(...);
};
  

Комментарии:

1. Для меня это имело больше смысла. Спасибо! Похоже, здесь я остановлюсь на первом варианте.