js模块化使用与进阶

模块化概念

模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程,模块有多种属性,分别反映其内部特性。即:模块化是一种处理复杂系统分解为更好的可管理模块的方式,模块化用来分隔,组织,打包软件。

  • 每个模块都完成一个特定的子功能,所有模块按照某种方式组装起来,成为一个总体,完成整个系统所要要求的功能。
  • 模块是可组合,分解和更换的单元。
  • 模块具有以下几种基本属性: 接口,功能,状态,逻辑
    • 功能,状态和接口反映模块的外部特性。
    • 逻辑反映模块的内部特性。

js模块化的优点

模块化,低耦合,高内聚,方便维护,防止代码冲突(命名重读)。

js模块化实现方案,以及IIFE

  • 第一种方式:基于单例形式,将单例放在全局作用域中,实现模块化。但是这种方法没有处理代码冲突,命名冲突问题,变量局部化问题
  • 第二种方式:基于闭包形式实现模块化。
  • 闭包模块化的基石 --> IIFE形式的模块化:
	const hello = ( function( name ){		
			console.log("hello world!");
			function hello(){
				console.log( "hello "+name + "!" );	
		  }
		  return hello;
	} )("meng");
	hello();

nodejs中的模块化

nodejs是基于commonjs规范的文件的读写。node天生自带模块化。
原因:

   "nodejs中的js文件,会被编译器添加一个闭包环境。所写的js文件代码,会被一个闭包包裹。"
  • nodejs中如何定义一个模块? --> nodejs中一个js文件就是一个模块。
  • nodejs中如何导出一个模块? --> 使用module.exports或者exports。
  • nodejs中如何导入一个模块? -->使用require(xxx)。其中require(xxx)是同步方式引入模块。

原理:

     ( function( exports, module, require, __filename, __dirname ){
   
			module.exports = exports = this = {
   };
			
			"用户在nodejs中的js文件编写的相关代码..."
	
			exports.xxxx = xxxx;
			return moduke.exports;
    } )

注意:

  • 导入导出都是操作的exports对象,通过require(xxxx)实际是获得的exports对象。在添加要暴露的变量或者对象或者方法时,可以使用exports.xxx = xxx形式,也可以直接使用module.exports = xxx形式。
  • 如果在多处有导入同一个模块的语句,那么只会对该模块导入一次。第一次使用require(xxx)之后,对象会被缓存到require对象中。下次导入该模块式,直接返回该对象。

CommonJS的导入导出举例:

##文件1  test1.js  用于导出多个变量,对象以及函数.  exports.xxx = xxx
	let a= 10;
	let b = 20;
	let add = (...rest )=>{
   
    	let total = 0;
    	rest.forEach( ( item, index, origin )=>{
   
       		 total += item;
   		 } 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值