`
iaiai
  • 浏览: 2195307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

node js搭建和实例

 
阅读更多
我的电脑是mac电脑,所以只写mac电脑上的流程,关于windows上的流程其实也差不多了

1.去官网下载node js最新版本,并安装
http://nodejs.cn/

2.去网上下载WebStorm,下载安装,地址忘了

3.用WebStorm建node js项目

4.下载插件
      npm install ejs                    //这个是支持直接写html,用jade太郁闷了换
      //npm install mysql               //数据库连接(先不用这个用下面那个)
      npm install libxmljs            //读取xml
      npm -install -g node-mysql          //有数据库连接池
      npm install express-session         //增加session管理
      npm install captchapng                //生成验证码
      sudo npm install log4js                //增加日志输出框架
      sudo npm install node-uuid         //创建uuid
      (如果要卸载用 npm uninstall xxx)

5.安装上之后修改app.js
...
var ejs = require('ejs');
app.engine('html',ejs.__express);

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
...

配置好之后把所有jade后缀的文件修改成html后缀,完了文件中直接写html即可,输出js读取到的东西跟jsp中类似用<% ... %>输出

6.获取参数
   HTTP GET : req.query.xxx
   HTTP POST : req.body.xxx

7.读取xml
config.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <db driver="mysql"
          server="ip"
          port="3306"
          database="db"
          user="root"
          pwd="mysql" />
</root>


dbHelperMysql.js
/**
 Author: iaiai
 Date: 2014-6-19
 Introduction: this module provides you with the operations (read) of xml file.
 **/

function params(){
    this.mydb_driver="";
    this.mydb_server="";
    this.mydb_database="";
    this.mydb_user="";
    this.mydb_pwd="";
}
function getParamObj(){
    var libxmljs = require('libxmljs');
    var fs = require('fs');
    var path = './config/config.xml';
    var param = new params();
    var data = fs.readFileSync(path, 'utf8');
    var xmlDoc = libxmljs.parseXmlString(data);
    var mydb = xmlDoc.get('//db');

    param.mydb_driver   = mydb.attr('driver').value();
    param.mydb_server   = mydb.attr('server').value();
    param.mydb_database = mydb.attr('database').value();
    param.mydb_user     = mydb.attr('user').value();
    param.mydb_pwd      = mydb.attr('pwd').value();
    return param;
}

exports.getParamObj = getParamObj;


8.数据库连接(mysql)
/**
 Author: iaiai(QQ:176291935)
 Date: 2014-6-21
 Introduction: this module provides you with the operations  of add,del,update,select.
 **/

//pre-required params
var mysql = require('mysql');

//open database
var pool = mysql.createPool({
    host: "ip",
    port: 3306,
    user: "root",
    password: "mysql",
    database: "xxx"
});

//定义查询接口
exports.exec = function(sql,params,callback){
    pool.getConnection(function(err,conn){
        if(err){
            callback(err,null,null);
        }else{
            conn.query(sql,params,function(qerr,values,fields){
                //释放连接
                conn.release();
                //事件驱动回调
                callback(qerr,values,fields);
            });
        }
    });
};


使用示例:
var db = require('./config/db_mysql');
db.exec("select * from user",null,function(err,values,fields){
    console.log("err:"+err);
    console.log("values:"+values.length);
    console.log("fields:"+fields);

    for (var i=0;i<values.length;i++){
      console.log(values[i]);
    }
  });


9.session判断
在做后台的时候是需要过滤所有地址,必须用户登录之后才可访问
在app.js中配置
...
//添加session模块
var session = require('express-session');

...
app.use(cookieParser());

////////////////////添加session验证/////////////////////////
app.use(session({
  resave: true, // don't save session if unmodified
  saveUninitialized: false, // don't create session until something stored
  secret: 'love'
}));
app.use(function(req,res,next){
  //不过滤资源文件
  if(req.url.match(/\.(jpg|css|js|png)$/i)!=null){
    next();
    return;
  }

  if (!req.session.user) {
    if(req.url=="/login"){
      next();//如果请求的地址是登录则通过,进行下一个请求
    } else {
      res.redirect('/login');
    }
  } else if (req.session.user) {
    next();
  }
});
////////////////////结束session验证/////////////////////////

app.use(express.static(path.join(__dirname, 'public')));
...

只要在登录之后往req.session.user中把用户对象存进去就行了

10.生成验证码
var captchapng = require('captchapng');

var code = '0123456789';
  var length = 4;
  var randomcode = '';
  for (var i = 0; i < length; i++) {
    randomcode += code[parseInt(Math.random() * 1000) % code.length];
  }
  // 保存到session
  if (null == req.session.code) {
    req.session.code = {};
  }
  req.session.code = randomcode;
  // 输出图片
  var p = new captchapng(68,22,parseInt(randomcode)); // width,height,numeric captcha
  p.color(255, 255, 255, 255);  // First color: background (red, green, blue, alpha)
  p.color(80, 80, 80, 255); // Second color: paint (red, green, blue, alpha)
  var img = p.getBase64();
  var imgbase64 = new Buffer(img,'base64');
  res.writeHead(200, {
    'Content-Type': 'image/png'
  });
  res.end(imgbase64);


11.配置log4j
修改app.js
var log4js = require('log4js');
log4js.configure({
  appenders: [
    { type: 'console' }, //控制台输出
    {
      type: 'file', //文件输出
      filename: 'logs/access.log', 
      maxLogSize: 1024,
      backups:3,
      category: 'normal' 
    }
  ]
});
var logger = log4js.getLogger('normal');
logger.setLevel('INFO');
...
//app.use(...)
//app.use(...)
app.use(log4js.connectLogger(logger, {level:log4js.levels.INFO}));
app.use(app.router);

引用
logger.trace(‘Entering cheese testing’);
logger.debug(‘Got cheese.’);
logger.info(‘Cheese is Gouda.’);
logger.warn(‘Cheese is quite smelly.’);
logger.error(‘Cheese is too ripe!’);
logger.fatal(‘Cheese was breeding ground for listeria.’);


其它的后续研究添加
分享到:
评论

相关推荐

    node.js新手入门教程 环境搭建 简单实例

    Node.js是一款基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程,打破了传统的JavaScript只能在浏览器中运行的限制。这使得JavaScript成为了一种全栈语言,能够处理从客户端到...

    node.js搭建的聊天小程序

    在IT行业中,Node.js因其高效的非阻塞I/O模型和JavaScript的跨平台特性,已经成为构建网络应用的热门选择。本项目以"node.js搭建的聊天小程序"为主题,旨在展示如何利用WebSocket技术创建一个简单的微信小程序聊天...

    Node.js-nodejs学习项目使用nodemySQL搭建后端

    在本项目中,你将学习如何使用Node.js和MySQL搭建一个后端服务器,结合Angular作为前端框架,以及EJS作为后端模板引擎,构建一个简单的博客Web应用。这是一个绝佳的Node.js自学实践项目,涵盖了从基础到进阶的多个...

    Node.js-使用node搭建静态资源服务器

    本教程将聚焦于如何利用Node.js搭建一个简单的静态资源服务器,这对于开发和测试前端项目非常实用。 首先,我们需要理解静态资源服务器的作用。静态资源服务器主要负责提供HTML、CSS、JavaScript等不需动态处理的...

    node.js 环境搭建,简单使用

    尽管语法相似,但Node.js和前端JavaScript在运行环境和设计目标上有显著差异。Node.js主要用于服务器端编程,强调高效处理I/O密集型任务,而前端JavaScript则关注用户交互和页面渲染。 ### 七、Node.js应用实例 - ...

    Node.js+MondoDB开发实例

    在“Node.js+MondoDB开发实例”中,我们将探讨如何使用Node.js这一流行的JavaScript运行环境,配合NoSQL数据库MongoDB,进行后端开发。这个实例涵盖了从项目环境的搭建到实际应用的完整流程,包括数据库连接、数据...

    express3搭建Node.js开发指南微博实例源代码

    根据Node.js开发指南搭建的基于Node.js+express3+MongoDB的微博实例,原书微博实例使用的express2升级express3有很大改动,导致原书实例无法重新现。

    Node.js开发实战详解源代码

    涵盖的主要内容有:Node.js的概念、应用场景、环境搭建和配置、异步编程;Node.js的模块概念及应用、Node.js的设计模式;HTTP简单服务的搭建、Node.js静态资源管理、文件处理、Cookie和Session实践、Crypto模块加密...

    使用Node.js搭建静态资源服务详细教程

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它让JavaScript能够在服务器端运行。由于其异步事件驱动的特性,Node.js非常适合用来处理高并发的网络请求,因此常被用于搭建各类网络应用,包括静态资源...

    node.js后台搭建

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程,极大地推动了Web开发领域的创新。在"node.js后台搭建"这个主题中,我们将深入探讨如何利用Node.js来构建强大的...

    Node.js-Node.jsexpressMongoDB搭建个人博客

    在本文中,我们将深入探讨如何使用Node.js、Express框架和MongoDB数据库来构建一个个人博客系统。这是一项涉及Web开发核心技术的任务,对于初学者和经验丰富的开发者来说都是一个很好的实践项目。 首先,Node.js是...

    node js 实战 源码

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者可以在服务器端使用JavaScript编写应用,打破了JavaScript只能在浏览器端使用的限制。Node.js使用事件驱动、非阻塞I/O模型,使其轻量又高效,特别...

    pdf版,Node.js开发实战详解

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让JavaScript开发者可以在服务器端执行代码,打破了传统的JavaScript只能在浏览器端运行的限制。这本《Node.js开发实战详解》电子书,显然是为了帮助那些...

    Node.js-koa2和node.js搭建的一条RESTfulapiserver端脚手架

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地推动了全栈开发的流行。Koa2 是一个由 Express 团队开发的下一代 Node.js Web 应用框架,它的...

    node搭建的web服务器

    在IT行业中,Node.js是一个非常流行的JavaScript运行环境,它允许开发者使用JavaScript进行后端开发,构建高效、可扩展的网络应用程序。本知识点将详细讲解如何使用Node.js搭建一个Web服务器,以及处理请求URL不正确...

    Node.js-node.js中文资料导航

    学习 Node.js 不仅能让你构建高性能的 Web 应用,还能帮助你理解和应用现代 JavaScript 的特性,为全栈开发打下坚实基础。这个"Node.js中文资料导航"对于中文学习者来说,无疑是一个宝贵的资源集合。

    新时期的node.js入门-李锴-书中示例代码

    总的来说,《新时期的Node.js入门》是一本全面介绍Node.js基础与实践的书籍,通过李锴精心编写的实例代码,读者不仅能学习到Node.js的基本语法,还能掌握实际开发中的各种技巧,为步入Node.js的世界打下坚实基础。

    使用Node.js+Socket.IO搭建WebSocket实时应用

    ### 使用Node.js+Socket.IO搭建WebSocket实时应用 #### WebSocket与实时推送技术 随着互联网技术的发展,用户对于数据的即时性有了更高的要求。实时推送技术,即Realtime技术,旨在实现无需用户手动刷新页面就能...

Global site tag (gtag.js) - Google Analytics