webpack+vue+nodejs+mysql+express

一、前言

(可忽略的废话,悄咪咪躲起来)

        最近想复习一下express,所以就用express和mysql作为后端,用vue实现前端页面练练手啦。

啦啦啦啦啦啦,好啦,进入主题。

二、环境搭建

1、在项目根目录下npm init

2、npm install vue --save[或者-s]

3、接下来weback上场,vue init webpack 项目名

4、下面可自己配置需要的依赖和执行指令,往下看哈

"scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "unit": "jest --config test/unit/jest.conf.js --coverage",
    "e2e": "node test/e2e/runner.js",
    "test": "npm run unit && npm run e2e",
    "lint": "eslint --ext .js,.vue src test/unit test/e2e/specs",
    "build": "node build/build.js"
  },
  "dependencies": {
    "vue": "^2.5.2",
    "vue-router": "^3.0.1"
  },
  "devDependencies": {
    "autoprefixer": "^7.1.2",
    "axios": "^0.18.0",
    "babel-core": "^6.22.1",
    "babel-eslint": "^8.2.1",
    "babel-helper-vue-jsx-merge-props": "^2.0.3",
    "babel-jest": "^21.0.2",
    "babel-loader": "^7.1.1",
    "babel-plugin-dynamic-import-node": "^1.2.0",
    "babel-plugin-syntax-jsx": "^6.18.0",
    "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
    "babel-plugin-transform-runtime": "^6.22.0",
    "babel-plugin-transform-vue-jsx": "^3.5.0",
    "babel-preset-env": "^1.3.2",
    "babel-preset-stage-2": "^6.22.0",
    "babel-register": "^6.22.0",
    "body-parser": "^1.18.3",
    "chalk": "^2.0.1",
    "chromedriver": "^2.27.2",
    "copy-webpack-plugin": "^4.0.1",
    "cross-spawn": "^5.0.1",
    "css-loader": "^0.28.0",
    "eslint": "^4.15.0",
    "eslint-config-standard": "^10.2.1",
    "eslint-friendly-formatter": "^3.0.0",
    "eslint-loader": "^1.7.1",
    "eslint-plugin-import": "^2.7.0",
    "eslint-plugin-node": "^5.2.0",
    "eslint-plugin-promise": "^3.4.0",
    "eslint-plugin-standard": "^3.0.1",
    "eslint-plugin-vue": "^4.0.0",
    "extract-text-webpack-plugin": "^3.0.0",
    "file-loader": "^1.1.4",
    "friendly-errors-webpack-plugin": "^1.6.1",
    "html-webpack-plugin": "^2.30.1",
    "jest": "^22.0.4",
    "jest-serializer-vue": "^0.3.0",
    "nightwatch": "^0.9.12",
    "node-notifier": "^5.1.2",
    "optimize-css-assets-webpack-plugin": "^3.2.0",
    "ora": "^1.2.0",
    "portfinder": "^1.0.13",
    "postcss-import": "^11.0.0",
    "postcss-loader": "^2.0.8",
    "postcss-url": "^7.2.1",
    "rimraf": "^2.6.0",
    "selenium-server": "^3.0.1",
    "semver": "^5.3.0",
    "shelljs": "^0.7.6",
    "uglifyjs-webpack-plugin": "^1.1.1",
    "url-loader": "^0.5.8",
    "vue-jest": "^1.0.2",
    "vue-loader": "^13.3.0",
    "vue-style-loader": "^3.0.1",
    "vue-template-compiler": "^2.5.2",
    "webpack": "^3.6.0",
    "webpack-bundle-analyzer": "^2.9.0",
    "webpack-dev-server": "^2.9.1",
    "webpack-merge": "^4.1.0"
  },

5、开始安装我们的依赖npm install,成功后就有那啥node_modules文件夹了

这些操作完成后我们的项目结构是这样滴

webpack+vue+nodejs+mysql+express_第1张图片

(各位看官先忽略.vscode(用于vsCode的工作区设置),server(用于后续的访问数据库)).........

6、如果你想个性一点,狂野一点,那么你可能想换一下运行的端口,那就请看下面吧

webpack+vue+nodejs+mysql+express_第2张图片webpack+vue+nodejs+mysql+express_第3张图片

(nin请随意哈)

哇,完成了哎,开心得像个200斤重的孩子,哼,我本来就是孩子呀[傲娇.jpg](哦,对了,运行就简单粗暴npm run start哦)

二、访问数据库

1、先在项目根目录下新建一个server文件夹,这可是包罗万象的好东西呀

2、server的文件结构

webpack+vue+nodejs+mysql+express_第4张图片

(这这这,可爱的、优雅的、。。。。我实在想不出其他夸他的词语了,帮我想两个?文件结构)

3、里面各文件的内容(可根据实际情况大家自行修改哈,别客气,随便改)a(第一声),对了要先npm install mysql --save-devnpm install express --save-dev

(1)useApi.js

var models = require('../db');
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var $sql = require('../sqlMap');

// 连接数据库
var conn = mysql.createConnection(models.mysql);

conn.connect();
var jsonWrite = function(res, ret) {
    if(typeof ret === 'undefined') {
        res.json({
            code: '1',
            msg: '操作失败'
        });
    } else {
        res.json(ret);
    }
};

// 增加用户接口
router.post('/addUser', (req, res) => {
    var sql = $sql.user.add;
    var params = req.body;
    console.log(params);
    conn.query(sql, [params.username, params.dept_name], function(err, result) {
        if (err) {
            console.log(err);
        }
        if (result) {
            jsonWrite(res, result);
        }
    })
});

//student表的所有字段
router.post('/selectStudent', (req,res) => {
    var sql=$sql.user.select;
    conn.query(sql, function(err,result) {
        if (err) {
            console.log(err);
        }
        if (result) {
            jsonWrite(res, result);
        }
    })
})

module.exports = router;

(2)db.js

// 数据库连接配置
module.exports = {
    mysql: {
        host: 'localhost',
        user: 'root',
        password: '写..上..你..自..己..密..码..就这样',
        database: 'test',
        port: '3306'
    }
}

(3)index.js

// node 后端服务器

const userApi = require('./api/userApi');
const fs = require('fs');
const path = require('path');
const bodyParser = require('body-parser');
const express = require('express');
const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
// 后端api路由
app.use('/api/user', userApi);

// 监听端口
app.listen(3000);
console.log('success listen at port:3000......');

(4)sqlMap.js

// sql语句
var sqlMap = {
    // 用户
    user: {
        add: 'insert into student(id, name, dept_name) values (100, ?, ?)',
        select:'select * from student'
    }
}

module.exports = sqlMap;

又完成了我人生中的又一那啥。。。(这一部分代码其他我也是大部分copy的)

三、不知道起什么名字了,算了算了

1、开启mysql服务哈,

webpack+vue+nodejs+mysql+express_第5张图片

(你可以选择像我这样优雅帅气的打开方式,聊不下去了哇,尬聊吧,可忽略下面一句)

2、运行您刚刚写的那些不知道是什么的东西

e,e,e,e饿

(出现这个你就是最胖的)

3、接下来好像我们的页面就可以访问他了呢

您的小可爱跑了

4、刷新页面,可是好像报错了诶,报了什么错我也忘了,最后来一个访问路径代理,还是原来那个你,jio是那个刚刚改端口的文件

webpack+vue+nodejs+mysql+express_第6张图片

这应该可以了吧,不管了,我要溜了(记得刷新哈)

 

你可能感兴趣的:(webpack+vue+nodejs+mysql+express)