基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析

基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析

书店案例分析的实现,我们将使用Node.js作为编写后端服务器的JavaScript运行时,MongoDB作为数据存储和检索的数据库,AngularJS和Bootstrap框架作为前端实现工具。

步骤一:在个人电脑上安装与配置上述所需软件(以windows系统为例)。

  1. 安装Node.js
    从https://nodejs.org/en/ 下载node.js,根据提示一步步安装。

  2. 安装MongoDB
    从https://www.mongodb.com/download-center下载最新的版本,同样,根据提示一步步安装。

  3. 初始化项目
    启动命令行窗口(Windows系统按 Win-R 键同时按下,输入“cmd”并按 Enter 键即可),然后进入到一个空白的文件夹下,输入 npm init 命令,按照提示输入相应参数。

  4. 安装所需依赖
    在该文件下输入 npm install --save express body-parser mongodb 等依赖模块安装。安装模块非常消耗时间,用户需耐心等候,直到依赖模块都成功安装。

  5. 编写配置文件
    打开 package.json,添加一些自定义命令和依赖,如下:

"scripts": {
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
    "body-parser": "^1.17.2",
    "express": "^4.15.3",
    "mongodb": "^2.2.31"
}
  1. 编写服务端代码
    创建 server.js 文件,通过调用依赖的包实现后台逻辑。
var express = require('express');
var bodyParser = require('body-parser');
var mongodb = require('mongodb');

var app = express(); 
app.use(bodyParser()); 

const MongoClient = require('mongodb').MongoClient; 
const url = 'mongodb://localhost:27017/bookstore'; 
MongoClient.connect(url, function (err, db) {
    if (err) throw err;
    console.log("Connected successfully to server");

    app.post('/api/createBook', function (req, res) {
        var obj = {
            "name": req.body["name"],
            "author": req.body["author"],
            "publisher": req.body["publisher"],
            "ISBN": req.body["ISBN"],
            "price": req.body["price"],
            "count": req.body["count"],
        };
        db.collection("books").insertOne(obj, function (err, resp) {
            if(err) throw err;
            res.json({ status: 200, message: "successs" });
        });
    })

    app.get('/api/getAllBooks', function (req, res) {
        db.collection("books").find().toArray(function (err, result) {
            if (err) throw err;
            res.json(result);
        });
    });

    app.listen(3000, function () {
        console.log('Example app listening on port 3000!');
    });
});

然后通过输入 node server.js 启动服务

  1. 编写客户端代码。
    在 index.html 页面中引入Bootstrap以及AngularJS等样式和效果,然后编写相应的JavaScript代码。
<!DOCTYPE html>
<html ng-app="myApp">
<head>
    <title>Bookstore</title>
    <script src="https://cdn.bootcss.com/angular.js/1.6.4/angular.min.js"></script>
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet">
</head>

<body ng-controller="bookCtrl">
    <div class="container">
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>图书名</th>
                    <th>作者</th>
                    <th>出版社</th>
                    <th>ISBN</th>
                    <th>价格</th>
                    <th>库存</th>
                    <th>编辑</th>
                </tr>
            </thead>
            <tbody>
                <tr ng-repeat="x in books">
                    <td>{{ x.name }}</td>
                    <td>{{ x.author }}</td>
                    <td>{{ x.publisher }}</td>
                    <td>{{ x.ISBN }}</td>
                    <td>{{ x.price }}</td>
                    <td>{{ x.count }}</td>
                    <td><button ng-click="update(x._id)">编辑</button></td>
                </tr>

            </tbody>
        </table>

        <button ng-click="create()">添加新书</button>
    </div>


    <script>
        var app = angular.module('myApp', []);
        app.controller('bookCtrl', function ($scope, $http) {
            $scope.books = [];

            $http.get("/api/getAllBooks").then(function (response) {
                $scope.books = response.data;
            });

            $scope.create = function () {
                var payload = {
                    "name": "新书籍",
                    "author": "作者",
                    "publisher": "出版社",
                    "ISBN": Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5),
                    "price": parseFloat(Math.random() * 100).toFixed(2),
                    "count": parseInt(Math.random() * 100),
                };

                $http.post("/api/createBook", payload).then(function (response) {
                    $http.get("/api/getAllBooks").then(function (response) {
                        $scope.books = response.data;
                    });
                });
            }

            $scope.update = function (id) {
                alert(id);
            }
        });
    </script>
</body>

</html>

通过浏览器打开该HTML文件,可以看到表格中已经展示出了部分图书信息,并可以通过添加新书功能进行图书添加。

以上所述均为书店案例分析的完整攻略,如果需要更多的样例,请查看实际开发过程中的具体需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Linux系统安装docker并用ssh登录docker容器的操作方法

    下面是Linux系统安装docker并用ssh登录docker容器的操作方法的攻略,包含以下步骤及示例说明: 安装 Docker 1.首先,需要确认是否已经安装了 Docker,可以使用以下命令检查: docker version 如果已经安装了 Docker 会输出相应的版本信息,否则会提示未找到命令。 使用以下命令安装最新版本的 Docker: sudo…

    人工智能概览 2023年5月25日
    00
  • Windows设置nginx开机自启动的方法

    当我们使用 Windows 操作系统来配置 Nginx 服务器时,每次重启系统时都需要手动启动 Nginx,非常麻烦。因此,设置 Nginx 开机自启动是非常必要的。下面是 Windows 设置 Nginx 开机自启动的完整攻略: 第一步:创建一个 Nginx 开机启动的 .bat 文件 在任何一个地方创建一个新的文本文件,比如说在桌面上。 将下面这行命令复…

    人工智能概览 2023年5月25日
    00
  • Nginx配置之实现多台服务器负载均衡

    下面是实现多台服务器负载均衡的完整攻略。 1. 安装配置Nginx 首先,我们需要安装 Nginx,并进行配置。可以使用以下命令在 Debian / Ubuntu 上安装 Nginx: sudo apt update sudo apt install nginx -y 安装完成后,您将在以下位置找到 Nginx 的主配置文件: /etc/nginx/ngin…

    人工智能概览 2023年5月25日
    00
  • tensorflow 实现从checkpoint中获取graph信息

    为了实现从checkpoint中获取TensorFlow的Graph信息,可以使用TensorFlow提供的tf.train.import_meta_graph()和tf.train.Saver()两个函数结合起来。具体步骤如下: 加载checkpoint模型 import tensorflow as tf checkpoint_path = "m…

    人工智能概论 2023年5月24日
    00
  • IDEA 重新导入依赖maven 命令 reimport的方法

    以下是“IDEA 重新导入依赖maven 命令 reimport的方法”的完整攻略: 什么是依赖? 在开发过程中,我们常常需要引用各种第三方库(例如 JDK、Spring 框架等),这些库就称为依赖(dependencies)。Maven 是一个Java 项目管理工具,可以自动化地管理项目依赖。开发者只需要在 Maven 的配置文件 pom.xml 中指定依…

    人工智能概览 2023年5月25日
    00
  • Django框架实现分页显示内容的方法详解

    Django框架实现分页显示内容的方法详解 在网页开发中,经常需要对数据进行分页显示,Django框架也提供了非常便捷的分页功能,本文将详细介绍Django框架实现分页显示内容的方法。 一、分页原理 分页实质是对数据进行分段显示。对于数据量大的应用,直接将所有数据渲染在一个页面会导致加载过慢,加载时间长,用户体验度下降等问题,因此需要将数据进行分页显示。 D…

    人工智能概论 2023年5月25日
    00
  • Android开发教程之获取系统输入法高度的正确姿势

    Android开发教程之获取系统输入法高度的正确姿势 在Android开发中,有时候需要获取系统输入法的高度,以便处理界面上控件的布局。但是由于不同版本的系统输入法可能存在差异,因此需要采用正确的方法获取系统输入法的高度。 使用ViewTreeObserver实时监听输入法高度变化 在Activity的onCreate方法中可以通过ViewTreeObser…

    人工智能概览 2023年5月25日
    00
  • C# 定义常量 两种实现方法

    C# 中定义常量有两种实现方法: 方法一:使用 const 关键字 使用 const 关键字可以定义常量,const 只能用来修饰值类型、枚举类型和字符串类型,不能用来修饰类和结构体等引用类型。常量定义后不能修改,必须在定义时进行初始化赋值,下面是一个使用 const 关键字定义常量的示例: using System; class Program { sta…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部