博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nodejs教程26:Node.js项目之一:创建目录,环境配置,连接数据库
阅读量:7052 次
发布时间:2019-06-28

本文共 2877 字,大约阅读时间需要 9 分钟。

阅读更多系列文章请访问我的,示例代码请访问。

Node.js项目介绍

利用学到的知识,实现一个简单但实用的小项目如下:

这是一个商品列表,具有展示商品信息,添加商品,删除商品的功能。

项目的文件夹结构

├── package.json

├── server.js # 服务器代码
├── config # 项目配置文件夹
│ ├── config.dev.js # 开发环境配置
│ ├── config.prod.js # 生产环境配置
│ ├── index.js # 导出当前所处环境及配置 ├── libs # 项目工具文件夹
│ ├── database.js # 连接数据库
│ ├── http.js # 服务器配置
│ ├── router.js # 处理路由
├── router # 项目路由配置文件夹
│ ├── index.js # 连接数据库
│ ├── list.js # 获取商品列表接口配置
│ ├── add.js # 增加商品接口配置
│ ├── del.js # 删除商品接口配置
├── static # 静态资源文件夹
│ ├── index.html # 前端HTML页面
│ ├── js # 前端JavaScript文件夹
│ ├── css # 前端CSS文件夹
│ ├── fonts # 前端字体文件夹
│ ├── upload # 前端上传文件夹

判断当前所处环境

通常项目在开发环境和生产环境要采用不同的,服务器、账号、域名、端口等配置,如果用人工进行切换操作麻烦且容易出错,因此通常使用环境变量进行判断。

首先引入process模块const process=require('process'),该模块提供了当前Node.js进程的信息。

  1. 可以通过process.env环境变量获取开发环境和生产环境系统等参数差异,如开发环境运行在Windows系统上,而生产环境运行在Linux系统,那么就可以使用process.env.OS === 'Windows_NT'判断当前所处的是否开发环境。
const mode = process.env.OS === 'Windows_NT' ? 'env' : 'prod'复制代码
  1. 也可以通过package.json中配置的启动命令判断处于开发还是生产环境,如开发环境命令npm start --dev和生产环境命令npm run build --build
const mode = process.argv[2] === '--dev' ? 'env' : 'prod'复制代码

初始化开发和生产环境配置

在/config/index.js中,判断所处的环境,并将相应环境的标识和参数作为模块导出。开发过程中,可以直接引用相应的配置使用。

示例代码:/lesson26/config/index.js

const process = require('process')// 可以通过开发环境和生产环境系统等参数差异,判断处于哪个环境。// const mode = process.env.OS === 'Windows_NT' ? 'env' : 'prod'// 也可以通过package.json中配置的启动命令判断处于开发还是生产环境。const mode = process.argv[2] === '--dev' ? 'env' : 'prod'module.exports = {  mode, // 当前所处环境  ...(mode === 'env' ? require('./config.dev') : require('./config.prod'))  // 当前环境的配置}复制代码

以开发环境为例,需要使用的配置为服务器域名、端口号、账号、密码、数据库名,以及HTTP端口、静态文件绝对路径、上传文件保存绝对路径,如下:

示例代码:/lesson26/config/config.dev.js

module.exports = {  // 数据库配置  DB_HOST: 'localhost',  DB_PORT: 3306,  DB_USER: 'root',  DB_PASS: '',  DB_NAME: 'test',  // HTTP端口  HTTP_PORT: 8080,  // 静态文件绝对路径  HTTP_ROOT: path.resolve(__dirname, '../static/'),  // 上传文件保存绝对路径  HTTP_UPLOAD: path.resolve(__dirname, '../static/upload')}复制代码

连接数据库

在lib文件夹下,创建database.js,用于连接数据库。

示例代码:/lesson26/lib/database.js 示例数据库:

// 引入mysql和co-mysql,用于连接数据库const mysql = require('mysql')const coMysql = require('co-mysql')// 引入数据库配置const {  DB_HOST,  DB_PORT,  DB_USER,  DB_PASS,  DB_NAME} = require('../config')// 1. 创建服务器连接池const pool = mysql.createPool({  host: DB_HOST,  port: DB_PORT,  user: DB_USER,  password: DB_PASS,  database: DB_NAME})// 2. 使用co-mysql包装连接池,将连接转换为Async/Await异步方式const connection = coMysql(pool)// 3. 作为模块导出使用module.exports = connection复制代码

创建数据库连接后,可以在server.js中,创建一个数据库连接,并查看item_table表的数据。

const connection = require('./lib/database');(async () => {  // 查询item_table表中的数据  const response = await connection.query(`SELECT * FROM item_table`)  console.log(response)})()复制代码

若正常连接,即可打印数据如下:

[ RowDataPacket { ID: 1, title: '运动服', price: 299, count: 998 } ]ice: 199, count: 999 },  RowDataPacket { ID: 2, title: '运动裤', price: 299, count: 998 } ]复制代码

转载地址:http://uevol.baihongyu.com/

你可能感兴趣的文章
解决mysql无法导入本地文件的问题
查看>>
iOS中block介绍(四)揭开神秘面纱(下)
查看>>
Tomcat启动权限
查看>>
一步一步學習partitions之hash partitions
查看>>
POJ 1061 青蛙的约会 扩展欧几里得
查看>>
java中堆(heap)和堆栈(stack)
查看>>
第五天:Before -- CMD
查看>>
Docker软件安装系列。
查看>>
我的友情链接
查看>>
LeetCode-330.Patching Array
查看>>
Linux下用Java获取本机IP
查看>>
Eclipse的Spring库导入
查看>>
velocity 判断 变量 是否不是空或empty
查看>>
获得数据库自动生成的主键
查看>>
Hibernate缓存机制
查看>>
【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索
查看>>
android 7.1 调用相机崩溃解决办法
查看>>
------第二节-----------------第二讲----单链表的基本操作---------
查看>>
delegate代理设计模式
查看>>
花10分钟搞懂开源框架吧 - 【NancyFx.Net】
查看>>