前言

很高兴我的node.js处女作开发完成了,目前还在优化完善阶段,经历两周的紧张沟通和开发,工作总算搞一段落。选用node.js 一是因为这次的业务逻辑相对来说简单想拿node练练手,二就是相对来说在处理高并发时比较有简单粗暴的优势,官方自己的话说处理百万级并发都很easy,这也是我跟解决方案经理吹牛的理由。

开发完几个问题

1、因为做项目的惯性,在连接数据库时就想分层,Dao或者Repository。那么在这次的node项目中我没有分层,因为连接是在app.js中打开并且通过中间件注入Express Request中,我不知道以什么方式把连接传入Dao层,当然也不太明确Dao层如何组织,也不太明确如何在路由.js文件中如何更好的调用Dao层。

       2、如果生产部署的话肯定是需要绑定域名的,那么目前最简单的绑定方式和部署方式是什么?(已了解到使用nginx来部署,但还没实践,同时也可以处理并发负载)。

用到的技术和知识点

1、Express框架(4.x)。没什么可说的MVC框架,node.js官方推荐的框架,最起码你用reqeust,response顺手很多。

        2、node.js连接Mysql。 在连接mysql时我用了一个插件express-myconnection,并且注册成中间件可以在每次请求的request那到connection,上一篇文章中总结过, 但随即我在评论中看到有人持反对态度,并且点了反对,他的理由是你做成中间件,那么每个路由请求中都会连接数据库。 随后我又查了官网和其他的一些资料,他们推荐是这样做的,并且解释到这样使用每个connection的生命周期也就是到response结束连接就会释放掉。

        

//app.js 

app.use(
connection(mysql, {
host: '127.0.0.1',
user: 'root',
password: '*****',
port: '3306',
database: 'db'
}, 'pool') //选择资源池,系统自己release connection to poll
); //routes/order.js
router.get('/cost', function(req, res, next) {
req.getConnection(function(err, conn) {
//处理你的数据逻辑
});
});

3、node.js 连接redis。连接redis直接使用createClient,使用不使用pool都可以。

var redis = require('redis'),
client = redis.createClient(); //选择数据库
client.select('0',function(err){}) //判断key是否存在
client.exists(key, function(err, result) {}) //设置hash set值
client.hmset(key,[],function(err,result){}) //获取hash set值
client.hgetall(key, function(err, obj) {}) //获取key value值
client.get(key, function(err, result) {}); //设置key value
client.set(key, opValue, function(err, result) {})

4、使用log4js。当然生产运行的接口程序少不了日志的运行。log4js还能配置发送邮件,但我没调通,仅仅是报错时看下log。

//做成json配置文件

{
"appenders": [
{ "type": "console", "category": "console" }, {
"type": "dateFile",
"filename": "d:/weblogs/logs/",
"pattern": "yyyyMMddhh.txt",
"absolute": true,
"alwaysIncludePattern": true,
"category": "logInfo"
}
],
"levels": { "logInfo": "DEBUG" }
} //调用
var log4js = require('log4js');
log4js.configure('./log4js.json');
var logger = log4js.getLogger('logInfo'); //错误日志
logger.err('测试日志'); //info日志
logger.info('测试日志');

我的Node.js处女作的更多相关文章

  1. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  2. 利用Node.js的Net模块实现一个命令行多人聊天室

    1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...

  3. Node.js:进程、子进程与cluster多核处理模块

    1.process对象 process对象就是处理与进程相关信息的全局对象,不需要require引用,且是EventEmitter的实例. 获取进程信息 process对象提供了很多的API来获取当前 ...

  4. Node.js:理解stream

    Stream在node.js中是一个抽象的接口,基于EventEmitter,也是一种Buffer的高级封装,用来处理流数据.流模块便是提供各种API让我们可以很简单的使用Stream. 流分为四种类 ...

  5. Node.js:Buffer浅谈

    Javascript在客户端对于unicode编码的数据操作支持非常友好,但是对二进制数据的处理就不尽人意.Node.js为了能够处理二进制数据或非unicode编码的数据,便设计了Buffer类,该 ...

  6. node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法

    1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...

  7. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

  8. Node.js入门(一)

    一.Node.js本质上是js的运行环境. 二.可以解析js代码(没有浏览器安全级的限制): 提供系统级的API:1.文件的读写 2.进程的管理 3.网络通信 三.可以关注的四个网站: 1.https ...

  9. Node.js学习笔记——Node.js开发Web后台服务

    一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...

随机推荐

  1. DSY2933*地图

    Description   一个人口统计办公室要绘制一张地图.由于技术的原因只能使用少量的颜色.两个有相同或相近人口的区域在地图应用相同的颜色.例如一种颜色k,则A(k) 是相应的数,则有: 在用颜色 ...

  2. SQl SGA 整理

    --查看诊断位置信息 select * from v$diag_info; --查看sga中内存分配信息 select * from sys.x$ksmfs; --查看内存块还剩余多少 select ...

  3. MySQL5.6 GTID新特性实践

    MySQL5.6 GTID新特性实践 GTID简介 搭建 实验一:如果slave所需要事务对应的GTID在master上已经被purge了 实验二:忽略purged的部分,强行同步 本文将简单介绍基于 ...

  4. Asp.Net Core 发布和部署( MacOS + Linux + Nginx )

    前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在Linux中,对 Asp.Net Core 的程序进行发布和部署. 有关如何在 Jexus 中进行部署,请 ...

  5. Remote Desktop Connection Manager

    通过Remote Desktop Connection Manager(RDCMan),当前最新版本是 v2.7. 通过这款软件,我们便可以轻松的管理和访问数个RDP.左边的列表中我们可以创建总的分区 ...

  6. 8天掌握EF的Code First开发系列之动手写第一个Code First应用

    返回<8天掌握EF的Code First开发>总目录 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 自我测试 上一篇<8 ...

  7. Code First开发系列实战之使用EF搭建小型博客平台

    返回<8天掌握EF的Code First开发>总目录 本篇目录 理解应用需求 数据库设计 创建实体数据模型 创建实体类 创建关系和导航属性 实现DbContext类 执行数据访问 理解仓储 ...

  8. 开发必备的Windows小技巧

    在Windows中我们经常会遇到各种小问题,而这些小问题又确实在影响着工作效率,如果能解决这些小问题,那么就能在一定程度上提高工作效率,保证心情愉悦.今天我就来分享一下几个自认为比较有用的小技巧. 保 ...

  9. TDR分辨率

    在日常的生活工作中,有很多测试测量的工具,比如测量长度的尺子,计量时间的钟表等等,谈到测试测量工具的时候,分辨率是关键指标之一,比如尺子的 分辨率是1mm,时钟的分辨率是秒.所谓分辨率就是测试测量工具 ...

  10. GitHub iOS-Top 100 简介

    GitHub排名前100的iOS第三方汇总简介,方便开发者选择适合的第三方框架. 项目名称 项目信息 1. AFNetworking 作者是 NSHipster 的博主, iOS 开发界的大神级人物, ...