node.js介绍

定义:node.js其实就是JS的运行环境,浏览器就是JS的运行环境,简单的说 Node.js 就是运行在服务端的 JavaScript。

node的安装

node这个安装是傻瓜式安装,除了安装路径之外,其他一直点next就行了,安装完成后在dos中输入node -v如果显示版本号那么就说明安装成功了。

切换下载源

在安装node的时候,会默认安装一个工具,叫npm,npm是一个下载工具,我们所需要的第三方模块一般都需要用这个工具去下载,但是其下载地址在国外,所以下载贼慢,我们就可以利用第三方模块切换下载源,将其切换到国内。

nrm模块
首先下载,dos中进行全局安装
npm install nrm -g

下载好之后,可以用nrm ls查看都有那些下载源
在这里插入图片描述
接着就可以去切换下载源了nrm use taobao

创建一个服务器

在node中,没有像java中的tomcat一样,可以提供web服务。 在node,如果你要想提供web服务,你就需要自己创建一台web服务器。先整一个入门级的创建服务器代码

 let http = require("http"); // 本质是一个对象
  let server = http.createServer();
  server.on("request",function (req,res) {
      res.writeHead(200,{"content-type":"text/html; charset=utf-8"})
      res.write("<h1>你好,客户端,我是服务器~</h1>");
      res.end(); // 告诉客户端,内容响应完毕了   结束响应
  })
  server.listen(3000,()=>{
      console.log("服务器运行起来了")
  })

node.js实现热部署

当你用node.js创建了一个服务器后,只要你修改了代码,就必须要重启服务器,这个就很麻烦,那么我们就可以安装一个第三方模块nodemon,这玩意会监听你的代码,如果你修改代码,只需要保存一下他就会自动重启服务,比较方便。

首先 全局安装
npm i nodemon -g
在这里插入图片描述
然后在启动你所写的服务

nodemon +你所写的服务器路径

例 nodemon server.js

如果你是在vscode的端口上执行的一定要注意其路径是否正确。

Express脚手架

express相当于node的框架
express脚手架就是一种快速搭建项目目录结构的一个工具。
安装脚手架分三步
1,安装生成器
npm install express-generator -g
我这个是在vscode的终端进行执行的但我建议在dos中运行,这个只需要执行一次,以后直接在终端创建文件就行了。
在这里插入图片描述
2,创建文件
express my-project -e
其中my-project是你要创建的项目名,后面的-e是默认的views文件夹下文件为ejs,不加的话是默认的jade文件。

3,安装依赖包
cd my-project
npm install

这样一个基本的项目就搭建好了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后热部署一下项目跑起来。注意默认端口为3000,如果向结束,就在终端ctrl+c就终止项目运行了。
在这里插入图片描述

修改ejs后缀

因为这个框架默认的为ejs后缀,所以你在加载html界面时,就必须的把你的html后缀改为ejs,这个就比较麻烦,所以我们可以修改后缀ejs为html。

app.set(‘views’, path.join(__dirname, ‘views’));
//告诉express使用的模板引擎为html,但其本质还是ejs的模板引擎。
app.engine(“html”,require(“ejs”).__express);
//然后修改后缀名。
app.set(‘view engine’, ‘html’);

加载界面

在这个框架中,你要将你的界面的静态资源全部放到public文件夹中,然后将html界面放到views文件夹中.如下图所示。

在这里插入图片描述
当然也可以把文件都放在views中,可以在views中新建一个文件夹,然后配置一下,代码如下,其中resource是我在views下创建的文件夹
app.use(express.static(path.join(__dirname, ‘views/resource’)));

配置路由

这个框架里的路由就相当于controller层,当你用express脚手架创建时,他会默认给你生成两个一级路由,文件默认放在routes文件中,你在写的时候可以直接把它自带的给删了,自己新建一个配置一下就可以了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就可以访问到了,当然你也可以配置二级路径,方法和一级路径一样,先require获取自己的路径,在app.use将路由配置进去。举个例子

var admin = require(’./routes/admin/login’);
app.use(’/admin’,admin)

其中admin为我在routes文件下创建的文件,login为我写的js文件。
**需要注意,如下图所示。下面子进行重定向的时候/admin/users/login,其执行顺序为先执行/admin ,然后执行/admin/users 最后执行admin/users/login, 所以现在这个代码会陷入死循环中。同理如果将其一级路由改为app.use(’/admin/users’,checkLogin);同样也会陷入死循环中。
应该改为 app.use(’/admin/index’,checkLogin); 只要不与你要重定向的url冲突就行。 **
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

body-parser插件

我们在接收前台界面传来的数据的时候就需要引用第三方插件body-parser,首先引入body-parser
npm i body-parser
然后进行接收和配置,

var bodyParser = require(‘body-parser’);
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
接着就可以用req.body获取前台界面form中传过来的数据对象。

当然还有一个方法是 req.query也可以接收从前台传过来的数据
举个例子

req.query.id就可以获取id了

mongdb

安装完mongdb后如果你没把他配置到服务中,那么就得手动开启,找到其bin目录然后cmd,执行mongod --dbpath D:\mongodb其中路径为你安装mongdb的路径。
在这里插入图片描述
在这里插入图片描述
这样mongdb就启动成功了,
如果在node.js中使用mongdb,第一步引入插件
npm install mongodb
一般都会将数据库的一些操作封装起来,放在一个models文件夹中,直接上代码。

这个是封装了一个插入数据的方法
在这里插入图片描述
在这里插入图片描述
在你定义的路由文件中使用时引入就可以了。
在这里插入图片描述
在这里插入图片描述

moment插件

这个是一个获取时间的第三方插件,三步走 下载插件引入插件,使用插件
首先下载
npm install moment
引入
let moment=require(‘moment’)
使用
var time=moment().format(‘YYYY-MM-DD, h:mm:ss’);
这个获取时间格式为
2020-08-04, 10:11:19
更详细的moment介绍我推荐这个博客

cookie插件

cookie的特点就是小,它是基于浏览端的会话技术,将数据保存在浏览器端,其中cookie是作为响应头信息,从服务其端发送到浏览器端的,但是cookie有个缺点就是cookie可以写很多个,这就导致在每一次http请求中,都需要携带大量的cookie数据。会造成性能的损失,还有一点cookie是保存在浏览器端的,所以无法进行二次加工。
我们可以使用原生的setHeader方法来设置cookie,
res.setHeader(“set-cookie”,“username=andy”);
然后可以在如下图所示中看到设置的cookie。
在这里插入图片描述
在express中,cookie的发送,其实已经封装了相应的方法–res.cookie
res.cookie(“username”,“admin”)
获取cookie
因为cookie是作为请求头,从浏览器端传递到服务器端的,这个操作是自动进行的,所以任何一次http请求,浏览器都会自己携带cookie,向服务端发送http请求所以我们只需要在服务端获取cookie就可以了,这里就要用得到req对象了,但是默认情况下,req对象中没有对cookie进行解析,所以不能直接获取。这里就需要用到第三方插件 cookie-parser 进行前面说的三步走,

首先下载cookie-parser

npm install cookie-parser

引用并配置
let cookieParser=require(‘cookie-parser’)
app.use(cookieParser())

使用

app.get('/',(req,res)=>{
   console.log(req.cookies);   //获取并输出cookies
   //res.cookie("admin","qaq")  /将数据存入cookie
   res.cookie("user","qaq",{maxAge:10000})//将数据存入cookie并设置过期时间。
    console.log(req.cookies.admin); //获取并输出你设置的cookie属性
})

Session 插件

session是将数据保存在服务器端的一种会话技术。
session的特点:安全性高,性能好,功能更强大。

直接三步走开整。

下载
npm install express-session

引用并配置

var session =require('express-session')
app.use(session({
    secret: 'admin',
    resave: false,
    saveUninitialized: true,
    cookie:{ maxAge:60000*10 }   // 因为session是基于cookie的
}))

使用

app.get('/',(req,res)=>{
  req.session.username='jack'; //设置session
  console.log(req.session.username);//获取并输出session
})

可以利用session进行判断用户是否是二次登录。

直接上代码

首先用户登陆后 req.session.isLogin = true;给session存入一个布尔值。
其次写一个判断方法,获取session值,如果为第一次登录那么直接跳转登录界面,如果已经登录则不需要跳转。
function checkLogin(req,res,next){
if(!req.session.isLogin){
// 没有登录
res.redirect("/admin/users/login")
// console.log(“没有登录”)
}
next();
}

配置路由
app.use(’/admin/index’, checkLogin);
app.use(’/admin/index’, admin);

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值