ES2015之模块

409 阅读2分钟

这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

模块

ES2015的标准增加了:Modules即模块,这篇文章我们就来了解一下什么是模块。

由于有时需要运行大量 Javascript 脚本的复杂程序,而且里面的部分程序还有可能用在其他地方,我们就可以将 JavaScript 程序拆分为可按需导入的单独模块。一个模块就是一个独立的文件,该文件内部的所有变量,外部无法获取。

如何使用

ES6以前使用JavaScript 模块我们会依赖require方法,但现在我们可以依赖于import和 export。比如我们有个slifree.js模块,那么我们就看看它是怎么被使用的。

export

export用来导出模块文件变量,export可以输出变量或者函数,slifree.js里面我们可以这样写:

第一种方式

export const name = '也笑'

export function total(x,y){
    return x+y
}

第二种方式

const name = '也笑'
function total(x,y){
    return x+y
}
export {name,total}

第三种方式

const name = '也笑'
function total(x,y){
    return x+y
}
export {
    name as zhName,
    total as sum
}

我们可以使用as关键字,给变量或者函数重命名。我们需要注意的是:如果我们用第一种方式要加上变量或者函数的声明,如果用第二种方式我们一定要用{}包裹。

export default

export default也是用来导出模块文件变量,但是它与export不同的地方是:每个模块只允许有一个默认导出,也就是说一个文件只能允许出现一次export default,使用方式与export类似,比如:

export default function total(x,y){
    return x+y
}

或

export default '也笑'

import

import用来导入模块文件变量,它需要根据模块导出文件的方式而使用。

export

需使用{},来导入需要的变量或函数,如下:

import { name, total } from 'slifree.js'

此时我们也可以给引入的变量重命名,也是使用as关键字,如下:

import { name as zhName, total as sum } from 'slifree.js'

我们也可以整体导入,如下:

import * as slifree from 'slifree.js'

export default

不要使用{},如下:

import total from 'slifree.js'

export 和 export default

slifree.js如果是混合写法,如下:

export const name = '也笑'
export const name1 = '也笑1'

export default function sum(x,y){
    return x+y
}

那么我们就可以这样导入。

import sum,{name} from 'slifree.js'

注意事项

在项目中,我们会根据需要来使用export 和 export default,这种情况我们要注意对应import的使用方式。

总结

利于as关键字可以防止项目中变量冲突。

如果你想了解ES的其他特性,请移步到 ES2015+碎片化学习,每天都在向前走一步,这是所有文章的目录入口。