一.什么是node.js?
简单的说就是运行在服务器端的js.(而普通js是运行在浏览器端的)
安装地址:https://nodejs.org/zh-cn/
二.在node.js中运行js方法
1.在REPL中运行(什么是REPL?完整英文read eval print loop,就是读,解析,打印,循环))
步骤:
a.输入node指令
b.进入一个可以运行js代码的环境
c.输入js代码
d.回车立刻执行
演示操作如下:(解释后面有undefined的原因,因为它会自动接着打印函数的返回值,如果函数里面没有写return返回值,就会有undefined)
2.在vscode终端中编译js文件;
演示如下:
三.node.js模块
1.内置模块:
a.装了node 就有;
b.只需要引入即可;
比如: fs (可以读写文件,而浏览器没有这一项功能),http(可以创建服务器).
演示代码:
//http模块结合fs的使用---------------------------------------------------------------------------------------------------------
//1.导入内置模块fs
const fs =require('fs');
//2.导入内置模块http
const http=require('http');
//3.http创建服务器
let server= http.createServer(function(req,res){
// 里面读取index.html文件并返回
fs.readFile('./www/index.html',function(err,data){
if(err){
res.end('404')
}else{
res.end(data.toString());
}
})
})
//4.开启监听
server.listen('8887',()=>{
console.log("开启服务器");
});
2.第三方模块:
a.需要安装才有;
b.查找第三方模块网站:https://www.npmjs.com/
c.比如:
cnpm(英文全称china node package manager,是国内用它来安装 node的第三方模块 速度回快很多 稳定);
nodemon(自动检测文件更改);
mysql(操纵mysql数据库);
演示代码:
// 导入模块
let mysql = require('mysql');
// 创建数据库连接
let connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
database : 'letao'//数据库名
});
// 连接数据库
connection.connect();
// 执行数据库语句
connection.query(' select * from user', function (error, results, fields) {//里面是数据库语句
if (error) throw error;//如果异常就抛出异常
console.log(results);
});
// 关闭数据库
connection.end();
crawler(爬虫,爬取其它网站的数据);
演示代码:
// 导入模块
const Crawler = require("crawler");
//导入fs
const fs=require('fs');
// 实例化
const c = new Crawler({
// 最大的连接数
maxConnections : 10,
//回调函数,即爬到了之后
callback : function (error, res, done) {
if(error){
console.log(error);
}else{
var $ = res.$;
// $ is Cheerio by default
//a lean implementation of core jQuery designed specifically for the server
//如果能爬到数据,我们可以用类似jQ的语法进行解析
console.log($("title").text());
// 将获取到的内容存到变量里
let str=$('title').text();
//把变量写入到2.txt的文件中(没有文件名的话会自动创建)
fs.writeFile('./data/2.txt',str,function(err){
})
}
done();
}
});
// Queue just one URL, with default callback
c.queue('http://www.jd.com');
四.ECMAScript 6语法(即es6)
1.变量的声明:
let变量的特点:不会变量提升;有块级作用域.
const常量的特点:声明之后无法修改;不会变量提升;有块级作用域;
2.对象的简单赋值
3.箭头函数