首页 > 编程语言 >带你了解NodeJs的模块系统

带你了解NodeJs的模块系统

时间:2022-09-30 15:39:48浏览次数:99  
标签:console log 示例 NodeJs js 了解 export 模块 test


前言

在JavaScript语言中,两个独立的js脚本互相引用是无法实现的,只能在Html页面中引入多个脚本来做到关联。

NodeJs提供了一个简单的模块系统,它让Js代码之间可以互相引用,方便暴露自己的调用方法给别人使用。

引入模块示例A

​文件名:jsjiami.js​

exports.hello = function() {
console.log('Hello World');
}

exports.jiami = function (code) {
return `js一键加密 | jsjiami.com -> ${code}`;
}

/*----------*/

/*const CORE = {
test: function () {
console.log('test');
},
test1: function () {
console.log('test1');
}
}

module.exports = CORE;*/

​文件名:main.js​

const {jiami, hello} = require("./test/jsjiami");

const str = jiami('js一键加密 | jsjiami.com');
console.log(str);

hello();

/*
const CORE = require('./test/jsjiami');
CORE.test1();
*/

敲代码一定要多动手,以上代码可以丢到编译器中运行一下试试是否正常运行,作者用的是WebStorm。

示例A解析

以上示例很简单,通过exports导出了一个名字为jiami的函数,将该函数暴露了出去。

然后在main.js文件中引用了这个函数,通过的require关键词和**{}**将需要引入的函数引入进来就可以直接使用了。

或者看注释部分,也可以不用**{}**,直接引入当变量调用方法。

引入模块示例B

​文件名:jsjiemi.js​

export const hello = function () {
console.log('hello word');
}

export const jsjiemi = function () {
return 'js一键解密 | jsjiami.com';
}

export default {
test: function () {
console.log('test');
},
test1: function () {
console.log('test1');
},
jsjiemiDefault: jsjiemi
}

​文件名:main.js​

import {jsjiemi, hello} from "./test/jsjiemi.js";

const str = jsjiemi();
console.log(str);

hello()

import CORE from "./test/jsjiemi.js";
CORE.test();
CORE.test1();
const str1 = CORE.jsjiemiDefault();
console.log(str1);

依然按照惯例啊,敲代码的,能动手就动手,先跑一边,再分析,建议各位先丢到自己的编译器中跑一下试试手感。

示例B解析

该实例是用import关键词来引入方法的,通过export关键词暴露函数。

export 后边必须跟的是申明,不可以是变量。

import 在**{}**内引入指定js文件暴露出的方法,没暴露的无法引用。

export default 后边必须跟一个对象,对象里边是你想暴露的任意代码或变量。

import xxx 不用**{}直接自定义一个变量的用法,是结合export default一起用的,必须有export default**才可以直接自定义一个变量去接受暴露的函数。

总结(有彩蛋)

以上介绍了NodeJs两种模块暴露和导入的方式。

我相信如果跟着我动手的读者会发现,示例2是会报错的,为什么呢?接下来为您解答哈哈。

NodeJs在更新14版本以后,分成了2种模块规范,一种是CJS,一种是ESM

而上述示例代码中,示例ACJS规范的,示例BESM规范的。

NodeJs默认是CJS规范的,如果你想用示例Bexportimpot,需要在package.json中,增加type属性去指定模块规范,直接贴出来吧。

{
"name": "bet",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "commonjs", // commonjs=CJS module=ESM
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "jsjiami.com",
"license": "ISC"
}

如果文章对您有帮助,希望可以点赞关注收藏,谢谢!

有任何问题可以评论在下方,​​或者通过我的网站找到我www.jsjiami.com​

标签:console,log,示例,NodeJs,js,了解,export,模块,test
From: https://blog.51cto.com/u_15785573/5727004

相关文章