读书笔记《七天学会NodeJS》(0) - 模块、包、代码组织和部署

0. node 命令行参数选项

1. 模块导出: exports与module.exports区别;
     module.exports 导出便是将要被导出的对象,exports则可认为是module.exports的引用对象(exports本身仅是一个空对象,此时用来声明接口)(两者均指向对一个对象的变量),
     实际上被导出或者说被require的便是module.exports对象指向的对象,而exports对象会在模块执行结束后被释放,但module不会。
     module.exports也可为导出函数(或构造函数)

2. 模块引入: require路径记载解析规则以及内置模块、node_modules目录模块、相对路径和绝对路径下的自定义模块、NODE_PATH环境变量设置。

3. 包(文件目录)组织和导出
    对于多个模块或较大的代码管理时采用包的形式来管理。
    1. 指定导出包下的模块,由导出模块组织子模块;
    2. index.js替代指定导出模块,以简化require书写格式,路径中可不需包含导出模块名(index模块名可不写,只写对应的包目录路径即可);
    3. package.json文件(一般称之为元数据文件),组织管理包中的模块(可更复杂、完善、规范的包开发),也简化了require书写格式;
    或者结合2和3或1和3均可(main字段的值对应的js文件模块作为包的入口接口模块)。
    
    如果package.json或main字段不存在,会尝试寻找index.js作为包的接口。
    package.json以及index.js可通过在包目录下执行"npm init"命令来产生package.json文件并配置必要的字段。
    
4. 工程目录
    一般结构:
        some_package:
            bin    // 存放相关产生的文件或依赖的文件或包装的可执行文件、cmd/bat/sh等文件
            doc // 存放相关文档
            lib // 一般存放API相关的源码
            node_modules // 一般存放第三方的包
            test // 存放测试用例集
            package.json // 元数据描述文件
            README.md // 说明文件
            config    // 存放配置文件
            其他 // 其他信息或许可证等
            
5. NPM(包管理工具)
    用途:从NPM服务器下载他人编写的三方包或者命令行程序到本地使用、或者上传自己编写的包或命令行程序上传到NPM服务器供他人使用。
    下载第三方包或命令行程序:
        npm install some_package // 此后便会在当前目录下下载指定的包,下载的内容将存放在所在当前目录下的node_modules目录中。
        通过该方式引入的第三方包在使用的时候,在代码中只需要通过require("some_package")即可,无需指定路径(相对或绝对等)。
        npm install some_package@1.0.1 // 此方式还可以下载指定版本的包 
        此外对于依赖多个三方包时,则可在项目的元数据描述文件中的dependencies属性中指定依赖包列表以及对应版本,这样在package.json所在目录下执行npm install即可下载所有的依赖包;
        上传到npm服务器后,他人下载该包时也会自动下载其依赖的其他三方包。
        (以上提到的当前目录一般是说当前命令行所在目录,此外安装命令行程序(即该包的package.json中bin字段有可用的命令行程序),
        则也可以是通过npm install -g xxx方式,全局安装到某个位置;
        可用npm config get prefix查询该位置,全局安装可重复利用、便于管理包;而不带=g选项安装方式称之为本地安装;此外全局安装可能会写入path环境变量,而本地安装不会)
        
    (NPM包管理处理比较友好,而Python包管理比较混乱、容易产生版本冲突,可借助virtualenv来解决包管理问题,以产生独立的环境)
    
    上传自己编写的包或者命令行程序:
        npm adduser // 注册、添加NPM账号; 若添加成功,可通过 npm whoami命令查询是否成功,取得了账号。
        编辑自己的包或命令行程序的package.json文件,指定必要的字段(可通过npm init命令产生该文件);
        (一般为name包名(需NPM服务器下名称唯一)、version版本号、dependencies三方包依赖列表、main入口模块位置、bin命令行程序名和主模块位置);
        在package.json所在目录下运行npm publish发布代码。
    
    NPM其他功能选项,参数,可通过npm help xxx查看对应的资料、文档说明,如npm、help、update、cache、public、install、unpublish等。

 

posted @ 2019-10-10 20:31  浩月星空  阅读(192)  评论(0编辑  收藏  举报