node.js——模块化

node.js的开发是基于模块化的思想,与ES6中新增的模块化有点不同。

对比:

ES6中用import导入模块,import语句只能写在文件最开头,import xx from yy的方式是静态编译,即编译时加载,所以要写在文件的最上头;用export导出模块。

nodejs中用require导入模块,require是nodejs环境中的全局函数,require是动态加载,即运行时加载,可以在任意位置导入模块,nodejs也可以用import导入js文件,因为node.js运行的是js代码,能够识别;用module.exports导出(注意加s)。

node.js中的三种模块

1、系统自带模块

在安装node.js时,自动就下载的模块(内置模块、核心模块),我们直接在文件中引入即可使用。如:fs模块、http模块等

2、第三方模块

需要我们下载才能够使用,下载方式:在所需项目的小黑窗输入npm i 模块名,如mime模块,

npm i mime

3、自定义模块

我们动手敲一敲,在创建一个自定义模块看是否能被引用。

创建一个js文件当作导出模块

module.exports={
    fn(){
        console.log("我是新的模块");
    }
}

在执行文件中导入用一下:

node.js——模块化_第1张图片

 可见成功的使用了fn函数,导入模块成功。

我们还需要了解当导入模块时是在哪里去寻找资源。

首先到当前项目中(即就是当前文件所在的那个目录)的node_modules文件夹中找导入模块名的文件夹中的package.json中main字段对应的路径 然后引入;


如果package.json中没有main字段就去node的安装包中的全局安装路径中找,就是在我们配置环境时建立的那个文件夹;


如果还是没有找到 就去核心库找,就是下载node.js时他自动生成的node_module文件中的npm文件夹下;

如果还是没有找到就会报错。

npm模块

我们在下载第三方模块时用到了一条“npm i 模块名”指令,那么npm是什么?

npm也是一个模块,用于管理所有的模块。

了解一下它在小黑窗的指令:

npm i 模块名称  代表下载模块,其中i可以换成install;

它还可以同时下载多个模块,npm i  模块1 模块2 模块3,模块1 2 3之间用空格隔开;

后缀 -g 如npm i 模块1 -g 将,模块下载到全局安装的路径,适合下载一些全局的插件,不用下到项目文件中;

后缀--save 它的作用是把模块下载到项目当前路径的中的node_modules下;

我们在下载第三方模块后,npm会在会在项目配置文件(package.json)中的依赖项中写入下载的第三方模块的名称和版本,有了这个功能后,我们在将我们自己做的项目传给别人时,不用将模块文件夹也发给别人,只用package.json和package-lock.json这两个文件一起传给别人,别人只需要在项目所在文件位置打开终端输入npm i就可以导入所需的模块。

我们在导入模块时,会自动给我们创建一个package.json文件,我们也可以自己添加一个当前文件目录打开终端输入 npm init -y

在package.json文件中,有一个scripts字段,我们可以在里面配置指令,如:

node.js——模块化_第2张图片

 这个时候我们运行index.js这个文件,可以不用node index.js指令,可以使用:

 npm run dev  这个指令 会去项目的配置文件中找到scripts字段 运行里面的dev指令

最后我们再来了解一下package.json文件里面各项的字段的含义:

package.json

作为整个项目的配置文件,用于记录整个项目的一些信息

常见字段解释:

name: 项目名(包名),规范定义它需要由小写的字母和数字组成,可以包含.、_和-,但是不允许出现空格。

description:你对项目的描述。

version:版本号。

keywords:关键词数组,npm中主要用来做分类搜索。一个好的关键词数组有利于用户快速找到你编写的包。

dependencise :指定当前项目所需要依赖的模块列表。

scripts:脚本说明对象。主要被包管理器用来安装、编译、测试和卸载包

author:作者。

main: main字段配置一个文件名指向模块的入口程序。

devDependencies:指定项目开发所需要的模块。

你可能感兴趣的:(node.js,node.js,前端,javascript)