当前位置: 首页 > Web前端 > HTML

带你了解NodeJs的模块体系

时间:2023-03-29 11:14:32 HTML

前言在JavaScript语言中,两个独立的js脚本是不可能相互引用的。只能在Html页面中引入多个脚本来实现关联。NodeJs提供了一个简单的模块系统,让Js代码之间可以相互引用,方便将自己的调用方法暴露给别人使用。导入模块示例A文件名:jsjiami.jsexports.hello=function(){console.log('HelloWorld');}exports.jiami=function(code){return`js一键加密|jsjiami.com->${code}`;}/*------------*//*constCORE={test:function(){console.log('test');},test1:function(){console.log('test1');}}module.exports=CORE;*/文件名:main.jsconst{jiami,hello}=require("./test/jsjiami");conststr=jiami('js一键加密|jsjiami.com');console.log(str);hello();/*constCORE=require('./test/jsjiami');CORE.test1();*/敲代码的时候一定要多做,上面的代码可以丢进编译器运行看看是否正常。作者使用WebStorm。例子A解析上面的例子很简单,通过exports导出一个名为jiami的函数,暴露函数。然后在main.js文件中引用这个函数,通过require关键字和{}引入需要的函数就可以直接使用要导入的函数。或者看评论区,也可以用{}直接引入方法作为变量调用。导入模块示例B文件名:jsjiemi.jsexportconsthello=function(){console.log('helloword');}exportconstjsjiemi=function(){return'js一键解密|jsjiami.com';}exportdefault{test:function(){console.log('test');},test1:function(){console.log('test1');},jsjiemiDefault:jsjiemi}文件名:main.jsimport{jsjiemi,hello}from"./test/jsjiemi.js";conststr=jsjiemi();console.log(str);hello()importCOREfrom"./test/jsjiemi.js";CORE.test();核心。test1();conststr1=CORE.jsjiemiDefault();console.log(str1);还是按照惯例,能敲代码,能敲就敲,先跑一边,再分析。建议大家先扔到自己的编译器中运行,试一下手感。示例B分析实例使用import关键字引入方法,通过export关键字暴露功能。导出后必须跟声明,而不是变量。import在{}内引入指定js文件暴露的方法,没有暴露的不能引用。exportdefault后面必须跟一个对象,该对象包含您要公开的任何代码或变量。使用importxxx直接自定义一个变量,不用{}与exportdefault配合使用。只有exportdefault才能直接自定义一个变量来接受暴露的函数。总结(有彩蛋)以上介绍了两种暴露和导入NodeJs模块的方式。相信关注我的读者会发现例子2会报错,为什么呢?接下来我来为你解答哈哈。NodeJs更新到14版本后,分为两种模块规范,一种是CJS,一种是ESM。在上面的示例代码中,示例A是CJS兼容的,示例B是ESM兼容的。NodeJs默认为CJS规范。如果要使用ExampleB的export和import,需要在package.json中添加type属性指定module规范,直接post。{"name":"bet","version":"1.0.0","description":"","main":"index.js","type":"commonjs",//commonjs=CJS模块=ESM"scripts":{"test":"echo\"Error:notestspecified\"&&exit1"},"keywords":[],"author":"jsjiami.com","license":"ISC"}如果文章对您有帮助,希望您能喜欢、关注和收藏,谢谢!有什么问题可以在下方留言,或者通过我的网站www.jsjiami.com找我