保持对代码的热爱并保持怀疑态度
下载node
- 官网:http://nodejs.org
- 下载LTS版(长期稳定支持版)
- 双击安装,安装成功后,无图标,无可视界面,纯命令操作
如何使用node环境执行node程序
- 打开node环境
- 操作系统的命令窗口
- windows:DOS(命令提示符 或 cmd)
- 左下角,搜索“cmd”
- win+r,搜索“cmd”
- 某个文件夹内:shift+右键,打开命令提示符
- 文件夹的地址栏,输入cmd,回车
- MAC:终端
- 启动台,终端
- 某个文件夹,右键,服务,新建该位置的终端
- linux:终端
- windows:DOS(命令提示符 或 cmd)
- 某些第三方工具,封装了操作系统的命令窗口
- 某些编辑器:窗口->终端 / 终端->新建终端
- git:某个文件夹,右键,选择git bash
- 操作系统的命令窗口
- 直接执行node代码
- 启动V8引擎:
- 输入:node
- 可以写ECMAScript的代码
- 不能写DOM和BOM相关代码
- 输入不方便,调试不方便,保存代码不方便
- 仅仅适合测试代码,不适合编程使用
- 结束V8引擎:ctrl+c,ctrl+c
- 启动V8引擎:
- 通过文件执行node代码
- 创建js文件
- 写ES代码
- 在 小黑框 中,通过cd配合dir,找到要执行的文件的路径
- 使用:node 文件名
- 回车
常见的DOS命令
- 打开终端后,明确路径的位置
- 查看当前文件夹内的子文件
- 输入命令(win):dir
- 输入命令(mac):ls
- 打开指定文件夹
- 输入命令:cd 要打开的路径
- cd …/
- cd sh2013/day33
- 输入命令:cd 要打开的路径
- 切换盘符:
- 输入命令:盘符:
- D:
- C:
- 输入命令:盘符:
- 安装node之后,查看node版本号:node -v
- 检查node是否安装成功
node写什么
- 基础代码
- 除了DOM和BOM的js代码
- 功能(模块)的分类
- 内置模块
- 直接引入:const 变量 = require(“模块名”);
- 通过:变量,使用模块的内容
- 第三方模块
- 下载并安装:…
- 引入:const 变量 = require(“模块名”);
- 通过:变量,使用模块的内容
- 自定义模块
- 自已定义一个模块
- …
- 引入:const 变量 = require(“模块所在的路径及模块文件名”);
- 通过:变量,使用模块的内容
- 自已定义一个模块
- 内置模块
- 内置模块
- http:服务器模块
- fs:文件模块
- url:用来解析url地址的模块
- querystring:用来解析查询数据的模块
const http=require("http");
const fs=require("fs");
const url=require("url");
const qs=require("querystring");
http.createServer((req,res)=>{
if(req.url!=="/favicon.ico"){
let urlObj=url.parse(req.url,true); //获取到req的url,true表示里面的一个属性querry转为对象格式
// console.log(urlObj);
if(urlObj.pathname==="/api"){ //pathname输入的网址 ?前面的
// ajax处理
ajaxHandle(req, res);
}else{
//文件处理
findHandle(req,res);
}
}
}).listen("3000");
function ajaxHandle(req,res){
let urlObj=url.parse(req.url,true);
// 获取post方式发送的数据
// req身上的data事件,会在post发送数据时被多次触发,每次触发时会拿到一个数据碎片,每次拿到一个数据碎片都需要手动拼接起来
let str="";
req.on("data",(res)=>{
str+=res;
})
// req身上的end事件,会在post数据发送结束后被触发,此时查看拼接之后的数据碎片,就是完整的post数据了
req.on("end",()=>{
let resObj=null;
if(str===""){ //如果等于空也就是没有拼接数据也就不是get请求,那就走post
resObj = urlObj.query; //url模型身上的query,取得地址
}else{
resObj=qs.parse(str) //数据模型身上的方法parse
}
console.log(resObj);
})
}
function findHandle(req,res){
fs.readFile("./www"+req.url, (err, data)=>{ //读取文件
if(err){
res.write("404"); //异常报错
}else{
res.write(data); //执行
}
res.end();
})
}