JS模块化编程的大招,打通ES6的import和export

明祖职场 2024-04-09 02:19:56
历史上,Javascript一直没有模块(module)体系,无法将一个大程序分拆成相互依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby的require、Python的import,甚至连css都有@import,但是Javascript任何这方面的支持都没有,这对开发大型的、负责的项目形成了巨大障碍。 在ES6之前,社区定制了一些模块加载方案,主主要的有CommonJS和AMD两种。前者用于服务器,后者用于浏览器。ES6在语言标准的层面上,实现了模块功能,而且实现的相当简单,完全可以取代CommonJS和AMD规范,成为浏览器和服务器通用的模块解决方案。 ES6模块的设计思想,是尽量的静态化,似的编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJS和AMD模块,都只能在运行时确定这些东西,比如:CommonJS模块是对象,输入时必须查找对象属性。 模块功能主要由两个命令构成:export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。 一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量。 浏览器中引入模块文件的时候要注意: 1、需要对script标签指定type="module"属性 2、需要通过http协议访问页面才能正常引入模块文件 3、最好通过最新版本谷歌浏览器(chrome)进行测试 index.html index.js //注意点://1、指定所导入模块的时候,需要加上./;//2、模块中用export直接导出的内容在接受的时候需要些在{}中,并且名称需要和导出的时候一致import name,{oparte as o, age} from './a.js'a.js function oparte() { console.log('oparte');}const name = 'Harlan';//第一种导出方式:export const age = 18;//第二种导出方式://错误写法,如果只导出变量,就必须将变量写到花括号中//export name;export { oparte}//第三种导出方式//export default 在一个模块中只能用一次,表示导出一个匿名变量,在import的时候需要对这个变量重新命名并且不用{}export default name;
0 阅读:0

明祖职场

简介:感谢大家的关注