美文网首页IT@大前端
对JS模块,模块化,模块管理器的理解

对JS模块,模块化,模块管理器的理解

作者: 从小就很瘦 | 来源:发表于2018-06-22 21:57 被阅读1次

随着对nodejs学习的深入,以前模糊的知识体系逐渐清晰了。今天总结下自己对js的模块,模块化规范,模块管理器等的理解。

模块
在以前,js是没有所谓的类的概念的,也就没有模块之说(es6已经有了)。
于是便用闭包来构造模块,隐藏私有属性和方法,暴露公有属性和方法。这样 就形成了一个模块。

模块化规范

js的模块化规范有commonjs,AMD,CMD,UMD, ES6
1.commonjs,是服务器端的规范,用到的是同步加载。 commonjs是主要为了js在后端的表现制定的,他是不适合前端的!nodejs用的就是commonjs规范。
2.AMD(异步模块定义),是一个浏览器端模块化开发的规范。用到的是异步加载。requirejs框架用的就是AMD规范。
3.CMD(同步模块定义)跟AMD的区别是实现了按需加载。seajs使用了CMD规范
4.UMD commonjs和AMD的结合。
5.ES6的import,export就不多说了。
来看下用法:
CommonJS
定义一个hi.js:

var str = 'Hi';

function sayHi(name) {
  console.log(str + ', ' + name + '!');
}

module.exports = sayHi;

在hi模块中定义了sayHi函数,用exports将它暴露出去。未被暴露出去的变量str是无法被外部访问的。其他模块要用这个函数的话,需要先require这个hi模块:

var Hi = require('./hi');
Hi('Jack');     // Hi, Jack!

其实就是模块标识(module),模块定义(exports),模块引用(require)
注意的一点是,require模块时写的是相对路径,如果省略路径,直接写模块名,默认的就是从node_modules文件夹下找模块。

AMD
define定义模块,require加载模块。

define(id, [depends], factory);  
require([module], callback);

模块管理器

前端的模块管理器一般指管理 AMD 或者 CommonJS 模块的东西。
requirejs和seajs可以说是模块加载器。
工具:
1.Browerify 让服务器端的CommonJS格式的模块可以运行在浏览器端 模块--->文件
2.Bower 基本退出了历史舞台
3.现在最火的webpack ,Browerify的加强版
4.Component 是Express框架的作者TJ Holowaychuk开发的模块管理器。它的基本思想,是将网页所需要的各种资源(脚本、样式表、图片、字体等)编译后,放到同一个目录中(默认是build目录)。
5.Duo Component的基础上开发的

相关文章

  • 对JS模块,模块化,模块管理器的理解

    随着对nodejs学习的深入,以前模糊的知识体系逐渐清晰了。今天总结下自己对js的模块,模块化规范,模块管理器等的...

  • 前端工程化的一些理解

    一、模块化 主要是js模块化,可以使用CommonJS、AMD、CMD等模块化规范,其中的区别是CommonJS对...

  • 模块化开发

    js模块化开发vue模块化开发

  • 前端javascript模块化

    JavaScript js 模块化 关于js模块化的理解写法一 写法二 写法三 写发四(不推荐) 写发五 (错误写...

  • Node.js模块化学习

    模块化的基本概念Node.js 中模块化npm与包模块的加载机制 模块化的基本概念 什么是模块化 模块化是指解决一...

  • 浅谈移动端模块化

    一 模块化基础概念 二 为什么要进行模块化 三 模块化实例操作 话不多说,直奔主题,本文主要讲解我对模块化的理解,...

  • webpack基础笔记

    webpack基础 1.前端工程化 实际的前端开发: 模块化:(js的模块化,css的模块化,资源的模块化) 组件...

  • 06Vue的前端工程化

    Vue的前端工程化 一 模块化规范 1.1模块化规范举例 浏览器端JS模块化规范:AMD,CMD 服务器端JS模块...

  • 模块化和组件化概念

    几个概念 模块:一个功能的JS程序,即一个js文件 模块化:应用的js文件都是以模块来编写的 为什么要模块化?降低...

  • 从前端模块化深入解析node.js的模块加载机制

    框架总览 ? 前言? 模块化的理解 ? 什么是模块 ? 模块化的进化过程 ? 模块化的好处 ? 引入多个 后出...

网友评论

    本文标题:对JS模块,模块化,模块管理器的理解

    本文链接:https://www.haomeiwen.com/subject/jejkyftx.html