简介

Node诞生于2009年,是基于 Google V8 引擎的 JavaScript 运行时环境,具有 I/O、文件读写、操作数据库(服务器端)等能力,具有事件驱动,非阻塞 I/O 模型等特性,主要作用为前端的开发工具与网站后端。Node.js 内置了开源包管理器npm。


npm

安装

  • 本地安装
    • 将安装包放在 ./node_modules 下(运行npm时所在的目录)
    • 可以通过 require() 来引入本地安装的包
    • npm install xxx 安装xxx模块到当前目录,但不记录到package.json里。
    • npm install --save xxx 安装xxx模块,并且记录到package.json里,字段对应的dependency,是产品环境必须依赖的模块
      • 注意 node6开始--save的默认的,可以不写 npm i XXX
    • npm install xxx --save-dev把你的安装包信息写入package.json文件的dev-Dependencies字段中
      • npm i -d xxx (简写)
    • ./node_modules/.bin/ XXX 执行一个本地目录安装的包命令
      • npx XXX (缩写)
  • 全局安装
    • npm install --global xxx全局安装xxx模块,但不记录到package.json里,如果模块里package.json有bin配置,会自动链接,作为cli命令
    • 全局安装可以直接在命令行里使用
    • npm root -g 查看全局安装目录
    • npm list -g --depth 0 查看全局安装的包
  • npm uninstall 删除包
  • npm install 下载package.json记录的包
  • npm root -g 查看全局包的安装目录

npm 命令

  • npm init 初始化创建一个包
  • npm init -y 初始化创建一个默认的包
  • npm run xxx 启动npm脚本 (package.json的script)
  • 关于速度慢
    • 方案1:
      • npm install -g ppt-cli --registry=https://registry.npm.taobao.org
    • 方案2:nrm 一个快速切换源版本的工具
      • npm install -g nrm
      • nrm ls
      • nrm use taobao
  • 参数
    • --loglevel silent //简化log消息(没有消息是最好的消息
      • -s //简写
    • --loglevel verbose //详细log消息
      • -d //简写

其他npm命令 http://javascript.ruanyifeng.com/nodejs/npm.html

发布npm包

  • npm adduser //添加登录npm用户
  • npm whoami //查看当前登录的用户
  • npm publish

注意:发布前需要查看当前源是否npm,npm包名字是否已经被占用,版本号是否与发布前版本号相同,package.JSON文件中的main字段是包的加载的入口文件默认是index.js

测试npm包

(在准备发布的包根目录下使用)npm link 当前的包发布到全局目录
(在准备发布的包根目录下使用)unnpm link 当前的包在全局目录下删除
(在项目中使用)npm link XXX 用全局目录的包替换掉当前使用的包
(在项目中使用)npm unlink XXX 用回当前本地的包

npm link 只是对目录做了一个软链,只有需要本地测试的时候用到。

系统模块

http模块

创建服务

http.createServer(function(req,res){
	var obj=urlLib.parse(req.url)
	res.end()
}).listen(8080)

fs模块

读写文件

  • fs.readFile('fileName','callback(err,data){}')
    • 读文件
  • fs.writeFile('fileName','content','callback(err,dara){}')
    • 写或创建文件

url模块

解析url 主要解析get数据

  • url.pathname 获取及设置URL的路径(path)部分
  • url.parse(req.url,true)

querystring模块

主要解析post数据

path模块

主要用于处理文件与目录的路径

自定义模块

引入

var mod=quirequi=('mod') 注意:如果不在module_nodes文件下的模块需要加——'./' 如 var mod=quirequi=('./mod')

输出

exports.xxx=?? exports.yyy=??

module.exports={xxx:??,yyy:??}

调试

断点调试:断点调试:node debugger 或node inspector 或vscode package.json中文文档

node版本管理器——nvm

nvm ls	//查看已下载的版本列表
nvm use  <versionNumber> //使用版本
nvm install <versionNumber> //下载
nvm uninstall <versionNumber> //删除
nvm node_mirror <node_mirror_url>:设置节点镜像,可以使用https://npm.taobao.org/mirrors/node/

请注意: 在安装nvm for windows之前,你需要卸载任何现有版本的node.js。并且需要删除现有的nodejs安装目录(例如:"C:\Program Files\nodejs’)。因为,nvm生成的symlink(符号链接/超链接)不会覆盖现有的(甚至是空的)安装目录。
你还需要删除现有的npm安装位置(例如“C:\Users\weiqinl\AppData\Roaming\npm”),以便正确使用nvm安装位置。

node后端

cookie和session都是储存数据用的,区别在于

  • cookie储存在客户端(不安全)
    • 只能存储4K数据
  • session储存在服务器(安全)
    • 可以存储大量数据,只要服务器容量大
    • 基于cookie实现
    • 隐患:session劫持

node后端框架 Express

安装应用生成器

npm install express-generator -g
npm install express-generator --save-dev ———— 一般安装在本地项目中,方便在开发机环境使用

创建应用

express myapp //在当前目录下创建一个名为myapp的工程文件
cd myapp  //进入文件夹
npm install  //安装所有依赖包
npm start   //打开服务

创建基本服务三步

const express=require('express')
//1.创建服务
var server=express()
//2.处理请求 
server.use('/b.html',function(req,res){
    res.send('BBB')
    res.end()
})
//3.监听端口
server.listen(8080)
  • 请求req
    • req.params.xx //读取url返回:后面的xx参数
    • req.path //读取url返回/后面的url
    • req.query //读取?后面的参数
  • 响应res
    • sss