package
初始化
npm init -y
如果没有在初始命令行状态
ctrl+c 回到初始命令行
{
//项目名称,插件名称,上传到npmjs.com中允许别人查找使用
"name": "0110",
//1.2.3 1是大版本 2是中型版本(小版本) 3是小型版本(微版本)
//1.大版本 重新重构了项目,大的框架发生改变
//2.中型版本 需要给项目当中来添加一些新的功能
//3.小型版本 修补项目中bug和漏洞
"version": "1.0.0",
//执行node项目的入口文件
"main": "index.js",
"scripts": { //脚本,执行对应的node命令
"test": "echo \"Error: no test specified\" && exit 1",
//脚本执行方式有两种,
//一种start install这样的脚本直接通过 npm start
"start": "node main.js",
//另一种是其他任何字符,执行时 npm run 字符
"abc": "node main.js"
},
"keywords": [], //关键词 在npmjs官网上搜索关键词可以被查找使用
"author": "",//作者
"license": "ISC",//版权
"description": "",//描述 做的插件可以被别人快速找到并且查看它的信息
"dependencies": { //项目依赖 项目当中用到的插件
"lodash": "^4.17.21"
},
"devDependencies":{ //开发依赖 打包、测试
"gulp":"^4.0.2"
}
}
安装
npm install 包名 原命令
npm i 包名 简写命令
npm i包名 安装这个插件的最新版本
npm i包名@3 安装这个插件的版本为3这个大版本的最高版本
npm i包名@3.1安装这个插件的版本为3.1这个版本的最高版本
npm i包名@3.1.20 安装这个插件的版本为3.1.20这个版本
3.1.1-3.1.24 3.2.1-3.2.20 4.0.0-4.1.2
因为node本身就有版本不兼容性,所以有很多的包也有不兼容性
npm i 包名 -g 全局安装
需要下载一些命令插件,就需要全局安装
全局命令安装在node的目录下面
使用nvm -g安装的就是在当前对应的node版本中的文件中
一旦切换node版本,就需要重新安装全局的命令
anywhere
服务器插件 类似于live Server 可以修改当前服务的端口号
npm i anywhere -g
anywhere 执行
anywhere 端口号 执行
nodemon
node服务自动重启插件
npm i nodemon -g
nodemon node 入口文件
nrm
切换npm库的镜像地址
npm i nrm -g
nrm ls 显示当前所有镜像地址
nrm use 镜像地址名 切换镜像地址
nrm test 镜像地址名 测试指定的镜像地址
npm i 包名 -S npm i 包名 npm i 包名 ---save 项目依赖下载
三种一样
npm i lodash -S
npm i lodash
npm i lodash --save
安装后会在package.json中的
"dependencies":{
}
"jQuery":"^3.1.0" 锁定大版本 major
"jQuery":"~3.1.0" 锁定大版本和小版本minor
"jQuery":"3.1.0" 锁定所有版本
"jQuery":"*" 最新版本
如果更新时,会根据这个列表内容来更新,比如锁定大版本时,会更新当前指定的大版本中最高版本
npm i 包名 -D npm i 包名 ---save-dev 开发依赖下载 打包、压缩、测试
gulp
打包工具
npm i gulp -D
npm i gulp --save-dev
webpack
打包工具
npm i webpack@4 -D
npm i webpack@4 --save-dev
更新安装
npm update
npm i
安装和更新 package.json 中的所有dependencies和devDependencies里面的插件
"dependencies": {
"lodash": "^4.17.21"
},
"devDependencies": {
"gulp": "^4.0.2"
}
卸载
npm uninstall 包名
清除
因为安装过程中出现断网,错误等情况造成无法重新安装,安装时报错4048,用来清除缓存安装的包
错误码是-4048需要清除
npm cache verify
npm cache clean --force
npm 包管理 下载,上传、更新插件(全局命令插件、项目依赖的插件、开发依赖的插件...)
package.json
node
node运行
创建一个js文件,在js中可以写入任何js内容,但是不能写DOM、BOM、事件
在命令行中 NODE ./路径/文件名
例如在 js文件夹下有一个main.js
node ./js/main.js
或者node ./js/main
开始创建服务器后端
var http=require("http")
加载http模块 http是一种协议,node将这总创建http服务的方式封装在一个插件中,因为是node自带的所以我们叫它http模块
var http =require("http");与ES6中 import http from "http" 相同
因为node在不同版本中支持ES6不同,操作也不同,关于node如果操作ES6的模块化暂时没有
require 用于ES5的node模块化开发 这种方式commonJS
在a.js中使用
module.exports={a:1,b:2}
在main.js中 不需要带扩展名 必须路径以./开始
var obj=require("./a")
如果一个Js中需要导出多个内容
在 a.js中使用
module.exports={a:1,b:2};
在main.js中 不需要带扩展名 必须路径以./开始
var obj=require("./a")
如果一个js中需要导出多个内容
在b.js中使用
exports.obj={a:1,b:2};
exports.abc=function(){
console.log("aaa");
}
在main.js中
var {obj:obj1,abc}=require("./b);
这里的:是指起别名
创建服务
创建一个http的服务,并且返回该服务对象
var server=http.createServer(function(req,res){
})
server.listen(4001);
server.listen(端口号,IP地址,当开启服务执行函数);
server.listen(4001,"10.9.25.101",function(){
console.log("服务开启")
});
开启服务,并且侦听这个服务的端口号是4001
req 请求 客户端向服务器发送的请求数据存在这个对象中
res 响应 服务器响应客户端发送信息在这个对象中
res.write("abc"); 给响应信息中写入内容
res.end(); 响应信息写入完毕发送给客户端
SSR Server Side Render
CSR Client Side Redner
设置响应头
res.writeHead(状态码,响应头对象);
响应头对象
Content-Type 内容类型 MIME类型
text/html 文本和html内容 返回的内容就会转换为html
application/json json格式
image/jpg jpg格式
;charset=utf-8 设置返回的内容为utf-8编码转换
{
"Content-Type":"text/html;charset=utf-8"
}
ajax
创建ajax
var xhr=new XMLHttpRequest();
侦听ajax加载服务器发回的数据完成
xhr.addEventListener("load",loadHandler);
打开服务通信 使用get方式通信,url地址+?发送的数据 key1=value1&key2=value2
xhr.open("GET","http://localhost:4003?"+str);
发送数据
xhr.send();
function loadHandler(e){
console.log(xhr.response)
}
GET
GET 在通信时,一般只做了一次通信
通过url后面的search ?后面来携带发送给服务端的数据
这种发送时,提交数据是明文,而且不能携带过多数据
如果在同域情况下cookie也是可以携带数据,跨域情况cookie不能携带数据
当使用GET发送请求,目的本来就是获取,其实主要并不是发送数据给服务端,目的还是获取数据,
只不过在这里通过url访问时携带了一些明文的数据
如果这次请求的地址与上次请求的地址相同时,这种情况会开启访问缓存
POST
当发送数据时,通过send将数据发送给服务端 可以发送字符串,但是不能直接发送数组和对象
POST 一般会发起两次请求 地址请求,数据发送请求
POST提交数据是不会缓存
一般可以发送大量的数据
var xhr=new XMLHttpRequest();
xhr.addEventListener("load",loadHandler);
xhr.open("POST","http://localhost:4004");
xhr.send(str);
function loadHandler(e){
console.log(xhr.response)
}