NodeJs学习笔记(六):模块化+搭建依赖+案例

mac2022-06-30  31

一、模块相互引用

export.xxx:暴露接口var foo=require("./xx.js"):接收一个文件,这个foo为顶层变量,可以直接foo.xxx获取。module.export=fn:fn为构造函数,也就是一个类。

注意:require()一个文件时,会直接执行这个文件。

二、node_modules依赖包

我们在require一个js文件时,都必须使用相对路径,否则会报错找不到文件,但是存在node_modules文件夹中的文件,不需要使用相对路径,只需要require文件名就可以了。node_modules文件夹可以随意放置在所用文件夹的上层(但不可放在上层文件夹的别的子层文件夹),node都会自动搜寻。package.json文件: 当我们require("foo")时,没有相对路径,也没有文件后缀,代表引用的是node_modules中的foo文件夹中的入口文件=>index.js,如要改变入口名称,则可以在package.json文件中加上:"main":"app.js"即可,

注意:package.json文件路径要放对,如下图,要访问bar中的入口文件,则将package.json放在bar文件夹中

三、npm

https://www.npmjs.com/ 你可以在这个网站找到各种各样开源的轮子,同时,下载也非常方便,只需要在你的项目里npm install xxxx --save即可;

在nodejs项目中,npm了别人的轮子,就相当于引入了一个依赖,这个依赖会被存在node_modules文件夹中;

使用npm init可以生成一个package.json文件,根据提示输入一些内容后,会检索node_modules里面的依赖包,并将信息涵盖在package.json中dependencies中出现

让我们来试着下载一个关于color的轮子

首先装上package.json文件

再安装color依赖包 可以看到node_modules多了很多依赖包文件 同时package.json文件中,dependencies多了依赖包的版本号,^代表不管以后更新到哪个版本,都是用3开头的版本号,即我可以使用3.2.3的,但不能使用4.1.2的。 同时还多了一个package-lock.json文件,应该是和下载这个依赖有关。

根据上面这些内容,对vue的理解更加深入了。

又有一个问题: require可以不设置路径,但是require的文件中,如果有别的需要读取文件的地方呢? 例如:我在a.js中引入b.js文件var b = require("b.js"),但是b.js中fs.readFile("./test/c.js"), 在这种情况下,a.js是检索不到c.js的,因为这里的地址找不到,故可以使用绝对路径,即fs.readFile(_dirname+"./test/c.js"),_dirname表示该文件本身自己的路径,这样就可以访问到c.js了。

最新回复(0)