← 返回首页
Nodejs基础教程(四)
发表时间:2020-04-20 00:37:26
讲解模块化

随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂。Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。但是,Javascript不是一种模块化编程语言,它不支持"类"(class),包(package)等概念,更遑论"模块"(module)了。

ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,旨在成为浏览器和服务器通用的模块解决方案。其模块功能主要由两个命令构成:export 和 import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。

1.什么是模块化开发

传统非模块化开发有如下的缺点: - 命名冲突 - 文件依赖

模块化规范: - CommonJS模块化规范 - ES6模块化规范

2.CommonJS模块规范

每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。

实例: 1)创建“module”文件夹

2)导出模块 创建 module/mathoperate.js

// 定义成员:
const sum = function(a,b){
    return parseInt(a) + parseInt(b)
}
const subtract = function(a,b){
    return parseInt(a) - parseInt(b)
}
const multiply = function(a,b){
    return parseInt(a) * parseInt(b)
}
const divide = function(a,b){
    return parseInt(a) / parseInt(b)
}

// 导出成员:
/*
module.exports = {
    sum: sum,
    subtract: subtract,
    multiply: multiply,
    divide: divide
}*/

//简写
module.exports = {
    sum,
    subtract,
    multiply,
    divide
}

3)导入模块

创建 test.js

//引入模块,注意:当前路径必须写 ./
const m = require('./module/mathoperate')
console.log(m)

const result1 = m.sum(1, 2)
const result2 = m.subtract(1, 2)
const result3 = m.multiply(2,3);
const result4 = m.divide(10,5);
console.log(result1)
console.log(result2)
console.log(result3)
console.log(result4)

运行结果:
{
  sum: [Function: sum],
  subtract: [Function: subtract],
  multiply: [Function: multiply],
  divide: [Function: divide]
}
3
-1
6
2

3.ES6模块化规范

1)创建 es6模块化 module/api.js

export function getList() {
    console.log('获取数据列表')
}

export function save() {
    console.log('保存数据')
}

2)创建 test.html

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="module">
    import {getList, save } from "./module/api.js"
    getList()
    save()
</script>
</body>
</html>

运行结果:
获取数据列表
保存数据

ES6模块化的另一种写法

1)创建 es6模块化 module/api.js

export default {
    getList() {
        console.log('获取数据列表2')
    },
    save() {
        console.log('保存数据2')
    }
}

2)创建 test.html

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="module">
    import user from "./module/api.js"
    user.getList()
    user.save()
</script>
</body>
</html>

运行结果:
获取数据列表2
保存数据2