A Roadmap
  • Introduction
  • Roadmap
  • Basics
    • Basic Terminal Usage
      • Shell
        • 基本
        • 变量
        • 传递参数
        • 运算符
        • 命令
        • 流程控制
        • 函数
        • 输入输出重定向
    • Character Encoding
      • 字符编码
    • Data Structures & algorithms
    • Network
      • TCP/IP
      • Http/Https
        • 浏览器缓存
        • Status Code
        • GET & POST
        • HTTPS 握手过程
        • HostOnly Cookie
      • CDN
        • CDN 工作原理
    • Version Control
      • git message format
      • git commands
    • Principles
    • Design Patterns
    • Others
      • JSON
      • 正则表达式
  • Front End
    • Web Standard
      • Html
      • CSS
        • font-face 小记
        • Grid 布局简易笔记
      • Javascript
        • Ajax
          • Fetch
          • XMLHttpRequest
        • DOM
          • Selection
          • 常用 DOM 操作
          • script 标签的几个属性
        • Ecmascript
          • this 关键字
          • Event Loop
          • 隐式转换
          • Date
        • Event
          • 模拟事件
          • Others
    • Development
      • Package Management
        • npm
      • Modulization
        • 模块化机制
        • webpack 打包解析
      • Architecture
      • Build Tools
        • 如何编写一个自定义的 eslint 规则?
      • Debug
        • 移动端调试 web
      • Pre/Post Processors
      • Test
        • Jest Snapshot 使用指南
      • Type Checkers
        • TS 中 enum 的编译结果
    • Libs & frameworks
    • Platforms
      • Browser
        • Basics
          • 从输入 URL 到页面加载完成都发生了什么事情?
          • HTML 加载的过程示意图
          • 为什么读取某些属性,也会导致回流?
          • Chrome 进程模型
        • PWA
        • Compatible
        • Cross Origin
        • Performance
          • 性能检测:performance 对象
          • 性能指标
        • Others
          • 移动端 web 开发笔记
      • Server
      • Desktop Applications
      • Mobile Applications
        • Flutter 在移动端和 Web 端的技术实现
  • Back End
    • outline
    • Languages
      • Node
        • Event Loop
        • NodeJS 中的进程与线程
        • NodeJS 中的 esModule 与 commonJS
  • Clients
    • outline
    • 安装 IPA 包
  • DevOps
    • Languages
    • OS Concepts
    • Servers & terminal
  • UI & UX
    • outline
  • Others
    • Posts
      • 使用 node 爬取数据并导出到 excel
      • antd 1.x datepicker 时区问题
      • babel-transform-runtime 踩坑记录
      • lodash 按需加载注意事项
      • 记一次项目迁移的踩坑记录
      • 时区与JS中的Date对象
      • 记一次 vue + ts 开发踩坑
    • Tools
      • 个人常用的工具分享
      • tmux 简要笔记
Powered by GitBook
On this page
  • 模块化
  • 打包

Was this helpful?

  1. Front End
  2. Development
  3. Modulization

模块化机制

PreviousModulizationNextwebpack 打包解析

Last updated 6 years ago

Was this helpful?

模块化

    • commonJS 同步加载。循环引用时,只加载模块已执行的部分。

    • Es6 参考webpack打包的esmodules代码,es加载模块的内容,是保持了一个对模块导出部分的引用。

打包

  • 那个是 CSS/JS 的发布时的合并,因为你写的时候,特别是应用了各种预处理器以及衍生语言等写 CSS/JS 的时候,源代码的处境是为了写代码,为了易于管理和阅读,你的代码通常会分布在多个文件中,在发布的时候就不需要那样了,而且浏览器还不一定吃你的源代码 (比如你写的是 SCSS,CoffeeScript,模块化的 JS,JSX……),所以需要有编译 -> 打包这个过程,其中包括把你的源代码变成浏览器吃的代码,自动前缀,最小化,连接,混淆等操作,一般最后输出就是一个整的 CSS 或者 JS 文件。

  • 这个是在处理依赖管理的时候遇到的包,指的是更接近软件包的概念,例如你写程序的时候用了一些别人的“库”或者“组件”,实际的体现就是你通过 npm,bower 等依赖管理(或者叫包管理器)来管理你的项目的外部依赖。比如你在你的项目里面用了一个 bootstrap,通常的方式是你可以直接下载官网发布的程序,然后解压,放到你的项目文件夹里面,但是有了 bower 之后,你就可以直接通过 bower 一键来帮你完成这些事情,在你的程序很复杂,用的库很多的时候,手动一个个下载和更新那就是非常繁琐的事情了,所以有了这样的依赖管理工具来帮助你处理这 些琐事,同时你自己的项目也是作为一个“包”来被处理的,通过记录你的“包”依赖的其他包的信息,然后那些依赖管理工具就能够自动帮你搞定后面的事情了

知乎-前端开发的模块化和组件化的定义,以及两者的关系?
javascript模块循环加载