信息获取来源Eno Yao
介绍
Nodejs是一个基于Chrome V8
引擎的JavaScript运行的
Chrome浏览器 = NodeJS(控制台,JS) + 界面(HTML,CSS)
Nodejs就是想做一件事情,把浏览器的JS引擎拿出来,放到任何设备上来运行JS文件
前端font end(浏览器端)
要运行JS,要有HTML文件,也要有浏览器环境
浏览器=界面+控制台
JS是必须运行在浏览器上,所以只能控制浏览器
后端back end(服务器端)
要运行JS,既不需要HTML文件,也不需要浏览器环境,只需要Node环境
JS有了node环境,可以运行在非浏览器环境下,node是装在系统上,JS可以操作系统,安装在其他设备上,就可以操作对应设备
安装
如果没有安装的node环境去node官网安装维护版本
查看版本号,在cmd中执行,
node -v
运行
如何使用node,以前是打好一份JS,需要配合HTML文件执行,现在只需要在电脑安装好node环境,用以下方式启动
1.写一份JS代码
2.在命令行定位到此代码的位置,运行命令node JS文件名.js
或者node xxx(省略后缀)
一般来说,运行nodejs node JS文件的名字.js ,但是有些情况,例如gulp xxx
,详情查看Sass&Gulp博文
模块化
- 自定义模块 (自己写的JS)
- 内置模块(下方进行描述)
- 第三方模块 (jquery)
前端用得比较多的是前二个方案,后端用得比较多后二个方案
1.顺序问题,分开每一个JS去使用
<script src="./lib/jquery.js"></script>
<script src="./lib/katsuki.js"></script>
它会全局污染,就比如jquery如果引入两次,那最后一次会覆盖前面的那一份,原因是因为jquery是把$挂载到全局的window上面
2.requirejs,详情查看module博文
3.ES5
导出 module.exports(define)
导入 require
/* 项目结构
run.js
js
katsuki.js
*/
katsuki.js
function plus(num1,num2){
return num1+num2;
}
// 导出
module.exports = {
plus: plus,
mult: function (num1, num2) {
return num1 * num2
}
}
run.js
var katsuki = require("./js/katsuki.js");
console.log(katsuki.plus(10,8));
console.log(katsuki.mult(10,8));
在run.js目录下运行cmd命令
node run
18
80
4.ES6
导出 export
导入 import
内置模块
各内置模块用法,请查看官网内置模块API
不需要自己写,node环境自带,可以直接引入
node引擎如果放在浏览器里面启动(DOM和BOM)
node引擎如果放在系统上的(跟系统相关的模块,文件操作,网络操作,服务器的模块)
模块 | 名字 |
---|---|
读写文件 | fs |
创建服务器 | http |
查看系统 | os |
压缩文件 | zip |
… | … |
调用系统写文件功能案例
/* 项目结构
kwrite.js
katsuki.html 文件内容为空
*/
kwrite.js
//直接引模块名字,那它要不就是内置模块,要不就是第三方模块
const fs = require('fs');
//fs.writeFile(操作文件相对于当前文件的路径,写入内容,回调函数)
fs.writeFile("./katsuki.html", `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>katsuki</title>
</head>
<body>
<p>katsuki duse</p>
</body>
</html>
`, function (err, data) {
if (err) throw err;
console.log(data)
})
在kwrite.js目录下运行cmd命令
node kwrite
运行后在katsuki.html中得到写入内容
调用http请求案例
http.js
const http = require('http');
http.get("http://katsuki/index.html", (res) => {
var temp = ""
res.on('data', function (chunk) {
temp = temp + chunk
})
res.on('end', function () {
console.log(temp)
})
})
在http.js目录下运行cmd命令
node http
运行后在命令框中得到网页html结构
HTTP
http超文本传输协议
前端最多就是ajax(http协议的一种前端实现方案) GET/POST
GET | POST |
---|---|
参数在url上 | 参数在请求体 |
有可能有长度 | 没长度限制 |
不安全 | 安全 |
状态码 | |
---|---|
1xx | 开始执行 |
2xx | 成功 |
3xx | 重定向 |
4xx | 客户端错误,浏览器端 |
5xx | 服务端 |
第三方模块
从npm包管理中心去下载一些第三方包(别人写好传上去的),去在本地node平台实现自己的一些功能
npm类似于一个模块应用商店,里面有大量的第三方模块
安装
npm install xxx -g
npm i
建议安装cnpm
替代npm
,或者yarn
,在命令行上输入以下代码安装
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm install -g yarn
卸载
npm uninstall xxx //卸载某个模块
npm uninstall //全部卸载
初始化
生成一份package.json
描述文件,作用查看Sass&Gulp博文中gulp上传注意事项
npm init
使用第三方模块
var request = require('request');
var gulp = require('gulp');