简单的Nodejs介绍和使用

发布于 2022-03-16  22 次阅读


一、简介

 

  • 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


“缘分让我们相遇乱世以外,命运却让我们危难中相爱”