Nodejs基础
# 简介
Node诞生于2009年,是基于 Google V8 引擎的 JavaScript 运行时环境,具有 I/O、文件读写、操作数据库(服务器端)等能力,具有事件驱动,非阻塞 I/O 模型等特性,主要作用为前端的开发工具与网站后端。Node.js 内置了开源包管理器npm。
# npm (opens new window)
# 安装
- 本地安装
- 将安装包放在 ./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
- 方案1:
- 参数
- --loglevel silent //简化log消息(没有消息是最好的消息)
- -s //简写
- --loglevel verbose //详细log消息
- -d //简写
- --loglevel silent //简化log消息(没有消息是最好的消息)
其他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)
2
3
4
# 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中文文档 (opens new window)
# 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安装位置。
2
3
4
5
6
7
8
# node后端
# cookie&session
cookie和session都是储存数据用的,区别在于
- cookie储存在客户端(不安全)
- 只能存储4K数据
- session储存在服务器(安全)
- 可以存储大量数据,只要服务器容量大
- 基于cookie实现
- 隐患:session劫持
# node后端框架 Express (opens new window)
# 安装应用生成器
npm install express-generator -g
npm install express-generator --save-dev ———— 一般安装在本地项目中,方便在开发机环境使用
2
# 创建应用
express myapp //在当前目录下创建一个名为myapp的工程文件
cd myapp //进入文件夹
npm install //安装所有依赖包
npm start //打开服务
2
3
4
5
# 创建基本服务三步
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)
2
3
4
5
6
7
8
9
10
- 请求req
- req.params.xx //读取url返回:后面的xx参数
- req.path //读取url返回/后面的url
- req.query //读取?后面的参数
- 响应res
- sss