zoukankan      html  css  js  c++  java
  • 模块化,webpack,npm

    如何理解前端模块化

    前端模块化就是复杂的文件编程一个一个独立的模块,比如js文件等等,分成独立的模块有利于重用(复用性)和维护(版本迭代),这样会引来模块之间相互依赖的问题,所以有了commonJS规范,AMD,CMD规范等等,以及用于js打包(编译等处理)的工具webpack

    说一下Commonjs、AMD和CMD

    https://blog.csdn.net/ImagineCode/article/details/81590538

    https://www.processon.com/view/link/5c8409bbe4b02b2ce492286a#map

    一个模块是能实现特定功能的文件,有了模块就可以方便的使用别人的代码,想要什么功能就能加载什么模块。

    • CMD (Common Module Definition), 是sea.js在推广过程中对模块定义的规范化产出,主要用于浏览器端。它主要特点是:对于依赖的模块是延迟执行,依赖可以就近书写,等到需要用这个依赖的时候再引入这个依赖,应用有sea.js.

    • AMD规范(Asynchronous Module Definition):是 RequireJS 在推广过程中对模块定义的规范化产出,也是主要用于浏览器端。其特点是:依赖前置,需要在定义时就写好需要的依赖,提前执行依赖,应用有require.js

    • Commonjs:开始于服务器端的模块化,同步定义的模块化,每个模块都是一个单独的作用域,模块输出,modules.exports,模块加载require()引入模块。nodejs 中自带的模块化

      var fs = require('fs');
      
    • requireJS实现了AMD规范,AMD—中文名异步模块定义的意思

      • 主要用于解决下述两个问题。

        • 多个文件有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器
        • 加载的时候浏览器会停止页面渲染,加载文件越多,页面失去响应的时间越长
      • 语法:requireJS定义了一个函数define,它是全局变量,用来定义模块。

        //定义模块
        define(['dependency'], function(){
            var name = 'Byron';
            function printName(){
                console.log(name);
        	}
            return {
                printName: printName
            };
        });
        //加载模块
        require(['myModule'], function (my){
            my.printName();
        }
        
      • 总结AMD规范:require()函数在加载依赖函数的时候是异步加载的,这样浏览器不会失去响应,它指定的回调函数,只有前面的模块加载成功,才会去执行。
        因为网页在加载js的时候会停止渲染,因此我们可以通过异步的方式去加载js,而如果需要依赖某些,也是异步去依赖,依赖后再执行某些方法。

    webpack用来干什么的

    webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。

    npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块?

    https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/22

    webpack 热更新原理,是如何做到在不刷新浏览器的前提下更新页面的

    https://zhuanlan.zhihu.com/p/30669007

    https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/118

    webpack 打包 vue 速度太慢怎么办

    https://muyiy.cn/question/tool/122.html

  • 相关阅读:
    rabbitmq 学习10channel 说明
    ASP.NET中进行消息处理(MSMQ) 一
    ThreadLocal原理及用法详解
    设计模式责任链模式
    枚举详解之EnumSet、EnumMap用法
    设计模式策略模式和工厂模式结合使用
    Java并发编程系列之CyclicBarrier详解
    [解题报告]求平均成绩
    [解题报告]1005 Number Sequence
    [解题报告]1013Digital Roots
  • 原文地址:https://www.cnblogs.com/zhoujingguoguo/p/11539617.html
Copyright © 2011-2022 走看看