gpt4 book ai didi

javascript - 试图理解 Webpack

转载 作者:可可西里 更新时间:2023-11-01 01:51:20 26 4
gpt4 key购买 nike

我是一名 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 按钮时加载一个模块。但是,在哪里定义/分配模块编号?

非常感谢任何帮助我上路的人!

最佳答案

Webpack 从一个主要的 JS 文件开始,其配置的插件(允许需要额外的资源)将这些资源编译成一个合并的脚本,以及当 JS 或 CSS 更改时的热交换更新观察者。奇怪的是,如果您查看该项目的源代码,它将被设置为许多使用 require 或 ES6 样式模块导入/导出指令的 CommonJS/Node 样式模块。

一些开始的地方:

你还应该看看:

  • Introduction to NPM - NPM 是您可能想要使用的大多数模块所在的位置。
  • NodeJS - 服务器端 JS 环境,这些工具中的大多数通过节点运行。
  • Browserify - Webpack 几乎是 browserify + 更多,您可能更喜欢更直接的方法
  • Gulp - Gulp 是一种基于流的构建工具,webpack 有自己的工具,但值得关注以获取更多想法。
  • BabelJS - 以前的 6to5 - 让您可以在当今的浏览器中使用现代 JS 功能。
  • ES5 Shims - 如果您需要支持 IE8,则需要这些。

Webpack 依赖于 node/iojs 的模块和工具,它也类似于带有附加功能的 browserify。

关于javascript - 试图理解 Webpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28776061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com