目录
一、简介
- Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。
- nodejs的运行范围不止是前端,而是整个服务器。
- Nodejs是单线程
二、nodejs安装配置
参考链接:
https://www.bilibili.com/video/BV1ki4y1F72Y?from=search&seid=12509306812545661328&spm_id_from=333.337.0.0
https://blog.csdn.net/muzidigbig/article/details/80493880
三、简单配置代码
//1、Nodejs内置的http模块导入当前项目,完成http服务器的搭建
const httpModule =require("http")
//2、创建和http服务器
const server =httpModule.createServer();
//3、监听端口的请求 function是回调函数,监听这个请求,如果没有异常就运行这个function
server.on("request",function(request,response){
console.log("欢迎访问服务器");
//HTTP协议响应头,需要设置信息告诉浏览器响应回来的数据格式
//nodejs可以读取文件,讲文件响应回客户端
response.write("ok");
response.end();
});
//4、绑定端口
server.listen("8888",function(){
console.log("服务器运行成功,端口为8888");
});
四、Express框架
如果要自己搭建服务器端框架,需要处理请求,比如get、post分别传递的参数,处理。文件上传要处理。响应内容回客户端我们要自己处理http的响应头。要自己将内容放在消息体发送回去。
地址:http://www.expressjs.com.cn
- 本地安装方法:在cmd里面输入即可
$ npm install express --save
- 同时也可以使用在线的生成器:
express框架基于Nodejs平台可以快速、开发、简单的搭建一个服务鼹项目,规模比较小,但是提供了非常丰富的中间件和插件。
- 区别:1、可以设置中间件来响应http请求,无序自己处理复杂的业务逻辑2、定义了路由表,可以执行不同http请求操作
3、可以使用模板引擎来快速的渲染数据。直接发送渲染好的页面回客户端
4、前端完成业务逻辑,后端提供接口数据
五、使用Express搭建项目
1、安装express-generator,直接全局安装,在cmd中输入
npm install -g express-generator
- 如果在sill idealTree buildDeps没有反应
可以使用如下命令设置为淘宝的镜像源:
npm config set registry https://registry.npm.taobao.org
验证是否切换到淘宝的镜像:
npm config get registry
2、通过express-generator工具完成项目的创建
进入到项目文件夹内,用cmd创建
express 项目名字
3、运行启动项目
- package.json文件:
包含当前项目的描述,其中dependencies包含的是项目所依赖的包 - 进入目录:
cd public
- 下载所需依赖的包
npm install
这个时候会在项目public文件夹里面生成node_modules文件夹
这个地方说明:如果需要拷贝项目的时候,我们可以不拷贝这个文件,只需要拷贝核心代码,到本地之后再进行install即可
- 启动项目
npm start
注意:默认端口是3000;
六、搭建三层架构
三层架构就是开发过程中架构模式,并不是某项技术,设计思想。
1、表示层(UI)
2、业务逻辊层(service)
3、数据访问层(持久层DAL )
为了更好的组织我们的代码结构。
如果遇到项目业务比较复杂,或者以后项目可能迁移到其他数据库。有了三层架构我们的项目就非常好维护。
项目中各文件夹的作用:
- 运行逻辑:
- 登录的业务表示层: routes+public内容,路由文件和public静态资源业务层: service存放核心业务的代码
持久层: dao和数据库进行数据交互
修改框架中的app.js,我们自己写监听端口的函数,
将module.exports = app;注释掉
//module.exports = app;
//4、绑定端口
app.listen("8888",function(){
console.log("服务器运行成功,端口为8888");
});
- 在service中创建userService文件:
//导入持久层
const { findUser, addUser } = require("../dao/userDao")//直接将userDao的两个参数导入到一个对象中
//暴露一个方法
module.exports = {
login(data) {
const res = findUser(data);
if (res) {
return { success: res, msg: "登陆成功" }
}
else {
return { success: res, msg: "登陆失败" }
}
}
}
- 在dao文件夹创建:userDao.js
const users = [
{ _id: 1, username: "sss", password: "123" },
{ _id: 2, username: "sss", password: "123" }
]
module.exports = {
//用来获取数据,并查询数据库数据,验证是否存在
findUser(data) {
const panduan = users.some(item => item.username == data.username && item.password == data.password);
return panduan;
},
addUser(data) {
}
}
修改routes/users中的传参设置
var express = require('express');
const { report } = require('.');
var router = express.Router();
const { login } = require("../service/userService")//加载服务层
/* GET users listing. */
//利用post方法获取数据
router.get('/login', function (req, resp, next) {
//获取客户端传来的参数
//req.body==>{username:"dasdsa",password:"wdqw",......}
const { username, password } = req.query; //获取get请求 消息体里面的信息 get请求 req.query post请求 req.body
const value = login({ username, password });
//如果要响应内容回客户端send()
resp.send(value);
})
module.exports = router;
- 由于users.js下的获取客户端的参数是从 /login 获取的,所以我们应该访问/users/login
- 访问http://localhost:8888/users/login?username=sss&password=123可以得到返回的参数
nodejs连接数据库的方法:
- 参考链接:
https://www.runoob.com/nodejs/nodejs-mysql.html
Comments | NOTHING