2017-01-03 3 views
0

Я действительно не понимаю смысл WebPack, я прочитал вступительный текст here и кучу других tutorials, но мне кажется, что я должен задавать индивидуальные вопросы ... Я следую примеру, создав 2 файла основной сайт:Webpack Bundle File - Что он делает?

app.js:

document.write('welcome to my app'); 
console.log('app loaded'); 

index.html:

<html> 
    <body> 
    <script src="bundle.js"></script> 
    </body> 
</html> 

Тогда я бегу webpack ./app.js bundle.js из командной строки для создания файла расслоение, которое происходит.

Итак ... как файл пакета теперь используется? Что это? Я думал, что это по существу скомпилировано «все» в один файл, а затем изуродованное, но это не кажется, что в случае, некоторые из вывода выглядит следующим образом (отредактированный включить полную мощность):

/******/ (function(modules) { // webpackBootstrap 
/******/ // The module cache 
/******/ var installedModules = {}; 

/******/ // The require function 
/******/ function __webpack_require__(moduleId) { 

/******/  // Check if module is in cache 
/******/  if(installedModules[moduleId]) 
/******/   return installedModules[moduleId].exports; 

/******/  // Create a new module (and put it into the cache) 
/******/  var module = installedModules[moduleId] = { 
/******/   exports: {}, 
/******/   id: moduleId, 
/******/   loaded: false 
/******/  }; 

/******/  // Execute the module function 
/******/  modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 

/******/  // Flag the module as loaded 
/******/  module.loaded = true; 

/******/  // Return the exports of the module 
/******/  return module.exports; 
/******/ } 


/******/ // expose the modules object (__webpack_modules__) 
/******/ __webpack_require__.m = modules; 

/******/ // expose the module cache 
/******/ __webpack_require__.c = installedModules; 

/******/ // __webpack_public_path__ 
/******/ __webpack_require__.p = ""; 

/******/ // Load entry module and return exports 
/******/ return __webpack_require__(0); 
/******/ }) 
/************************************************************************/ 
/******/ ([ 
/* 0 */ 
/***/ function(module, exports) { 

    document.write('welcome to my app'); 

    console.log('app loaded'); 

/***/ } 
/******/ ]); 

Итак, в чем смысл? Может ли приложение запускаться из этого файла пакета? Как-то связывается ли связка? Должен ли я по-прежнему нуждаться в оригинале i ndex.html и app.js файлах после сборки пакета?

+0

Показать ваш 'webpack.config.js' – haim770

+0

Модуль-модуль связывает полученный файл, определяет все его зависимости (например, другие файлы/модули, которые загружает файл) и объединяет их в один файл (« пакет »). –

ответ

3

Я автор первой статьи, которую вы связали. «Связанный» файл просто означает, что все Javascript, которое должно выполнить ваше приложение/веб-сайт, скомпилированы в один файл, который браузер может понять. Например, в исходном коде вы можете использовать require() или import. Браузер не знает, как их выполнить, поэтому Webpack скомпилирует весь ваш Javascript-код в «объединенный» файл, который браузер может понять и выполнить без ошибок.

Webpack не портит код по умолчанию, вы должны использовать плагин uglify.

Вам не нужен исходный исходный код, только выходной файл встроенного Javascript от Webpack. Вам нужно настроить свой HTML-код для чтения связанного файла. Как правило, у вас есть две конфигурации Webpack, одна для локальной разработки и одна для серийного развертывания.

+0

Прежде всего, спасибо за статью - это хорошо, у меня просто нет фона. Я думал, что импортные объявления были в ES5 (или 6) и могут использоваться для ссылки на файлы js, которые экспортируют модуль, нет? Edit: О, я думаю, что получаю это - я мог нормально импортировать js-файлы, но я не мог импортировать/требовать изображения и т. Д., Но webpack позволяет мне тоже? (См., Что я прочитал вашу статью!) – VSO

+0

Операции импорта/экспорта являются частью развивающегося языка javascript и имеют растущую поддержку nodejs, но не поддерживаются браузерами. stackoverflow не подходит для обсуждения взад и вперед, я бы предложил задать дополнительные вопросы в канале IRC#reactjs –

+0

Прохладный, спасибо! // сл – VSO

Смежные вопросы