node
dos命令行
1:ipconfig 查看本机的ip信息
2:ipconfig /all 查看本机ip信息
3:cls 清屏
4:exit 退出
5:D: 直接进入指定磁盘目录
6:dir 查看当前位置下的所有目录文件
7:cd 文件夹名字(不要是中文) 进入到指定的文件夹
8:cd ../ 返回上级目录
9:cd ./ 返回当前目录
10:cd / 返回根目录
11:ls -al查看所有文件
12:mkdir 创建一个目录
13:touch 创建文件例如(touch .index.txt)
14:echo 编辑文件内容
写法(echo 编辑的内容 >index.txt)
(echo 编辑的内容 >>index.txt)一个大于是写入 两个大于号是追加内容
15:cat 查看某个文件的内容
16:rm -rf 文件名 删除文件名
17:vi 文件名 调出vim编辑器
i/o/u 任意一个进入插入编辑状态 esc退出编辑状态 shift+: 进入插入编辑 q不保存并退出 q!强制退出 wq保存并退出
webostrom中打开命令行
view->Tool windows ->terminal z 在当前目录下打开命令行
https:安全传输协议
http:传输协议
ftp
域名
port:端口号 一个ip有0-65535个端口号
path:路径
sechme:主机名 port/path?问号传参
qur
npm
node 支持 es6 let const 服务端没有兼容性
node 全局对象global
npm init 当前文件名 不能是 中文 不能是大写 不要有特殊符号
npm install 包名 --save / --save-dev
--save 保存到 package.json 的dependencies 属性里
--save-dev 保存到 package.json 的devDependencies 属性里
当前项目依赖包 安装到哪个文件夹
npm root
···
想要在网页打开你本地的文件,输入這个
npm install http-server -g
使用在当前目录下,打开命令行 输入以下命令即可
http-server (默认是8080端口号 -p )就能在网页看到目录
全局安装
npm install package -g
npm root -g
mime类型
mime.lookup(pathname)检测他的类型
mime类型
html text/html
js application/javascript
css text/css
文档 text/plain
jpg image/jpg
jpeg image/jpeg
png image/png
form application/x-www-form-urlencoded
node
node 一个运行环境,让js可以在服务端运行 浏览器客户端js 是不可以操作本地系统
node 提供了很多操作系统api
异步非阻塞 i/o 读写 输入和输出端口
可以同步也可以异步
自带模块化 common js 规范 require js amd规范 sea.js
运行js
运行js文件 可以打开命令行 node
(文件名)就可以
run
运行js
GET系列和POST系列的区别
> GET系列和POST系列的区别:
> 缓存问题:
> 1:get有缓存问题 解决方案在url?_=随机数/时间戳
> URL末尾追加随机数的方式清除缓存: xhr.open('get','/temp?id=12&_='+Math.random())/时间戳(new Date().getTime())
> 2:post没有缓存问题
> 传输数据大小
> 1:get 需要将发送给后端的数据拼接到url?name=liwenli&id=1 URL的长度是有限制的(谷歌8KB、火狐7KB、IE2KB)如果传递的内容比较的多,URL会很长,超出的部分,浏览器会截取。
> 2:post 通过请求体 xhr.send(JSON.stringify(data))没有大小限制
> 安全问题
> 1:get是通过问号传参传递信息的,很容易被url劫持,导致信息的泄露或者恶意修改等
> 2:post 比较安全
> GET主要应用于给服务器的少,从服务器获取的多,例如:获取服务器上的数据进行展示和数据绑定...
> POST主要应用于给服务器的多,从服务器获取的少,例如:用户注册...
模块
模块分为:内置模块、自定义模块、第三方模块
node自带模块化 commonjs 规范
require() 引入模块
module.exports 导处模块
requirejs amd 规范 sea.js
内置模块: 搭建server的内置模块 例如:http fs url 。。
自定义模块:我们自己创建的模块,引入的时候需要引进正确的路径
第三方模块:我们用npm下载的文件引入进去 例如:require('vue') 引入node_moudele 里面的vue
引入导出模块
require() // 引入模块
module.exports // 导出模块 (先把文件引入进来,在引入文件里面的模块)
requirejs amd 规范 sea.js
fs.exists() 根据路径判断文件是否存在
批量导出
a:
> module.exports.sum=sum--导出模块,
> 批量导出 module.exports={ sum:sum ,age:age}
> exports.name=sum exports无法进行批量设置,因为他们不在module一个空间地址里面
> exports 不能批量导出
b:let obj= requiret('./a.js'); 引入這个模块
同步异步读取文件
异步的有回掉函数 readFile 没有返回值
同步是返回值 var result=fs.readFileSyn('.index/html')
readFileSync 同步读取文件
readFile 异步读取文件
@param1:err错误信息,如果读取成功就是null
@param2:result 结果
let resHTML=fs.readFile('./index.html','utf-8',function(err,result){
if(erro){
有错误信息,输入错误信息
console.log(erro)
}else{
没有错误信息就输出null,输出结果
console.log(result)
}
})
同步判断
异步判断是一个回调函数
fs.exists('./index5.html', function (result) {
console.log(result);
});
fs.exists() 根据路径判断文件是否存在
异步判断
同步判断 有返回值 flag
let flag=fs.existsSync('.'+pathname);检测文件是否存在,存在的话返回true
fs.existsSync('./index5.html');
写入weiteFile 异步写入
@param1: 文件路径
@param2:写入的内容
@param3:options
{
encoding:'utf8'最后一个参数是這个
flag:'w'默认参数w写入,并将原有覆盖 a 追加
}
async callBack 异步是回掉函数
写入内容到data.txt
fs.writeFile('./data.txt','hello nodejs',{flag:'a'}function(erro){
console.log(erro) 如果输出的是null 说明写入成功 如果输出错误,那就有问题
})
weiteFileSync同步写入
let resData=fs.readFileSync('./data2.text')
fs.weiteFileSync('data.txt',resData)
把data2的内容写投入到'data.txt'里面
写入的内容(JSON.steingify(obj)) 是字符串格式/buffer格式
表单
action 提交到哪里接口
method get 或者post请求
表单内元素 需要设置name属性
onsumit="return false" 阻止表单默认提交行为
post端口请求
检验是哪个请求 mothod
let str = '';
// 接收请求体内容
req.on('data',
function (data)
{
str += data;
}
);
// 接收完毕后 触发
req.on('end',
function ()
{
res.end(str);
得到字符串格式
letobj=JSON.parse(str)
json格式的字符转化为json格式的对象
}
);
get接口请求
res.setHeader('Content-Type','text/html;charset:utf-8');
res.end(JSON.stringify(query)) 参数在页面返回json字符串
项目跑起来
首先你要在项目目录下npm install gulp -g
然后再npm install
最后npm run start/npm start,端口监听成功
jsonp
跨域
> 协议 域名 端口 三者一致
> 同源策略限制 XMLHttpRequers请求
> img script 不存在跨域
> 利用script标签不存在跨域,我们给src属性url地址,只要能找到就会将js引入进来
我们把请求的url地址设为script标签src属性,并且和后台定义一个字段,将我们全局中的函数名传给后台cb=callBack
> jsnp跨域只支持get请求
> jsonp:'cb';cb=callBack
> jsonpCallback:'',//制定jsonp回掉函数的名称 value名字
> 重写jsonp url请求种,回掉函数名
> 后台默认是一个函数callback
跨域解决常用
> jsonp 利用script 的src
> cors 跨域