提示:node基础, 系统模块,第三方模块,node.js 对数据库的操作(增删改查).使用node实现对列表简单的增删改查功能,博客项目连接数据库,博客项目前端
大家好呢,今天 一起 学习一下node.js. node.js 是一个基于 javascript 这门语言而开发出来的技术,本文就介绍了node.js学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
node.js官网
node.js中文网
学习 Node.js 不是学习一种新的语言,而是一门技术
1、JavaScript 由三部分组成,ECMAScript,DOM,BOM
2、Node.js是由ECMAScript及Node 环境提供的一些附加API组成的,包括文件、网络、路径等等一些更加强大的 API
node是基于javascript来使用的,所以node文件的后缀名都是 .js
退出运行的方法:crtl c 运行文件:
node 文件名.js
Node运行环境提供的API. 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块
同步读取
语法:
var fs=require(‘fs’)
var res=fs.readFileSync(’./kl.txt’,‘utf8’)
console.log(res);
案例:
//引入系统模块
const http = require (‘http’)
const fs =require(‘fs’);
//创建http服务
const app = http.createServer()
//客户请求 ,给予响应
app.on(‘request’,function(req,res){
console.log(req.url);
if(req.url==‘index’ || req.url==’/’){
let result = fs.readFileSync(‘html/index.html’,‘utf8’)
res.end(result)
}else if(req.url == ‘/order’){
let result = fs.readFileSync(‘html/order.html’,‘utf8’)
res.end(result)
}else if(req.url==’/my’){
let result = fs.readFileSync(‘html/my.html’,‘utf8’)
res.end(result)
}else if (req.url ==‘add’){
let result = fs.readFileSync(‘html/add.html’,‘utf8’)
res.end(result)
}else{
let result = fs.readFileSync('html/error.html','utf8')
res.end(result)
}
})
//启动
app.listen(3001,function(){
console.log(‘server is running at http://127.0.0.1:3001’)
})
异步读取
const fs=require('fs')
fs.readyFile('kl.txt','utf8',function(err,data){})
或
fs.readFile('kl.txt','utf8',(err,data)=>{
console.log(err)
console.log(data)
})
语法
fs.writeFile()
案例
const fs = require('fs')
fs.writeFile('./kl..txt', 'hello', err => {
if (err) throw err;
console.log('文件写入成功')
})
回调函数参数为一个的,可以省略()
下载和卸载第三方模块
下载:npm install 模块名称
卸载:npm unintall package 模块名称
本地安装:(模块当前项目使用)
npm install jquery
npm uninstall jquery
全局安装:模块被下载全局目录下,所有项目都可以使用
npm install nodemon -g
npm uninstall nodemon -g
原因:
解决:
nrm使用:
cnpm 使用:
使用npm安装 cnpm,同时更换所需下载源
npm install -g cnpm --registry-http://registry.npm.taobao.org
安装成功后,使用cnpm命令安装第三方模块
cnpm install jquery
第一步:Start-Process powershell -Verb runAs(以管理员的方式打开)
第二步:从普通模式转至管理员模式,输入以下set-ExecutionPolicy RemoteSigned命令然后按下回车键。
输入:Y 或者A 就可以了
//const 声明
//require 引入
const mysql=require('mysql');
let pool = mysql.createPool({
host : 'localhost',
user : 'root',
password : 'root',
database : 'blog'
})
pool.getConnection((err,connection)=>{
if (err) throw err;
let uname='root';
let upwd='root';
let sql="SELECT * FROM aa ";
connection.query(sql,[uname,upwd],(err,result,fields)=>{
if(result.length>0){
console.log("登录成功");
}else{
console.log("登录失败");
}
})
connection.release();
})
//insert
let username = '小明';
let people = '小张';
let score = '100'
let sql2 = "INSERT INTO people (username,people,score) VALUE(?,?,?)";
pool.query(sql2,[username,people,score],(err, result, fields)=>{
if (result.length > 0) {
console.log(result);
} else {
console.log(result);
}
})
//html
//api.js
//编辑页
//引入mysql
const { exec } = require("../db/mysql");
const { SuccessModel } = require("../model/resModel");
// 博客列表
const getList = () => {
return exec("select * from blog");
};
// 博客详情
const getDetail = (id) => {
let msgResult= exec("select * from blog where id=" + id);
return msgResult.then((data) => {
return new SuccessModel('',data)
});
};
// 新增数据
const newBlog = function (blogData) {
console.log(blogData);
let sql = `insert into blog values(null,'${blogData.title}','${
blogData.content
}',${Date.now()},'${blogData.author}')`;
let result = exec(sql);
return result.then((data) => {
return data.insertId;
});
};
/**
* 更新博客
*/
const updateBlog = (id, postData) => {
let sql = `update blog set title='${postData.title}',content='${postData.content}' where id=${id}`;
let result = exec(sql);
return result.then((data) => {
/*
*三元表达式 data.affectedRows 如果==1 那么返回true否则返回false
*/
return data.affectedRows == 1 ? true : false;
});
};
// 删除博客(根据id删除)
const deleteBlog = (id) => {
let sql = `delete from blog where id=${id}`;
let result = exec(sql);
return result.then((data) => {
return data.affectedRows == 1 ? true : false;
});
};
//暴露
module.exports = {
getList,
getDetail,
newBlog,
updateBlog,
deleteBlog,
};
/**
* 路由文件:接受用户的请求,并进行返回数据
*/
// 引入blog 控制器
const {
getList,
getDetail,
newBlog,
updateBlog,
deleteBlog,
} = require("../controller/blog");
const { SuccessModel, ErrorModel } = require("../model/resModel");
const handlerBlog = (req) => {
// 使用 URL 模块对 req.url 进行封装
let myUrl = new URL(req.url, "http://127.0.0.1:3000/");
let method = req.method;
let pathname = myUrl.pathname;
// console.log(pathname);
let msgResult = null;
if (pathname == "/api/blog/list" && method == "GET") {
msgResult = getList();
// then 方法的返回值也是一个 promise
return msgResult.then((data) => {
return new SuccessModel("", data);
});
} else if (pathname == "/api/blog/detail" && method == "GET") {
let id = myUrl.searchParams.get("id");
msgResult = getDetail(id);
return msgResult.then((data) => {
return new SuccessModel("", data);
});
} else if (pathname == "/api/blog/new" && method == "POST") {
msgResult = newBlog(req.body);
return msgResult.then((data) => {
return new SuccessModel("", data);
});
} else if (pathname == "/api/blog/update" && method == "POST") {
let id = myUrl.searchParams.get("id");
let postData = req.body;
msgResult = updateBlog(id, postData);
return msgResult.then((data) => {
return new SuccessModel("", data);
});
} else if (pathname == "/api/blog/del" && method == "POST") {
let id = myUrl.searchParams.get("id");
msgResult = deleteBlog(id);
return msgResult.then((data) => {
return new SuccessModel("", data);
});
}
return msgResult;
};
// 暴漏 handlerBlog 方法
module.exports = {
handlerBlog,
};
const mysql = require("mysql");
// 创建链接
const con = mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
port: 3306,
//数据库名
database: "blog3",
});
// 打开链接
con.connect();
const exec = (sql) => {
return new Promise((resolve, reject) => {
con.query(sql, (err, result) => {
if (err) {
reject("执行sql语句失败");
return;
}
resolve(result);
});
});
};
module.exports={
exec
}
提示:这里对文章进行总结:
例如:以上就是本次的内容啦,本文简单介绍了node.js的使用,而node.js提供了大量能使我们快速便捷地处理逻辑的方法。