我是一名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的按钮时加载模块。但是,定义/分配的模块编号在哪里?
非常感谢帮助我上路的任何帮助!
答案 0 :(得分:15)
Webpack以一个主JS文件及其配置的插件(允许需要其他资源)开始,将这些资源编译为合并脚本,以及JS或CSS更改时热交换更新的观察者。如果您查看项目的源代码,可能会将其设置为许多使用require
或ES6样式模块导入/导出指令的CommonJS / Node-Style模块。
一些开始的地方:
您还应该看看:
Webpack依赖于来自node / iojs的模块和工具,它也类似于带有附加功能的browserify。