• 什么是模块打包工具


    认识到webpack可以认识import,可以翻译index.js。可能我们就认为webpack就是js的一个翻译器。划重点,,,不是的。。。
     
    webpack实际上称不上是一个翻译器,因为呢,他只认识import这样的语句,其它高级的js语法,他一概不认。所以把webpack看作一个js翻译器,实际上是高看了他,我们去搜索webpack的定义,是这样的
    webpack is a module bundler
    webpack实际上是一个模块打包工具
    index.js
    import Header from './header';
    import Sidebar from './sidebar';
    import Content from './content';
    
    new Header();
    new Sidebar();
    new Content();

    header.js

    function Header() {
      var dom = document.getElementById('root');
      var header = document.createElement('div');
      header.innerText = 'header';
      dom.appendChild(header);
    }
    export default Header;

    siderbar.js

    function Sidebar() {
      var dom = document.getElementById('root');
      var sidebar = document.createElement('div');
      sidebar.innerText = 'sidebar';
      dom.appendChild(sidebar);
    }
    
    export default Sidebar;
    content.js
    function Content() {
      var dom = document.getElementById('root');
      var content = document.createElement('div');
      content.innerText = 'content';
      dom.appendChild(content);
    }
    export default Content;
    我们看之前这个文件,Header是什么呢,是一个模块,Sidebar和Content一样,也是一个模块。webpack的作用实际上可以把这些模块打包到一起的这样一个工具。所以他叫做模块打包工具。所以一看到import,就应该想到后面是一个模块。
    我们在写代码的时候,不仅碰到过ES Moudule这样的模块规范,还有commonJS(node里面最常用的模块规范),CMD,AMD。
    这样的模块规范,webpack一样可以正确的识别。举个例子,我们把index.js的方式改成commonJS的方式。
    var Header = require('./header.js');
    var Sidebar = require('./sidebar.js');
    var Content = require('./content.js');
    
    
    new Header();
    new Sidebar();
    new Content();
    commonJS是require这样的导入方式,如果这样导入的话,相应的导出模块也要有相应的变化。不再是是export default的方式了。要用commonJS的规范
    header.js
    function Header() {
    var dom = document.getElementById('root');
    var header = document.createElement('div');
    header.innerText = 'header';
    dom.appendChild(header);
    }
    module.exports = Header;
    sidebar.js
    function Sidebar() {
    var dom = document.getElementById('root');
    var sidebar = document.createElement('div');
    sidebar.innerText = 'sidebar';
    dom.appendChild(sidebar);
    }
    
    
    module.exports = Sidebar;
    content.js
    function Content() {
    var dom = document.getElementById('root');
    var content = document.createElement('div');
    content.innerText = 'content';
    dom.appendChild(content);
    }
    module.exports = Content;
    这样就可以了,module.exports是commonJS的导出方式,webpack是一个模块打包工具,他可以识别出任何模块引入的语法。
    所以到这,就可以很明显的知道webpack不是翻译器,他是一个模块打包工具。最早的时候,webpack推出的时候,他是一个js的模块打包工具。随着webpack的发展,他已经不仅仅是js文件了。他还可以打包其它任何形式的模块文件。比如在react,vue的框架里面
    var style = require('./index.css');
    或
    import style from './index.css';
    他还可以打包jpg,png这样的图片文件,他可以打包任何你想打包的内容,所以webpack准确的定义,他就是一个模块打包工具。



  • 相关阅读:
    WebService协议
    用实例揭示notify()和notifyAll()的本质区别 收藏
    深入Java集合学习系列:HashMap的实现原理
    Oracle 索引扫描的五种类型
    Spring 异常
    Spring MVC
    银行家算法
    Java内存模型与多线程
    Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
    SpringMVC单元测试之MockMVC,模拟登入用户
  • 原文地址:https://www.cnblogs.com/wzndkj/p/10704956.html
Copyright © 2020-2023  润新知