ES6 ------ 基础(六)—— 模块化

简介: ES6 ------ 基础(六)—— 模块化

模块化

  1. 模块化是指将一个打的程序文件,拆分成许多小的文件,然后将小文件组合起来。
  2. 模块化的好处:防止命名冲突、代码复用、高维护性

ES6 模块化语法

模块功能主要由两个命令构成:export 和 import

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

模块化暴露方式

一、分别暴露:在每一句前都加上 export

在 js 文件夹下 创建 Demo.js 文件

  export let school = '北京大学'
  export function teach(){
      console.log('教给你知识!')
  }

在外层文件夹创建 Demo.html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>模块化</title>
</head>
<body>
    <script type="module">
        // 引入 Demo.js 模块内容
        import * as Demo from "./js/Demo.js"
        console.log(Demo)
    </script>
</body>
</html>

dc0e8a04985847dab34396271bc838c8.png

二、统一暴露:export {a, b}

Demo.js

  let school = '清华大学'
  function findJob(){
      console.log('帮助你找到工作!!')
  }
  export{school,findJob}

Demo.html

    <script type="module">
        // 引入 Demo.js 模块内容
        import * as Demo from "./js/Demo.js"
        console.log(Demo)
    </script>

默认暴露:export default {}

Demo.js

  export default {
      school: '理工大学',
      change: function(){
          console.log("好好学习-天天向上")
      }
  }

Demo.html

  <script type="module">
        // 引入 Demo.js 模块内容
        import * as Demo from "./js/Demo.js"
        console.log(Demo)
        Demo.default.change() //好好学习-天天向上
    </script>

315a57ed2dd04b3ab88fbf64a5a88d87.png

模块化引入方式

1.通用导入方式(如上):import * as Demo from "./js/Demo.js"

2.解构赋值方式:import {school, teach} from "./js/Demo.js"

Demo.js文件

  export let school = '北京大学'
  export function teach(){
     console.log('教给你知识!')
  }

Demo.html文件

  <script type="module">
        // 引入 Demo.js 模块内容
        import {school, teach} from "./js/Demo.js"
        console.log(school)
        console.log(teach)
    </script>

f95bbe43c064441eab1a8e58b8e181b6.png

如果有重名(比如 school 重名了),则可以用 as 修改

import {school as university, teach} from "./js/Demo.js"
console.log(university)

默认暴露 export default {} 时,用解构赋值的形式为:

import {default as school} from "./js/Demo.js"

3.简便形式(针对默认暴露)

import Demo from "./js/Demo.js"

4.把两个 Demo 写入一个 JS 文件中

Demo.js

  export let school = '北京大学'
  export function teach(){
      console.log('教给你知识!')
  }

Demo2.js

  export let school = '清华大学'
  export function give(){
      console.log('教给你技能!')
  }

app.js

  // 入口文件
  // 模块引入
  import * as Demo from "./Demo.js"
  import * as Demo2 from "./Demo2.js"
  console.log(Demo)
  console.log(Demo2)

Demo.html

  <script src="./js/app.js" type="module">
    </script>

1d51207b41534ad0bfb8eeb8b9ce36fe.png

babel 对 ES6 模块化代码转换

由于部分浏览器不支持 ES6 语法,可以使用 babel 把 ES6 语法转换为 ES5 的语法,这样不支持 ES6 语法的浏览器也可以运行了。

1.安装工具 babel-cli、babel-preset-env、browserify

进行初始化:npm init --yes 
下载文件:npm i babel-cli babel-preset-env browserify -D 

2.通过npx babel js -d dist/js 做一个转换

转换的结果存放到dist文件下:npx babel js -d dist/js --presets=babel-preset-env

3.打包 npx browserify dist/js/app.js -o dist/bundle.js

详情视频参照:babel转换ES6模块化代码

相关文章
ES6----内置对象拓展
ES6----内置对象拓展
|
7月前
|
JavaScript 前端开发
ES6模块化
ES6模块化
20 0
|
10月前
|
JavaScript 前端开发
深入了解前端开发规范的区别《Commonjs、AMD、CMD、ES6模块化》
深入了解前端开发规范的区别《Commonjs、AMD、CMD、ES6模块化》
78 0
|
10月前
|
JavaScript
ES6----ES6模块化
ES6----ES6模块化
|
12月前
|
JavaScript 前端开发
ES6 ------ 基础(五)
ES6 ------ 基础(五)
|
12月前
ES6 ------ 基础(四)
ES6 ------ 基础(四)
|
12月前
ES6 ------ 基础(二)
ES6 ------ 基础(二)
ES6 ------ 基础(二)
|
12月前
|
网络架构
ES6 ------ 基础(一)
ES6 ------ 基础(一)
|
12月前
|
前端开发 JavaScript
ES6 ------ let实践案例
ES6 ------ let实践案例
|
12月前
|
网络架构
ES9 新特性 ------ 扩展运算符
ES9 新特性 ------ 扩展运算符

热门文章

最新文章