模块化

什么是模块化

模块化是指将独立的功能代码封装成一个独立的文件,其他模块需要使用,在进行引用。模块化可以方便代码复用维护方便以及防止命名冲突

ES6模块化

ES6模块功能主要由两个命令构成:exportimportexport命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。

使用方法

使用 webpack ,webpack 是支持 es6 模块化的,所以就只要引用 babel-loader ,对 es6 的语法做处理即可;babel是一个JS编译器,能把ES比较新的语法转化成浏览器能识别的ES5语法

export defalut、export 与 module.exports 有什么区别?

都是用于向外部暴露数据的命令。 export defalutexport 是 ES6 Module 中对外暴露数据的。 export defalut 是向外部默认暴露数据,使用时 import 引入时需要为该模块指定一个任意名称,import 后不可以使用{}export 是单个暴露数据或方法,利用 import{}来引入,并且{}内名称与 export 一一对应,{}也可以使用 as 为某个数据或方法指定新的名称; module.exports 是 CommonJS 的一个 exports 变量,提供对外的接口

ES6 模块规范和 commonjs 规范 运行机制的区别

CommonJS 模块是运行时加载,ES6 模块是编译时输出接口

  • 运行时加载: CommonJS 模块就是对象;即在输入时是先加载整个模块,生成一个对象,然后再从这个对象上面读取方法,这种加载称为“运行时加载”。

  • 编译时加载: ES6 模块不是对象,而是通过 export 命令显式指定输出的代码,import时采用静态命令的形式。即在import时可以指定加载某个输出值,而不是加载整个模块,这种加载称为“编译时加载”。

CommonJS 加载的是一个对象(即module.exports属性),该对象只有在脚本运行完才会生成。而 ES6 模块不是对象,它的对外接口只是一种静态定义,在代码静态解析阶段就会生成。

发表评论 / Comment

用心评论~