title: NodeJS 札记 date: 2018-12-01 16:28:22 categories:
node -v 打印版本号即成功。node js文件名 运行js文件。settings->Lnaguages & Frameworks->Node.js and NPM中勾选Coding assistance for Node.js,来打开 Node.js 的核心代码提示。在 Node.js 中,默认情况下每一个 js 文件中的 js 代码都是独立运行在一个函数中。
实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递进了5个实参
var load = function (exports, require, module, __filename, __dirname) {
//js文件内容
...
// 参数解释
exports
- 该对象用来将变量或函数暴露到外部
require
- 函数,用来引入外部的模块
module
- module 代表的是当前模块本身
- exports 就是 module 的属性
- 既可以使用 exports 导出,也可以使用 module.exports 导出
__filename
- 当前模块的完整路径
__dirname
- 当前模块所在文件夹的完整路径
}
导出变量和函数
- 通过exports只能使用.的方式来向外暴露内部变量或函数
exports.xxx = xxx
- 通过module.exports既可以使用.的形式,也可以直接赋值
module.exports.xxx = xxx
module.exports = {xxx:xxx,xxx:xxx,...}
console.log(arguments.callee + ""); //这个属性保存的是当前执行的函数对象
console.log(arguments.length); //5
在 Node.js 中有一个全局对象 global,它的作用和网页中 window 类似。
在全局中创建的函数都会作为global的方法保存
var a = 10;
b = 20;
console.log(global.a); //undefined
console.log(global.b); //20
对于核心模块(npm 中下载的模块或者 Node.js 引擎提供的模块),直接使用模块的名字对其进行引入。
var fs = require("fs");
var express = require("express");
对于文件模块(用户自己创建的模块),使用文件的路径来对其进行引入,如果是相对路径必须以./或 ../开头。
var router = require("./router");
包结构:用于组织包中的各种文件
包实际上就是一个压缩文件,解压以后还原为目录。符合规范的目录,应该包含如下文件:
– package.json 包的描述文件,必须的
– bin 二进制可执行文件,一般都是一些工具包中才有
– lib js文件
– doc 文档
– test 测试代码
包描述文件:描述包的相关信息,类似于简历,以供外部读取分析
它是一个json格式的文件,在它里面保存了包各种相关的信息,里面不能写注释
- name 包名
- version 版本
- dependencies 依赖
- devDependencies 开发依赖
- main 包的主文件
- maintainers 主要贡献者
- keywords 关键字,方便搜索该包
NPM 常用命令
npm //帮助说明
npm -v //查看npm的版本
npm version //查看所有模块的版本
npm config list //查看npm配置信息
npm s/search 包名 //搜索模块包,需联网
-------------------------------------
npm init //初始化项目(创建package.json),安装包时根据 package.json 是否存在来识别当前目录是一个包,不然可能会安装到其他地方
npm i/install //安装当前项目所依赖的包
npm i/install 包名 //在当前目录安装指定的包
npm i/install 包名 --save //在当前目录安装指定的包并在package.json中添加依赖
npm i/install 包名 --save-dev //在当前目录安装指定的包并在package.json中添加开发依赖
npm i/install 包名 -g //全局模式安装指定的包(一般都是一些工具),可以供命令行使用
npm i/install 包名 -registry=地址 //从镜像源安装
npm i/install 文件路径 //从本地安装
npm r/remove 包名 //删除一个模块包
npm r/remove 包名 --save //删除一个模块包,并在package.json中移除依赖关系
npm r/remove 包名 --save-dev //删除一个模块包,并在package.json中移除开发依赖关系
npm r/remove 包名 -g //删除一个全局模式安装的模块包
npm update 包名 //更新指定的已安装模块包的版本
npm update 包名 -g //更新指定的全局安装模块包的版本
-------------------------------------
npm config get prefix //查看默认的全局安装路径
npm config get cache //查看默认的全局安装缓存路径
npm config set prefix "E:\Ebook\JavaSE\develop\nodejs\node_global" //设置默认的全局安装路径,需重新修改环境变量
npm config set cache "E:\Ebook\JavaSE\develop\nodejs\node_cache" //设置默认的全局安装缓存路径
npm ls/list -g --depth 0 //查看全局安装过的包
通过 NPM 下载的包都放到 node_modules 文件夹中,直接通过包名引入即可(全局模式安装的需要配置NODE_PATH环境变量)。
Node.js 在使用模块名字来引入模块时,它会首先在当前目录的 node_modules 中寻找是否含有该模块
如果有则直接使用,如果没有则去上一级目录的 node_modules 中寻找;
如果有则直接使用,如果没有则再去上一级目录寻找,直到找到为止;
直到找到磁盘的根目录,如果依然没有,则报错.
CNPM :淘宝 NPM 镜像
这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
使用说明
- 你可以使用我们定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
- 或者你直接通过添加 npm 参数 alias 一个新命令:
$ alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"
# Or alias it in .bashrc or .zshrc
$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc