1 Star 0 Fork 0

Young / Nodejs基础学习笔记.丝路技术组

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Nodejs基础学习笔记.丝路技术组

Nodejs 学习笔记


  1. nodejs 概述
  2. 配置环境
  3. 第一个应用
  4. 文件操作
  5. mysql之crud
  6. web框架-express
  7. 回调函数
  8. 事件驱动
  9. 模块化及常用模块(http,fs,util等)
  10. 常用全局变量和全局方法
  11. 多进程
  12. 异步编程(async/await)
  13. nodejs cli 命令行

1 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的能力。

2 配置环境

nodejs
npm
cnpm

3 第一个应用

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 读写文件

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 mysql之crud

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();		

空文件

简介

Nodejs基础学习笔记 展开 收起
NodeJS
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
NodeJS
1
https://gitee.com/young-911/nodejs-note.git
git@gitee.com:young-911/nodejs-note.git
young-911
nodejs-note
Nodejs基础学习笔记.丝路技术组
master

搜索帮助