Node.js 开发IDE webstorm 下载

WebStorm,适用于专业JavaScript和前端Web开发人员的集成开发环境。

安装与使用方法压缩包里有,仅供个人学习使用,支持正版,请勿用于商业用途。

[Download the WebStorm 2020.1.2 and Crack >>]

提取码: xrwx
解压密码:www.tangkin.com

=======================
Node.js 相关其它资源
相关资源
Node.js官网:https://nodejs.org/zh-cn/
版本管理工具nvm:https://github.com/nvm-sh/nvm
包管理工具npm:https://www.npmjs.com/
npm中文文档:https://www.npmjs.cn/
国内的 npm 镜像源:http://cnpmjs.org/
中文社区:https://cnodejs.org/

nodejs 基础命令及库的安装

检查node版本

node -v

检查npm版本

npm -v

更新npm

npm install npm -g

全局安装cnpm并且使其使用淘宝镜像

npm install cnpm -g --registry=https://registry.npm.taobao.org

全局与局部

由于npm安装分为本地安装与全局安装,本地安装就是你当前的dos执行目录下进行安装,一般配置环境变量后都会安装在user目录之下的node_modules文件夹之下,所以除了安装在项目下可以用本地安装外,在其它路径之下都推荐使用全局安装,安装到电脑的指定路径方便统一进行管理与查看,所以要先进行配置。

npm install xxx 本地安装
npm install xxx -g 全局安装

更改node的下载目录,自定义node_global、node_modules
npm root -g 查看包存放路径
1、在node安装目录下下新建两个文件夹
node_global 全局包下载存放
node_cache node缓存

npm config set prefix "d:\program file\nodejs\node_global"
npm config set cache "d:\program file\nodejs\node_cache"

注:修改了默认的保存路径,系统path查找路径记得也要改一下。不然运行程序全局包会显示找不到:
path 新增 D:Program Filesnodejsnode_global
系统变量 新增 NODE_PATH D:Program Filesnodejsnode_globalnode_modules

可在user目录下找到 .npmrc 文件进入后进行更改,在其中指定盘符绝对路径

npm 的使用

npm
npm 是世界上最大的软件注册中心,随同NodeJS一起安装,来自全球各地的开源开发人员使用 npm 来共享和复用软件包。npm 由三个独立的部分组成:

网站: https://npmjs.com 是开发者查找包(package)、设置参数以及管理 npm 使用体验的主要途径。
注册表(registry):是一个巨大的数据库,保存了每个包(package)的信息。
命令行工具 (CLI):通过命令行或终端运行。开发者通过 CLI 与 npm 打交道。

# 查看 npm 版本
npm -v
# 更新npm版本
npm install npm@latest -g
# 搜索模块
npm search hexo
# 安装依赖包
npm install <Module Name>
npm install hexo      # 本地安装 hexo
npm install hexo -g   # 全局安装 hexo
# 查看所有全局安装的模块
npm list -g
# 查看某个模块
npm list hexo
# 卸载模块
npm uninstall hexo
# 卸载后,查看包是否还存在
npm ls
# 更新某个模块
npm update hexo
# 创建模块
npm init

每个版本的 Node 都自带一个不同版本的 npm,可以用 npm -v 来查看 npm 的版本。全局安装的 npm 包并不会在不同的 Node 环境中共享,因为这会引起兼容问题。它们被放在了不同版本的目录下,例如 ~/.nvm/versions/node/${version}/lib/node_modules 这样的目录。

运行下面这个命令,可以从特定版本导入之前安装过的 npm 包到我们将要安装的新版本 Node 中:

nvm install v12.16.1 --reinstall-packages-from=v10.15.3

Node.js常用模块

更多模块详细介绍,
可查阅官方文档: https://nodejs.org/api/
https://zhuanlan.zhihu.com/p/104297958

Global模块

浏览器JavaScript当中window是全局对象,NodeJS中全局对象是global,global最根本的作用是作为全局变量的宿主(即所有的全局变量都是global对象的属性),因此在所有模块中都可以直接使用而无需包含。

Process模块

process是全局变量(即global对象的属性),用于描述当前NodeJS进程状态。

Console模块

console用于提供控制台标准输出。

console.log():向标准输出流打印字符并以换行符结束(如果只有1个参数,则输出该参数的字符串形式;如果有2个参数,则以类似于C语言printf()的格式化输出)。

console.error():与console.log()的用法相同,只是向标准错误流进行输出。

console.trace():向标准错误流输出当前的调用栈:

$ node app.js
Trace

at Object.<anonymous> (/workspace/app.js:1:71)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
at Function.Module.runMain (module.js:684:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3

Util模块

util提供常用函数集合,用于弥补核心JavaScript功能方面的不足。

Events模块

events是NodeJS最重要的模块,因为NodeJS本身就是基于事件式的架构,该模块提供了唯一接口,所以堪称NodeJS事件编程的基石。events模块不仅用于与下层的事件循环交互,还几乎被所有的模块所依赖。

events模块只提供1个events.EventEmitter对象,EventEmitter对象封装了事件发射和事件监听器。每个EventEmitter事件由1个事件名和若干参数组成,事件名是1个字符串。EventEmitter对每个事件支持若干监听器,事件发射时,注册至该事件的监听器依次被调用,事件参数将作为回调函数参数传递。

下面例子中,emitter为事件targetEvent注册2个事件监听器,然后发射targetEvent事件,结果2个事件监听器的回调函数被依次先后调用。

var events = require("events");

var emitter = new events.EventEmitter();

emitter.on("targetEvent", function(arg1, arg2) {
console.log("listener1", arg1, arg2);
});

emitter.on("targetEvent", function(arg1, arg2) {
console.log("listener2", arg1, arg2);
});

emitter.emit("targetEvent", "Hank", 2018);
$ node app.js
listener1 Hank 2018
listener2 Hank 2018
EventEmitter常用API
EventEmitter.on(event, listener):为指定事件注册监听器,接受1个字符串事件名event和1个回调函数listener。
EventEmitter.emit(event,[arg1],[arg2],[...]):发射event事件,传递若干可选参数到事件监听器的参数列表。
EventEmitter.once(event, listener):为指定事件注册1个单次监听器,即该监听器最多只会触发一次,触发后立刻解除。
EventEmitter.removeListener(event, listener):移除指定事件的某个监听器,listener必须是该事件已经注册过的监听器。
EventEmitter.removeAllListeners([event]):移除所有事件的所有监听器,如果指定event,则移除指定事件的所有监听器。
File System模块
fs模块封装了文件操作,提供了文件读取、写入、更名、删除、遍历、链接等POSIX文件系统操作,该模块中所有操作都提供了异步和同步2个版本。

fs.readFile(filename,[encoding],[callback(err,data)])用于读取文件,第1个参数filename表示要读取的文件名。第2个参数encoding表示文件的字符编码,第3个参数callback是回调函数,用于接收文件内容。

回调函数提供err和data两个参数,err表示有无错误发生,data是文件内容。如果指定encoding,data将是1个解析后的字符串,否则data将会是以Buffer`形式表示的二进制数据。

fs.readFileSync()
NodeJS提供的fs.readFileSync()函数是readFile()的同步版本,两者接受的参数相同,读取到的文件内容会以函数返回值形式返回。如果有错误发生fs将会抛出异常,需要使用try...catch捕捉并处理异常。

与同步I/O函数不同,NodeJS中异步函数大多没有返回值。
fs.open()
fs.open(path,flags,[mode],[callback(err,fd)])封装了POSIX的open()函数,与C语言标准库中fopen()函数类似。该函数接受2个必选参数,第1个参数path为文件路径,第2个参数flags代表文件打开模式,第3个参数mode用于创建文件时给文件指定权限(默认0666),第4个参数是回调函数,函数中需要传递文件描述符fd。

fs.read()
fs.read(fd,buffer,offset,length,position,[callback(err,bytesRead,buffer)])封装了POSIX的read函数,相比fs.readFile()提供了更底层的接口。

fs.read()的功能是从指定的文件描述符fd中读取数据并写入buffer指向的缓冲区对象。offset是buffer的写入偏移量。length是要从文件中读取的字节数。position是文件读取的起始位置,如果position的值为null,则会从当前文件指针的位置读取。回调函数传递bytesRead和buffer,分别表示读取的字节数和缓冲区对象。

Http模块

NodeJS标准库提供的http模块封装了一个高效的HTTP服务器http.Server和一个简易的HTTP客户端http.request。
http模块中的HTTP服务器对象,核心由NodeJS底层依靠C++实现,接口使用JavaScript封装,兼顾了高性能与简易性。

创建Node.js应用

使用Node创建http服务器
使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,实例如下:

var http = require("http");
使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定 8888 端口。 函数通过 request, response 参数来接收和响应数据。在你项目的根目录下创建一个叫 server.js 的文件,并写入以下代码:

const http = require('http');
const hostname = '127.0.0.1';
const port = 8080;

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});

// 终端打印如下信息
server.listen(port, hostname, () => {
console.log(Server running at http://${hostname}:${port}/);
});
以上代码我们完成了一个可以工作的 HTTP 服务器。使用 node 命令执行以上的代码:

node server.js
Server running at http://127.0.0.1:8080/
打开浏览器访问 http://127.0.0.1:8080/,会看到一个写着 "Hello World"的网页。

web框架express简单使用

express官网:http://www.expressjs.com.cn/

express 是 Node应用最广泛的快速、开放、极简主义 web 框架,现在是 4.x 版本。官方提供了应用程序生成器工具 express-generator 可以快速创建应用程序骨架。

安装:
npm install express --save
npm install express-generator -g
创建名称为 ExpressDemo 的 Express 应用。此应用将在当前目录下的 ExpressDemo 目录中创建,并且设置为使用 Pug 模板引擎:

express --view=pug ExpressDemo

create : ExpressDemo/
create : ExpressDemo/public/
create : ExpressDemo/public/javascripts/
create : ExpressDemo/public/images/
create : ExpressDemo/public/stylesheets/
create : ExpressDemo/public/stylesheets/style.css
create : ExpressDemo/routes/
create : ExpressDemo/routes/index.js
create : ExpressDemo/routes/users.js
create : ExpressDemo/views/
create : ExpressDemo/views/error.pug
create : ExpressDemo/views/index.pug
create : ExpressDemo/views/layout.pug
create : ExpressDemo/app.js
create : ExpressDemo/package.json
create : ExpressDemo/bin/
create : ExpressDemo/bin/www

change directory:

 $ cd ExpressDemo

install dependencies:

 $ npm install

run the app:

 $ DEBUG=expressdemo:* npm start

按提示安装依赖并启动。

cd ExpressDemo
npm install
DEBUG=expressdemo:* npm start # MacOS
在浏览器中打开 http://localhost:3000/ 就可以看到这个应用了。

通过生成器创建的应用一般都有如下目录结构:

tree -I "node_modules"
.
├── app.js
├── bin
│ └── www
├── package-lock.json
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── users.js
└── views

├── error.pug
├── index.pug
└── layout.pug

7 directories, 10 files

总结console 的几种用法:https://www.jianshu.com/p/152d051de869

1、console.log 用于输出普通信息
2、console.info 用于输出提示性信息
3、console.error用于输出错误信息
4、console.warn用于输出警示信息
5、console.debug用于输出调试信息
6、console.table 用于jason表格输出
7、console.assert() 当检测到传入的表达式为false的情况下才输出  firebuglite中不支持,Chrome和FireBug支持
8、console.count() 显示当前语句执行次数,自动在提示信息后补全 :和一个空格
9、console.time & console.timeEnd