GVKun编程网logo

电商后台管理系统——通过node 创建 web服务器(使用node构建web服务器)

14

本文将带您了解关于电商后台管理系统——通过node创建web服务器的新内容,同时我们还将为您解释使用node构建web服务器的相关知识,另外,我们还将为您提供关于10个开源WEB后台管理系统、node

本文将带您了解关于电商后台管理系统——通过node 创建 web服务器的新内容,同时我们还将为您解释使用node构建web服务器的相关知识,另外,我们还将为您提供关于10个开源WEB后台管理系统、node 创建静态web服务器(上)、Node.js WEB服务器(1)——编写简单的HTTP服务器、node.js+koa搭建一个简单后台管理系统的实用信息。

本文目录一览:

电商后台管理系统——通过node 创建 web服务器(使用node构建web服务器)

电商后台管理系统——通过node 创建 web服务器(使用node构建web服务器)

一  点睛

创建node 项目,并安装express,通过express快速创建web服务器,将vue打包生成dist文件夹,托管为静态资源即可,关键代码如下。
const express = require(''express'')
// 创建 web 服务器
const app = express()
// 托管静态资源
app.use(express.static(''./dist''))
// 启动 web服务器
app.listen(80,()=>{
    console.log(''''web server running at http:127.0.01)
})

二 具体步骤

1 新建 vue_shop_server 项目。

2 执行如下命令,初始化包管理配置文件

F:\vue\vue_shop_server>npm init -y

3 安装 express 第三方包

F:\vue\vue_shop_server>npm i express -S

4 将 vue 项目打包生成的 dist 文件夹,拷贝到 vue_shop_server 目录下

5 新建 app.js

const express = require(''express'')
// 创建 web 服务器
const app = express()
// 托管静态资源
app.use(express.static(''./dist''))
// 启动 web服务器
app.listen(80, () => {
    console.log(''web server running at http://127.0.0.1'')
})

6 启动服务

F:\vue\vue_shop_server>node app.js
web server running at http://127.0.0.1

7 测试

 

10个开源WEB后台管理系统

10个开源WEB后台管理系统

1. vue-Element-Admin

vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18n 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。

Github Star 数 43519, Github 地址:https://github.com/PanJiaChen/vue-element-admin
在线演示地址:https://panjiachen.github.io/vue-element-admin
————————————————
版权声明:本文为CSDN博主「梅川酷紫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenjun9205/article/details/102702500

 

 

2. AdminLTE

AdminLTE-是一个完全响应的管理模板。基于Bootstrap 3和4框架。高度可定制且易于使用。适合从小型移动设备到大型台式机的多种屏幕分辨率。

Github Star 数 31420 , Github 地址:https://github.com/ColorlibHQ/AdminLTE
在线演示地址:https://adminlte.io/themes/AdminLTE/index2.html
————————————————
版权声明:本文为CSDN博主「梅川酷紫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenjun9205/article/details/102702500

 

 

 

3. tabler

具有响应式和高质量UI的高级和开源仪表板模板。

Github Star 数 19729, Github 地址:https://github.com/tabler/tabler
在线演示地址:https://preview-dev.tabler.io/

 

 

 

4. ngx-admin

基于于Angular 8+和Nebular的管理模板

Github Star 数 18782, Github 地址:https://github.com/akveo/ngx-admin
在线演示地址:http://akveo.com/ngx-admin/
————————————————
版权声明:本文为CSDN博主「梅川酷紫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenjun9205/article/details/102702500

 

 

 

 

5. Gentelella

Gentelella Admin是可免费使用的Bootstrap管理模板。该模板使用默认的Bootstrap 3样式以及各种功能强大的jQuery插件和工具来创建用于创建管理面板或后端仪表板的功能强大的框架。

Theme使用多个库来保存图表,日历,表单验证,向导样式界面,画布外导航菜单,文本表单,日期范围,上载区域,表单自动完成功能,范围滑块,进度条,通知等。

Github Star 数 18098, Github 地址:https://github.com/ColorlibHQ/gentelella
在线演示地址:https://colorlib.com/polygon/gentelella/index.html
————————————————
版权声明:本文为CSDN博主「梅川酷紫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenjun9205/article/details/102702500

 

 

 

node 创建静态web服务器(上)

node 创建静态web服务器(上)

声明:本文仅用来做学习记录。

本文将使用node创建一个简单的静态web服务器。

准备工作:

首先,准备好一个类似图片中这样的页面

 

第一步:

创建 http 服务:

const http = require(''http'');  // 加载http服务模块

let server = http.createServer((req, res) => {
    res.writeHead(200, {''Content-Type'': ''text/html;charset=utf-8''});
    res.end();   // 结束响应
})

server.listen(3000);  // 设置端口号

第二步:

获取 url , 我们要获取类似这样的url ,来展示对应的内容

http://localhost:3000/index.html
let pathName = req.url;
 console.log(pathName);  // /index.html   /favicon.ico

这里,我们发现发送了两次请求,而 /favicon.ico 这个请求,我们是不需要的,所以,需要过滤掉。

同时,我们需要对空地址做处理,所以,代码如下:

if (pathName == ''/'') {
      pathName = ''/index.html'';  // 如果请求地址为空,则加载首页
  }

  if (pathName != ''/favicon.ico'') {  // 当不请求 页面图标时
        
  }

接下来,我们需要读取服务器文件,首先加载 fs 模块

const fs = require(''fs'')

然后,如果请求的页面没有找到,则加载404页面:

if (pathName != ''/favicon.ico'') {  // 当不请求 页面图标时
        fs.readFile(''static/'' + pathName, (err, data) => {  // 读取对应文件
            if (err) {  // 如果没有找到文件
                fs.readFile(''static/404.html'', (err, data404) => {  // 则加载 404 页面
                    if (err) {
                        console.log(''404'');
                    } else {
                        res.writeHead(404, {''Content-Type'': ''text/html;charset=utf-8''});  // 设置请求状态及表头
                        res.write(data404);  // 读取数据
                        res.end();   // 结束响应
                    }
                })
            }
        })
    return false;
}

找到则加载对应页面:

else {
        res.writeHead(200, {''Content-Type'': ''text/html;charset=utf-8''});  // 设置请求状态及表头
        res.write(data);  // 读取数据
        res.end();   // 结束响应
    }

此时,我们已经可以看到效果如下:

但是,因为我们将所有请求的文件表头都设置为 

''Content-Type'': ''text/html;charset=utf-8''

这显然是错误的做法,比如,css 文件, 我们应设置为 ''text/css''  , js文件 , 设置为  ''text/javascript'' 。

下面,我们先创建一个文件夹,我将它命名为model,在该文件夹下创建一个js文件 getMime

代码如下:

const getMime = (extname) => {
    switch (extname) {
        case ''.html'':
            return ''text/html'';
        case ''.css'':
            return ''text/css'';
        case ''.js'':
            return ''text/javascript'';
        default:
            return ''text/html'';
    }
}
module.exports = {
    getMime
}

然后,加载该文件

const mimeModel = require(''./model/getMime'') // 加载getMime

我们要根据对应的请求的文件后缀名,来设置对应的文件格式,这里,我们需要引入 path模块

再用path.extname()方法,获取到对应的后缀名,

代码如下:

const http = require(''http'');  // 加载http服务模块
const fs = require(''fs'');      // 加载fs模块
const path = require(''path'');  // 加载path模块
const mimeModel = require(''./model/getMime'') // 加载getMime

let server = http.createServer((req, res) => {

    let pathName = req.url;
    console.log(pathName);

    if (pathName == ''/'') {
        pathName = ''/index.html'';  // 如果请求地址为空,则加载首页
    }
    let extName = path.extname(pathName);  // 获取请求文件的后缀名
    if (pathName != ''/favicon.ico'') {  // 当不请求 页面图标时
        fs.readFile(''static/'' + pathName, (err, data) => {  // 读取对应文件
            if (err) {  // 如果没有找到文件
                fs.readFile(''static/404.html'', (err, data404) => {  // 则加载 404 页面
                    if (err) {
                        console.log(''404'');
                    } else {
                        res.writeHead(404, {''Content-Type'': ''text/html;charset=utf-8''});  // 设置请求状态及表头
                        res.write(data404);  // 读取数据
                        res.end();   // 结束响应
                    }
                })
                return false;
            } else {
                let mime = mimeModel.getMime(extName);  // 根据对应的后缀名,获取对应的文件格式
                res.writeHead(200, {''Content-Type'': "" + mime + ";charset=''utf-8''"});  // 设置请求状态及表头
                res.write(data);  // 读取数据
                res.end();   // 结束响应
            }
        })
    }

})

server.listen(3000);  // 设置端口号

 

结果如图所示:

 

但是,对应的图片并未加载进来,这是因为

 

这两个文件未加载,原因是请求地址后带参数,无法识别,所以,我们需要再引入url模块,使用url.parse()方法,将该地址解析为不带参数的地址

最后,完整代码如下:

const http = require(''http'');  // 加载http服务模块
const fs = require(''fs'');      // 加载fs模块
const path = require(''path'');  // 加载path模块
const url = require(''url'');    // 加载url模块
const mimeModel = require(''./model/getMime'') // 加载getMime

let server = http.createServer((req, res) => {

    let pathName = url.parse(req.url).pathname; // 解析请求地址不带参数
    console.log(pathName);

    if (pathName == ''/'') {
        pathName = ''/index.html'';  // 如果请求地址为空,则加载首页
    }
    let extName = path.extname(pathName);  // 获取请求文件的后缀名
    if (pathName != ''/favicon.ico'') {  // 当不请求 页面图标时
        fs.readFile(''static/'' + pathName, (err, data) => {  // 读取对应文件
            if (err) {  // 如果没有找到文件
                fs.readFile(''static/404.html'', (err, data404) => {  // 则加载 404 页面
                    if (err) {
                        console.log(''404'');
                    } else {
                        res.writeHead(404, {''Content-Type'': ''text/html;charset=utf-8''});  // 设置请求状态及表头
                        res.write(data404);  // 读取数据
                        res.end();   // 结束响应
                    }
                })
                return false;
            } else {
                let mime = mimeModel.getMime(extName);  // 根据对应的后缀名,获取对应的文件格式
                res.writeHead(200, {''Content-Type'': "" + mime + ";charset=''utf-8''"});  // 设置请求状态及表头
                res.write(data);  // 读取数据
                res.end();   // 结束响应
            }
        })
    }

})

server.listen(3000);  // 设置端口号

结果如图:

但,此时,这个简单的静态web服务器只能识别 html,css,js 文件,比如图片的格式,也是 ''text/html'',这显然是不正确的,所以,仍需再做处理,下节再做介绍。

Node.js WEB服务器(1)——编写简单的HTTP服务器

Node.js WEB服务器(1)——编写简单的HTTP服务器

 基于分而治之的思想,很多架构都会采用分层的模式来处理某类应用。Node.js在Web开发上也是采用这种模式,分别提供了如下的三个层:

     Node核心

     社区模块

     应用逻辑

下面是一个最简形式的web服务器,服务器收到每个请求后,会向浏览器返回 Hello World

var http = require(''http'') ;
var server = http.createServer( function(req , res){
var body = ''Hello World '' ;
res.setHeader(''Content-Length'', body.length) ;
res.setHeader(''Contetn-Type'',''text/html'') ;
res.statusCode = 200 ; res.end ( body
) ; }) ; server.listen(3000) ;

  服务器每收到一条HTTP请求,都会用新的reqres对象触发请求回调函数。在触发回调函数之前, Node会解析请求的HTTP头,并将它们作为req对象的一部分提供给请求回调。Node不会在回调函数被触发之前开始对请求体的解析。 

  Node不会自动往客户端写任何响应。在调用完请求回调函数之后,就要由你负责用res.end()方法结束响应了 。 这样在结束响应之前,你可以在请求的生命期内运行任何你想运行的
异步逻辑。如果你没能结束响应,请求会挂起,直到客户端超时,或者它会一直处于打开状态。

      Node服务器是长期运行的进程,在它的整个生命期里,它会处理很多请求。
  搭建HTTP服务器仅仅是个开始。你还需要知道如何设定响应状态码和响应头中的字段,如何正确处理异常,以及如何使用Node提供的API


 

node.js+koa搭建一个简单后台管理系统

node.js+koa搭建一个简单后台管理系统

node.js+koa搭建一个简单后台管理系统

相关推荐:《nodejs 教程》

利用node.js 实现一个后台管理系统。node.js 常用框架express、koa。此项目用koa。

步骤

第一步:全局安装node.js

第二步:在本地建立项目目录。

第三步:安装本地依赖:npm i koa koa-views koa-static koa-router koa-body pug -S

第四步:项目启用:nodemon app.js
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目实现的功能:

新闻列表的展示

  • 分页功能
  • 点击单条展示页可以跳转到详情页
  • 新闻的上传

需要注意的地方:

  • 视图层用的pug模版,因此要把html转换为pug格式,抓换方式https://html2jade.org/
  • pug 模板里面,’|’ 表示转义
  • 因为是异步的,这里需要用到aysnc await
  • 注意form表单的enctype
  • node.js 上传的使用

源码

https://github.com/sunshine5856/newList/tree/hqq

更多编程相关知识,请访问:编程教学!!

以上就是node.js+koa搭建一个简单后台管理系统的详细内容,更多请关注php中文网其它相关文章!

我们今天的关于电商后台管理系统——通过node 创建 web服务器使用node构建web服务器的分享已经告一段落,感谢您的关注,如果您想了解更多关于10个开源WEB后台管理系统、node 创建静态web服务器(上)、Node.js WEB服务器(1)——编写简单的HTTP服务器、node.js+koa搭建一个简单后台管理系统的相关信息,请在本站查询。

本文标签: