本文参考节点官网文档版本为v11.12.0。
本文主要分析了Nodejs中需要导入JSON和js文件时得到的结果,同时简单涉及到了Nodejs中模块导出module.exports和出口的用法。
在阅读webpack源码的过程当中,见到如下一行代码:
const version=要求(“. ./package.json”) .version
故引申出对Nodejs中需要的学习。
在node . js的文档中,需要的相关文档是在模块目录下,属于Nodejs模块化系统的一部分。
需要是一个函数。通过typeof或者Object.prototype.toString.call()可以验证这个结论:
console.log(需要)//输出:函数 console.log (Object.prototype.toString.call(需要)//输出:(目标函数)
通过直接打印要求,可以发现在要求函数下还挂载着若干个静态属性,这些静态属性也可以在Nodejs的官方文档中直接找到相关的说明:
{(功能:要求) 解决:{[功能:解决]路径:[功能:路径]}, 主要: 模块{ id:“。” 出口:{}, 父:空, 文件名:'/用户/bjhl/文件/webpackSource/index.js ', 加载:假的, 孩子们:[], 道路: ['/用户/bjhl/文件/webpackSource/node_modules ', “/用户/bjhl/文档/node_modules”, ‘/用户/bjhl/node_modules’, ‘/用户/node_modules’, '/node_modules ']}, 扩展: (对象:零原型){”。js:[功能]。json:[功能]。节点:[功能]}, 缓存: (对象:零原型){ '/用户/bjhl/文件/webpackSource/index.js”: 模块{ id:“。” 出口:{}, 父:空, 文件名:'/用户/bjhl/文件/webpackSource/index.js ', 加载:假的, 孩子们:[], 道路:(数组)}}} >之前<强>要求函数静态属性
强>这里之后再详细补充。
在官网文档中可以看到如下关于需要的说明:
要求(id) #,添加:v0.1.13 id模块名称或path 返回:导出模块content 用于导入模块、JSON和本地文件。模块可以从node_modules进口。本地模块和JSON文件可以导入使用相对路径(例如,/?foo,。/酒吧/baz, . ./foo),将对解决__dirname命名的目录(如果定义)或当前工作目录。
引用>
同时还给出了三种需要的使用方法:
//导入本地模块: const myLocalModule=要求('/道路/myLocalModule。');//导入一个JSON文件: const jsonData=https://www.yisu.com/zixun/require('/道路/filename.json。');//导入一个模块从node_modules或节点。js内置模块: const加密=要求(“加密”); >之前从以上文档中可以得出以下信息:
<李>需要接受一个参数,形参名为id、类型是字符串。李> <李>要求函数返回的是模块到处的内容,类型是任意。李> <李>要求函数可以导入模块,JSON文件,本地文件。模块可以通过一个相对路径从node_modules,本地模块,JSON文件中导出,该路径将针对__dirname变量(如果已定义)或者当前工作目录。李>
在这里将分类讨论需要的实践结论。
<强>需要导入JSON 强>
JSON是一种语法,用来序列化对象、数组,数值,字符串、布尔值和null。
在文章的开头就提到了通过要求(“。/package.json”)文件来读取package.json文件中属的版本性。这里将尝试导入info.json文件并查看相关信息。
文件结构目录如下:
. ├──index.js └──info.json将info.json文件的内容修改为:
{ “名称”:“myInfo”, “hasFriend”:没错, “工资”:空, “版本”:“v1.0.0”, "作者":{ “昵称”:“凯蒂猫”, “年龄”:20, “朋友”:( { “昵称”:“雪”, “年龄”:999 } ] } } >之前在info.json当中,包含了字符串、布尔值、空,数字,对象和数组。
将索引。js的内容修改如下并在当前终端运行命令节点索引。js,得到如下结果:
const信息=要求(“。/info.json”) console.log (Object.prototype.toString.call(信息))//(对象对象)//v1.0.0 console.log (info.version) console.log (info.hasFriend)//真实的 console.log (info.salary)//null console.log (info.author.nickname)//Hello Kitty console.log (info.author.friends)//[{绰号:“雪”,年龄:999}]Nodejs中的要求函数的具体使用方法