前言

在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