试图理解 Webpack
Trying to understand Webpack
我是一名 HTML/CSS/PHP/MYSQL 程序员,现在正在努力学习一些 javascript。我通过挖掘我当前使用的网络邮件的代码(开源)并试图了解它是如何工作的来做到这一点的。我试图了解页面的不同部分是如何加载的(如果不重新加载页面,您将进入 PHP)。如果我没记错的话,它正在使用 webpack 来做到这一点。如果我没记错的话,页面的每一部分都作为一个模块加载。
/******/ (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 = "webmail/v/0.0.0/static/js/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
这似乎是使这种魔法成为可能的(部分)代码。现在,稍后在代码中 webpack 是这样使用的:
AbstractSystemDropDownUserView.prototype.settingsClick = function ()
{
__webpack_require__(/*! Knoin/Knoin */ 5).setHash(Links.settings());
};
如果我没记错的话,这个函数会在点击 settingsClick 按钮时加载一个模块。但是,模块编号 defined/assigned 在哪里?
非常感谢任何帮助我上路的人!
Webpack 从一个主要的 JS 文件开始,其配置的插件(允许在其中需要额外的资源),将这些资源编译成一个合并的脚本,以及当 JS 或 CSS 变化。奇怪的是,如果您查看项目的源代码,它将被设置为使用 require
或 ES6 样式模块 import/export 指令的多个 CommonJS/Node-Style 模块。
一些开始的地方:
您还应该看看:
- Introduction to NPM - NPM 是您可能想要使用的大多数模块所在的位置。
- NodeJS - 服务器端 JS 环境,大多数这些工具 运行 通过节点。
- Browserify - Webpack 几乎是 browserify + 更多,您可能更喜欢更直接的方法
- Gulp - Gulp 是一个基于流的构建工具,webpack 有自己的工具,但值得一看以获取更多想法。
- BabelJS - 以前的 6to5 - 让您在今天的浏览器中使用现代 JS 功能。
- ES5 Shims - 如果您需要支持 IE8,则需要这些。
Webpack 依赖于 node/iojs 的模块和工具,它也类似于带有附加功能的 browserify。
我是一名 HTML/CSS/PHP/MYSQL 程序员,现在正在努力学习一些 javascript。我通过挖掘我当前使用的网络邮件的代码(开源)并试图了解它是如何工作的来做到这一点的。我试图了解页面的不同部分是如何加载的(如果不重新加载页面,您将进入 PHP)。如果我没记错的话,它正在使用 webpack 来做到这一点。如果我没记错的话,页面的每一部分都作为一个模块加载。
/******/ (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 = "webmail/v/0.0.0/static/js/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
这似乎是使这种魔法成为可能的(部分)代码。现在,稍后在代码中 webpack 是这样使用的:
AbstractSystemDropDownUserView.prototype.settingsClick = function ()
{
__webpack_require__(/*! Knoin/Knoin */ 5).setHash(Links.settings());
};
如果我没记错的话,这个函数会在点击 settingsClick 按钮时加载一个模块。但是,模块编号 defined/assigned 在哪里?
非常感谢任何帮助我上路的人!
Webpack 从一个主要的 JS 文件开始,其配置的插件(允许在其中需要额外的资源),将这些资源编译成一个合并的脚本,以及当 JS 或 CSS 变化。奇怪的是,如果您查看项目的源代码,它将被设置为使用 require
或 ES6 样式模块 import/export 指令的多个 CommonJS/Node-Style 模块。
一些开始的地方:
您还应该看看:
- Introduction to NPM - NPM 是您可能想要使用的大多数模块所在的位置。
- NodeJS - 服务器端 JS 环境,大多数这些工具 运行 通过节点。
- Browserify - Webpack 几乎是 browserify + 更多,您可能更喜欢更直接的方法
- Gulp - Gulp 是一个基于流的构建工具,webpack 有自己的工具,但值得一看以获取更多想法。
- BabelJS - 以前的 6to5 - 让您在今天的浏览器中使用现代 JS 功能。
- ES5 Shims - 如果您需要支持 IE8,则需要这些。
Webpack 依赖于 node/iojs 的模块和工具,它也类似于带有附加功能的 browserify。