扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇内容介绍了“Javascript模块化机制原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
成都创新互联主要从事网站设计、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务玄武,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
1. 概述
js发展初期暴露了其缺陷:缺乏模块,后来提出了commonJS规范来规范其模块的规范。作为JavaScript新手,发现对于其JavaScript的模块机制,不是很理解。我查阅了一些资料整理了JavaScript CommonJS的原理和机制。
2. JavaScript
2.1 无后端的项目
这类项目不能使用CommonJS的模块规范,这是我起初所犯的错误。在没有es6被大多数浏览器支持的时候,js文件充斥着var和function,由此引来了命名冲突和污染,使得JavaScript代码很复杂。es6的class概念出现有效规范了JavaScript的模块化规范。由于这类项目只能通过script标签引入,我们在这里讲一下script标签的相关知识。
每当浏览器解析到
这样就可以在index.js使用point类了。
总结下来:
js类库必须在header中引入,保证对之后script引入的js文件的支持,毕竟script标签的执行顺序是顺序执行,script标签引入顺序和实际引入顺序相同。
自定义的script标签引入的js文件,要放在body的尾部,保证DOM元素渲染结束。
每个js文件尽量是es6 class对象,避免作用域和命名域的冲突。
2.2 后端 服务器 NodeJS
模块引用的实例如下:require方法
const math = require("math");
模块的定义:
上下文提供了exports对象用于导出当前模块方法和变量,并且它是唯一的导出出口。在模块中,还存在一个module对象,他代表模块自身,exports是module对象的属性。导出方式:
// math.js exports.add = function () { }; module.exports.add = function () { };
2.3 后端 es6的module
ES6模块不是对象,而是通过export命令显式指定输出的代码,输入时也采用静态命令的形式。
由于ES6模块是编译时加载,使得静态分析成为可能。有了它,就能进一步拓宽JavaScript的语法,比如引入宏(macro)和类型检验(type system)这些只能靠静态分析实现的功能。
除了静态加载带来的各种好处,ES6模块还有以下好处:
不再需要UMD模块格式了,将来服务器和浏览器都会支持ES6模块格式。目前,通过各种工具库,其实已经做到了这一点。
将来浏览器的新API就能用模块格式提供,不再必要做成全局变量或者navigator对象的属性。
不再需要对象作为命名空间(比如Math对象),未来这些功能可以通过模块提供。
浏览器使用ES6模块的语法如下:
导出对象和变量:
var firstName = 'XXX'; var lastName = 'YYY'; export {firstName, lastName}; Point.js // 导出类对象 export default class Point extends circle { }
引入module
import Point from "Point";
“Javascript模块化机制原理是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流