代码拉取完成,页面将自动刷新
Nodejs 学习笔记
Node.js是啥?
Nodejs 不是一种独立的语言
Nodejs 是一个让JavaScript运行在服务端的开发的平台
服务器端的JavaScript
允许开发人员使用JavaScript语言写服务器端代码的框架(其实Nodejs是对Commonjs规范的一种很好的实现)
其本身利用Google V8 JavaScript引擎,所以速度和性能非常好,而且Nodejs又对其进行了封装,同时还改进了其处理二进制数据的能力(Nodejs对引入过的模块都会进行缓存,且核心模块的缓存检查先于文件模块的缓存检查)
Nodejs不是一个web服务器,只是计算机上执行代码的另一种方式,它是一个简单的JavaScript Runtime.
Node的优点:(非阻塞、单线程、事件驱动)
1. 它是一个JavaScript运行环境 (Nodejs采用C++语言编写而成)
2. 依赖于浏览器V8引擎进行代码解释
3. 事件驱动
4. 非阻塞
5. 异步I/O
6. 轻量、可伸缩,适于实时数据交互应用
7. 单进程,单线程
Node能做什么?
web网站开发
Web Scoket服务器
TCP/UDP套接字应用程序
命令行工具
交互式终端程序
Node和JavaScript关系:
JavaScript:
运行在浏览器端
前端的JavaScript其实是由ECMAScript、DOM、BOM组合而成。
ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象)
DOM(一些操作页面元素的方法)
BOM(一些操作浏览器的方法)
Nodejs:
运行在server端的
ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象)
os(操作系统)
file(文件系统)
net(网络系统)
database(数据库)
前端和后端的js相同点就是,他们的语言基础都是ECMAScript,只是他们所扩展的东西不同,前端需要操作页面元素,于是扩展了DOM,也需要操作浏览器,于是就扩展了BOM。
而服务端的js也是基于ECMAScript扩展出了服务端所需要的一些API,后端语音有操作系统的能力,于是扩展了os,需要有操作文件的能力,于是扩展出file文件系统,需要操作网络,于是扩展出net网络系统,需要操作数据,于是要扩展出database的能力。
nodejs
npm
cnpm
server.js
const http=require('http');
let area=(r)=>r**2;
http.createServer(function (request,response) {
response.writeHead(200, {'Content-Type':'text/plain','Test':'xxx'});
response.write(`Area 3 = ${area(3)} \n`);
response.end('Hello World\n');
}).listen(8888,'0.0.0.0', ()=>{
console.log("Server running at 8888");
});
运行:node server.js
访问:http://localhost:8888
4.0 常用文件操作方法:
1)readFileSync/readFile 读取方法(同步/异步)
2)writeFileSync/writeFile 写入方法
3) appendFileSync/appendFile 追加写入方法
4) copyFileSync/copyFile 拷贝写入方法
5) open 打开文件
open 方法有四个参数:
path:文件的路径
flag:标识位
mode:权限位,默认 0o666
callback:回调函数,有两个参数 err(错误)和 fd(文件描述符),打开文件后执行
6) close 关闭文件
7) read 读取文件 (read 方法与 readFile 不同,一般针对于文件太大,无法一次性读取全部内容到缓存中或文件大小未知的情况,都是多次读取到 Buffer 中)
8) write 写入文件 (write 方法与 writeFile 不同,是将 Buffer 中的数据写入文件,Buffer 的作用是一个数据中转站,可能数据的源占用内存太大或内存不确定,无法一次性放入内存中写入,所以分段写入,多与 read 方法配合)
9) copy 针对大文件实现
10) stats 获取文件或目录属性
11) mkdir 创建目录
12) readdir 读取目录
13) rmdir 删除目录
14)unlink 删除文件
4.1 read.js 理解同步和异步
const fs = require('fs');
fs.readFile('input.txt', function(err, data){ //异步
if (err) {
return console.error(err);
}
console.log(`rsync: ${data.toString()}\n`);
});
let data = fs.readFileSync('input.txt'); //同步
console.log(`sync: ${data.toString()}\n`);
console.log("over\n");
4.2 stat.js
const fs = require('fs');
fs.stat('input.txt', function(err, stats) {
if (stats.isFile) {
console.log(`This is a file \n`);
}
});
4.3 write.js(writeFile 写入文件)
const fs = require('fs');
let date = new Date();
let f = 'input.txt';
fs.writeFile(f, `Time now: ${date.toLocaleString()} \n`, function(err) {
if (err) {
return console.error(err);
}
console.log(`Write ok \n`);
fs.readFile(f, function (err, data) {
if (err) {
return console.error(err);
}
console.log(`read: ${data}\n`)
})
});
5.0 创建数据表
CREATE TABLE `websites` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`url` varchar(255) NOT NULL,
`alexa` varchar(255) NOT NULL,
`country` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO websites(name,url,alexa,country) VALUES('菜鸟工具', 'https://c.runoob.com','23453', 'CN');
5.1 连接数据库
const mysql = require('mysql');
const connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
database : 'test'
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
5.2 查询数据
const mysql = require('mysql');
const connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port: '3306',
database: 'test'
});
connection.connect();
let sql = 'SELECT * FROM websites';
//查
connection.query(sql,function (err, result) {
if(err){
console.log('[SELECT ERROR] - ',err.message);
return;
}
console.log('--------------------------SELECT----------------------------');
console.log(result);
console.log('------------------------------------------------------------\n\n');
});
connection.end();
5.3 写入数据
const mysql = require('mysql');
const connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port: '3306',
database: 'test'
});
connection.connect();
let addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)';
let addSqlParams = ['菜鸟工具', 'https://c.runoob.com','23453', 'CN'];
//增
connection.query(addSql,addSqlParams,function (err, result) {
if(err){
console.log('[INSERT ERROR] - ',err.message);
return;
}
console.log('--------------------------INSERT----------------------------');
//console.log('INSERT ID:',result.insertId);
console.log('INSERT ID:',result);
console.log('-----------------------------------------------------------------\n\n');
});
connection.end();
5.4 更新数据
const mysql = require('mysql');
const connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port: '3306',
database: 'test'
});
connection.connect();
let modSql = 'UPDATE websites SET name = ?,url = ? WHERE Id = ?';
let modSqlParams = ['菜鸟移动站', 'https://m.runoob.com',6];
//改
connection.query(modSql,modSqlParams,function (err, result) {
if(err){
console.log('[UPDATE ERROR] - ',err.message);
return;
}
console.log('--------------------------UPDATE----------------------------');
console.log('UPDATE affectedRows',result.affectedRows);
console.log('-----------------------------------------------------------------\n\n');
});
connection.end();
5.5 删除数据
const mysql = require('mysql');
const connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port: '3306',
database: 'test'
});
connection.connect();
let delSql = 'DELETE FROM websites where id=6';
//删
connection.query(delSql,function (err, result) {
if(err){
console.log('[DELETE ERROR] - ',err.message);
return;
}
console.log('--------------------------DELETE----------------------------');
console.log('DELETE affectedRows',result.affectedRows);
console.log('-----------------------------------------------------------------\n\n');
});
connection.end();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。