查看“ECMAScript6:模块”的源代码
←
ECMAScript6:模块
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
一个模块通常是一个独立的JS文件,该文件内部定义的变量和函数除非被导出,否则不能被外部所访问。 使用export关键字放置在需要暴露给其他模块使用的变量、函数或类声明前面。 ==定义模块== Modules.js: <nowiki> // 导出数据 export var color = "red"; export let name = "module"; export const sizeOfPage = 10; // 导出函数 export function sum(a, b){ return a + b; } // 将在模块末尾进行导出 function subtract(a, b){ return a - b; } // 将在模块末尾进行导出 function multiply(a, b){ return a * b; } // 将在模块末尾进行导出 function divide(a ,b){ if(b !== 0) return a / b; } // 导出类 export class Car { constructor(sColor, iDoors){ this.color = sColor; this.doors = iDoors; } showColor(){ console.log(this.color); } } // 模块私有的变量 var count = 0; // 模块私有的函数 function changeCount(){ count++; } /* // 导出multiply函数 export {multiply}; // subtract是本地名称,sub是导出时使用的名称 export {subtract as sub} // 导出模块默认值 export default divide;</nowiki> 注意: *没有添加export关键字而定义的变量、函数和类在模块外是不允许被访问的 *一个模块可以导出且只能导出一个默认值 第二种和第三种语法形式: <nowiki> // 第二种语法形式 // 使用default关键字导出一个函数作为模块的默认值, // 因为导出的函数被模块所代表,所以它不需要一个名称 export default function(a ,b){ if(b !== 0) return a / b; } // ----------------------- // function divide(a ,b){ if(b !== 0) return a / b; } // 第三种语法形式 export {divide as default}</nowiki> 一次性多个导出: <nowiki> export {multiply, subtract as sub, divide as default}; </nowiki> ==导入模块== index.html: <nowiki> <!DOCTYPE html> <html> <head> <script type="module" src="index.js"></script> </head> </html> </nowiki> index.js: <nowiki> // 导入模块默认值 import divide from "./Modules.js"; // 导入多个绑定 import {color, name, sizeOfPage} from "./Modules.js"; // 导入单个绑定 import {multiply} from "./Modules.js"; // 因Modules模块中导出subtract函数时使用了名称sub,这里导入也要用该名称 import {sub} from "./Modules.js"; // 导入时重命名导入的函数 import {sum as add} from "./Modules.js"; // 导入类 import {Car} from "./Modules.js"; // 导入整个模块 import * as example from "./Modules.js"; console.log(color); //red console.log(name); //module console.log(sizeOfPage); //10 // 只能用add而不能用sum了 console.log(add(6, 2)); //8 console.log(sub(6, 2)); //4 console.log(multiply(6, 2)); //12 console.log(divide(6, 2)); //3 let car = new Car("black", 4); car.showColor(); //black console.log(example.name); //module // 注意这里是sum,而不是add console.log(example.sum(6, 2)); // 8 // count是Modules模块中私有的变量,在外部不能访问 console.log(example.count); //undefined // changeCount()函数是Modules模块中私有的函数,在外部不能访问 console.log(example.changeCount()); //TypeError: example.changeCount is not a function </nowiki> 注意:导入模块时,可以使用相对路径,也可以使用绝对路径 使用相对路径时,对同一目录下的文件,不能使用Modules.js来引入,而要使用./Modules.js
返回至
ECMAScript6:模块
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息