node.js
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时(运行环境),如浏览器也是js的运行环境,
Node 也是JS的运行环境,但是将JS代码的应用场景扩展到了服务器端
补充:
JavaScript
是 Web 的编程语言。是一种解释型语言,是客户端语言。
JavaScript
定义了网页的行为
HTML
定义了网页的内容
CSS
描述了网页的布局
js的组成
ECMAScript(ES) : 负责翻译,为js的核心,解释器。
DOM (Document Object Model 文档对象模型):赋予js操作HTML的能力,document。
BOM (Browser Object Modal 浏览器对象模型):赋予js操作浏览器的能力,window,不兼容不建议使用。
变量类型
5种基本类型:unll,undefined,boolean,number,string
1种复杂类型:object
5种引用类型:Array,Object,Function,Date,RegExp
3种基本包装类型:Boolean,Number,String
2种单体内置对象:Global,Math
undefined:没有定义的变量,var声明没有初始化的变量
typeof 可查看变量类型,一个变量应只存一个类型的数据。
安装
官方安装弟子:http://nodejs.cn/download/
安装完成后,桌面上并没有什么快捷方式,因为Node仅仅是一个JS的执行环境
使用Node需要用到命令行工具。
使用命令行工具、 cmd 工具也可以使用win10中的 powershell 输入
node -v
检测是否安装成功,最后配置环境变量;
在终端中输入启动命令:
node ./011.js
node 文件名
错误代号 2502/2503
表示当前系统的用户权限不足。
解决方法:
以管理员身份运行 powershell
工具
属于运行安装包命令:msiexec /package node安装包位置
最后配置环境变量;
nonde 工具之 nodemon
nodemon是一种工具,可以自动检测到目录中的文件更改时通过重新启动应用程序来调试基于node.js的应用程序。
在命令行工具、 cmd 工具也可以使用win10中的 powershell 输入安装命令:
全局安装
npm install -g nodemon
局部安装:
npm install --save-dev nodemon
使用:
在终端中输入命令:
nodemon ./123.js
nodemon 文件名
nodejs 基础
Node.js是由ECMAScript及Node 环境提供的一些附加API组成的,包括文件、网络、路径等等一些
更加强大的 API
nodejs
代码的编写:
打开任意你熟悉的开发工具,新建文件 hello.js,注意这里的文件后缀名是 .js ,而不是 .html
编写测试代码
nodejs
代码的运行:
找到 hello.js 文件的位置,然后按下 shift 键的同时点击鼠标右键,选择“在此处打开powershell 窗
口”,输入如下命令:
node 123.js
node 文件的后缀名都是.js
以前的学习中,都是将js文件引入到html中,以运行html文件的方式执行js代码,但node是服务器
技术,在node技术中,不存在 dom 和 bom,所以运行方式与以前是不一样的
运行node程序的方式是使用 node 命令加上文件名称的方式
除了在命令行中运行node程序的方式外,很多开发工具,如vs code内部,也可以运行node程序
nodejs 基础语句
读取文件
同步读取:
var fs = require('fs')
var res = fs.readFileSync('./a.text','utf8')
console.log(res)
异步读取:
var fs=require('fs')
fs.readFile('a.txt','utf8',(err,data)=>{
// console.log(err)
// console.log(data)
if(!err){
console.log(data)
}
})
readFile是一个异步方法,所以需要回调函数接收读取结果
回调函数中,err 获取读取中的错误信息,如果读取过程中没有出现错误,则结果为null;data 为取的文件内容
写入文件
语法:
fs.writeFile(file, data[, options], callback)
练习:
1.
var fs = require('fs');
// 覆盖式写入文件
fs.writeFileSync('22.text','123456789','utf8')
2.
// 写入文件
fs.writeFile('./22.text','987654321','utf8',arr=>{
console.log('文件修改成功');
})
// 读取
fs.readFile('./22.text','utf8',(err,data)=>{
if(!err){
console.log(data)
}
})
Node.js :连接MySQL
// 封装 mysql 方法
var mysql = require('mysql');
// 封装 mysql 数据库相关数据
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
database : 'test'
});
// 执行 connect 方法
connection.connect();
// 执行 mysql 语句
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
数据库连接相关参数:
参数 | 描述 |
---|---|
host | 主机地址 |
user | 用户名 |
password | 密码 |
port | 端口号 |
database | 数据库 |
charset | 连接字符集 |
localAddress | 此IP用于TCP连接 |
socketPath | 连接到unix域路径,当使用host和port时会被忽略 |
timezone | 时区 |
stringifyObjects | 是否序列化对象 |
typeCast | 是否将列值转化为本地JavaScript类型值 (默认:true) |
queryFormat | 自定义query语句格式化方法 |
debug | 开启调试(默认:false) |
nodejs 中的数据库操作
查询数据
// 连接数据库 --
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port : '3306',
database : 'test'
});
connection.connect();
// 连接数据库结束 --
// 封装 sql 语句
var 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();
插入数据
// 连接数据库开始 --
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port: '3306',
database: 'test'
});
connection.connect();
// 连接数据库结束 --
// 封装 sql 语句
var addSql = 'INSERT INTO websites(Id,name,sex,alexa,country) VALUES(0,?,?,?,?)';
var addSqlParams = ['菜鸟', '男','123456', 'ASC'];
// 执行添加数据语句
connection.query(addSql,addSqlParams,function (err, result) {
if(err){
console.log('[INSERT ERROR] - ',err.message);
return;
}
console.log('--------------------------INSERT----------------------------');
console.log('INSERT ID:',result.affectedRows);
console.log('-----------------------------------------------------------------\n\n');
});
connection.end();
更新数据
// 连接数据库开始 --
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port: '3306',
database: 'test'
});
connection.connect();
// 连接数据库结束 --
// 封装 sql 语句
var modSql = 'UPDATE websites SET name = ?,sex = ? WHERE Id = ?';
var modSqlParams = ['菜鸟', '女',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();
删除数据
// 连接数据库开始 --
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port: '3306',
database: 'test'
});
connection.connect();
// 连接数据库结束 --
// 封装 sql 语句
var 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();