宝哥软件园

这篇文章让你彻底了解javascript中的需求、导入和导出

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

本文主要介绍javascript中require、import和export的相关内容,并分享给大家参考和学习。下面就不多说了。我们来看看详细的介绍。

为什么有模块概念

理想情况下,开发人员只需要实现核心业务逻辑,其他人可以加载其他人已经编写的模块。

然而,Javascript不是一种模块化的编程语言。在es6之前,它不支持“类”,所以没有“模块”。

需求时代

Javascript社区为实现“模块”在现有运行环境中的效果付出了巨大的努力。

原创作品

模块是实现特定功能的一组方法。简单地把不同的函数(和记录状态的变量)放在一起,它就是一个模块。

上面的函数m1()和m2()函数m1 () {//.}函数m2 () {//.}组成一个模块。使用时,直接调用即可。

这种方式的缺点很明显:污染全局变量,无法保证变量名和其他模块之间不会有冲突,模块成员之间也没有直接关系。

物体书写

为了解决上述缺点,可以将模块写成一个对象,所有的模块成员都放在这个对象中

var module1=新对象({_count : 0,m1 : function (){//.},m2 :函数(){//.}});上述函数m1()和m2()封装在module1对象中。当您使用它时,您会呼叫这个物件的属性

module 1 . m1();这样写会暴露所有模块成员,内部状态可以外部重写。例如,外部代码可以直接改变内部计数器的值。

模块。_ count=1;立即执行函数写入

使用“立即调用函数表达式”(IIFE)可以达到不公开私有成员的目的

var模块=(function(){ var _ count=0;var m1=function(){ alert(_ count)} var m2=function(){ alert(_ count 1)} return { m 1: m1,m2:m2}})()使用上述写法,外部代码无法读取internal _ count变量。

console.info(模块。_ count);//undefinedmodule是Javascript模块的基本编写。

主流模块规格

在es6之前,还没有提出一套正式的规范。从社区和框架推广的角度来看,有两种流行的javascript模块规范:CommonJS和AMD

CommonJS规范

2009年,美国程序员Ryan Dahl创建了node.js项目,使用javascript语言进行服务器端编程。

这标志着“Javascript模块化编程”的正式诞生。前端的复杂度是有限的,所以有可能没有模块,但是在服务器端,必须有一个模块来和操作系统等应用交互,否则根本不可能编程。

节点编程中最重要的思想之一是模块,正是这种思想使JavaScript的大规模工程化成为可能。模块化编程在js中很流行,也是基于此。后来,requirejs和seajs等工具包出现在浏览器端。可以说,在相应的规范下,要求在ES6之前主导了所有的模块化编程,甚至是现在,在ES6模块被完全实现之前。

在CommonJS中,暴露模块使用module.exportss和export。很多人不明白为什么会有两个暴露的物体。区别将在后面介绍

在CommonJS中,有一个全局方法require()用于加载模块。假设有一个数学模块math.js,它可以如下加载。

var math=require(' math ');然后,您可以调用模块提供的方法:

var math=require(' math ');math.add(2,3);//5正是因为CommonJS使用的require模式的推广,使得后者AMD和CMD也采用require模式来引用模块样式

AMD规格

有了服务器端模块,自然每个人都想要客户端模块。此外,最好两者兼容,一个模块可以在服务器和浏览器上运行,无需修改。

然而,由于一个主要的限制,CommonJS规范不适合浏览器环境。还是上一节的代码,如果在浏览器中运行,会有很大的问题

var math=require('

更多资讯
游戏推荐
更多+