Ответ 1
Зачем использовать webpack для node backend
Если мы говорим о реагировать и node, вы можете построить isomorphic response app. И если вы используете import
модули ES6 в приложении-клиенте на стороне клиента, все в порядке - они связаны с веб-пакетом на стороне клиента.
Но проблема на сервере, когда вы используете одни и те же модули реагирования, поскольку node не поддерживает модули ES6. Вы можете использовать require('babel/register');
на стороне сервера node, но код трансипиля во время выполнения - он неэффективен. Наиболее распространенным способом решения этой проблемы является пакет backend с помощью webpack (вам не нужно, чтобы весь код транслировался с помощью webpack - только проблемный, например, реагировать на вещи в этом примере).
То же самое происходит с JSX.
Объединение интерфейса и бэкэнд одновременно
Конфигурация вашего webpack может иметь конфигурации в массиве: один для интерфейса и второй для бэкэнд:
webpack.config.js
const common = {
module: {
loaders: [ /* common loaders */ ]
},
plugins: [ /* common plugins */ ],
resolve: {
extensions: ['', '.js', '.jsx'] // common extensions
}
// other plugins, postcss config etc. common for frontend and backend
};
const frontend = {
entry: [
'frontend.js'
],
output: {
filename: 'frontend-output.js'
}
// other loaders, plugins etc. specific for frontend
};
const backend = {
entry: [
'backend.js'
],
output: {
filename: 'backend-output.js'
},
target: 'node',
externals: // specify for example node_modules to be not bundled
// other loaders, plugins etc. specific for backend
};
module.exports = [
Object.assign({} , common, frontend),
Object.assign({} , common, backend)
];
Если вы запустите эту конфигурацию с помощью webpack --watch
, она будет параллельно создавать ваши два файла. Когда вы редактируете специальный код интерфейса, только frontend-output.js
будет сгенерирован, то же самое для backend-output.js
. Лучше всего, когда вы редактируете изоморфную часть реакции - webpack будет создавать оба файла одновременно.
Вы можете найти в этом учебник объяснение, когда использовать webpack для node (в главе 4).