模块与包管理工具

js的天生缺陷——缺少模块化管理机制

·表现>> JS中容易出现变量被覆盖,方法被替代的情况(既被污染)。特别是存在依赖关系时,容易出现错误。这是因为JS缺少模块管理机制,来隔离实现各种不同功能的JS判断,避免它们相互污染。

·解决>> 经常采用命名空间的方式,把变量和函数限制在某个特定的作用域内,人肉约定一套命名规范来限制代码,保证代码安全运行。jQuery中有许多变量和方法,但是无法直接访问,必须通过jQuery,$调用 各个方法。


【Commonjs规范】

不同于jQuery,Commonjs是一套规范,约定了js如何组织,如何编写,包括包,二进制,套接字,单元测试等等。大部分标准在拟定和讨论之中,首先把执行不同任务的代码块和代码文件看为独立的模块,每一个模块都是一个单独的作用域,但不是孤立的,可能存在依赖关系。每个模块分为三个部分,定义、标识和引用。这套规范与现实产品如node.js相互影响,良性循环。


【NodeJs的模块管理机制】

基于commonjs实现了模块管理系统。node中每一个js文件都是一个独立的模块,在其内部不需要有命名空间,不需要担心变量的污染和方法定义时的隔离。同时模块之间可以组合形成更强大的模块或功能包。npm即是用来管理各种功能包的。


1.模块的分类: 核心模块、文件模块、第三方模块;

2.模块的引用:可以通过路径和模块名。模块名引用最终也会被映射为路径。包含了核心函数的核心模块会在node启动时被预先加载。

3.文件模块、第三方模块 都是非核心模块,文件模块就是本地模块

想让模块成为特别的对象类型,使用module.export;

想让模块成为传统的模块实例,使用export.

module.export是真实存在的东西,

export是module.export的辅助方法。

module.export最终返回给调用者;

export挂载属性和方法,然后把属性赋给module.export

如果module.export已经有了属性,那么export上的属性会被忽略

推荐export方式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容