es6-模块化

概念
模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来。

好处

1、防止命名冲突
2、代码复用
3、高维护性

规范产品
es6之前的模块化规范有:

1、CommonJS => NodeJS、Browserify
2、AMD => requireJS
2、CMD => seaJS

语法
模块功能主要由两个命令构成:exportimport

1、export命令用于规定模块的对外接口---暴露
2、import命令用于输入其他模块提供的功能---引入

//js
export let name = `名字`;
export function change() {
    console.log(`修改名字`);
}
//引入
<script type="module">
     import * as m1 from "./m1.js";
     console.log(m1);
</script>

除了直接在script标签内引入,还可以在js文件内引入

注意:html和js文件不要用module命名,以及module1等也不可以

暴露方式
1、分别暴露,直接在属性或方法前加export关键字
2、统一暴露,例如

export{name,change};

3、默认暴露

export default {
    price: `30w`,
    changePrice: function () {
        console.log(`修改价格`);
    }
}

引入方式
1、通用方式:

import * as m1 from "./m1.js";

2、解构赋值形式

import {name,change} from "./m1.js";
import {default as m2} from "./m2.js";

注意:名字重复或default 都可以使用as修改变量或函数名
3、简便形式,只能用于默认暴露

import m2 from "./m2.js";

babel对模块化代码转换
1、安装工具

npm i babel-cli babel-preset-env browserify -D
yarn add @babel/cli  @babel/preset-env --dev
yarn add browserify

2、转换

npx babel es6 -d lib

es6是要转换的文件夹,lib是目标文件夹

3、打包

npx browserify lib/fs.js -o dist/bundle.js

模块化进入NPM包
1、安装

yarn add jquery

2、es6js写入

import $ from 'jquery';
$('body').css('background','pink');

注意
1、引入时不能使用模版字符串
2、jquery本地化无法直接使用,需要

3、使用bablees6里的模块代码转换到lib文件夹

npx babel es6 -d lib

4、使用browserify进行打包

npx browserify lib/app.js -o dist/bundle.js

5、最后html文件内引入

<script src="/dist/bundle.js"></script>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容