node.js学习(2)

108 阅读3分钟

模块化:提高复用性,可维护性,可以按需加载

内置模块:node.js官方提供,如fs,path,http

自定义模块:用户创建的.js文件
第三方模块:第三方开发的模块需先下载再使用

加载模块使用require(),加载时会同时执行加载模块的代码

模块作用域:

    自定义模块中的变量方法等,只能在当前模块内被访问
    好处:防止全局变量污染问题

module对象,向外共享成员

    外界使用require导入自定义对象实际上是导入的是 module.exports指向的对象
    示例:
        module.exports.name='aaa'
        module.exports.say=function(){}

        module.exports={
            name:'sss',
            say(){ }
        }

exports对象,共享的简写,与module.exports指向同一对象,最终结果以module.exports为准

        exports.name='aaa'
        exports.say=function(){}
        
*避免混乱,最好不要混用module.exportsexports
CommonJS:node就是遵循CommonJS规范开发的

npm与包

包就是第三方模块 ,基于内置模块封装出来的,提供更高级方便的API,提高开发效率

包共享平台:检索自己想要的包https://www.npmjs.com/
        用npm包管理工具下载包:https://registry.npmjs.org/

npm -v 查看版本号

npm安装包命令

    npm install 包的完整名称  可简写==> npm i 包的完整名称
         npm i 包的完整名称@版本号:安装指定版本号的包
    https://www.npmjs.com/可查api文档

    装包后项目文件夹下会多一个node_modules文件夹和package-lock.json的配置文件

    node_modules:存放所有已安装到项目的包
    package-lock.json:用来记录node_modules目录下每一个包的下载信息(名字\版本号\下载地址)
   

包管理配置文件

    在项目中创建package.json配置文件记录项目中用了哪些包,成员共享时剔除node_modules文件夹(添加到.gitignore忽略文件),共享后通过package.json自行下载用到的包


    快速创建package.json文件,项目名称一定要是英文,没有空格
        npm init -y
        执行后安装包会自动记录到package.json文件

*dependencies节点:开发过程和项目上线都要用到

        用来记录npm i安装了哪些包

        实际工作中拉取公司剔除node_modules的项目,通过npm i命令一次性安装所有dependencies节点记录的包

        卸载包:npm uninstall 会同步修改package.json配置文件的dependencies节点

devDependencies节点:只在开发中用到,项目上线后用不到

        记录方式:npm i 包的完整名称 -D
                全写: npm install 包的完整名称 --save-dev
                

解决下包速度慢:

用淘宝npm镜像服务器切换npm下包镜像源

1 查看当前下包镜像源

npm config get registry 

2 将下包镜像源切换为淘宝镜像源

npm config set registry=https://registry.npm.taobao.org/

3 检查镜像源是否下载成功

npm config get registry     

使用nrm工具

1 全局安装nrm

npm i nrm -g

2 查看所有镜像源

nrm ls

3 将下包镜像源切换为taobao镜像

nrm use taobao

包的分类

1.项目包:安装到node_modules里的包

    1.1开发依赖包    devDependencies节点,只开发用到
    1.2核心依赖包    dependencies节点,开发项目上线都要用

2.全局包:工具性质的包

    npm install 加-g是全局包

3.i5ting_toc:把md文档转化为html页面工具

3.1全局安装

        npm install -g i5ting_toc

3.2调用转换 -o是转换完成后自动在浏览器打开html页面

        i5ting_toc -f 要转换的md文件路径 -o

规范的包结构

捕获.PNG

模块的加载机制:

优先从缓存导入,多次调用require()只会加载一次
内置模块加载优先级最高
自定义模块没有./ ../开头的路径标识符node会把他们当内置模块或第三方模块加载