- 浏览: 2195307 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
我的电脑是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
配置好之后把所有jade后缀的文件修改成html后缀,完了文件中直接写html即可,输出js读取到的东西跟jsp中类似用<% ... %>输出
6.获取参数
HTTP GET : req.query.xxx
HTTP POST : req.body.xxx
7.读取xml
config.xml
dbHelperMysql.js
8.数据库连接(mysql)
使用示例:
9.session判断
在做后台的时候是需要过滤所有地址,必须用户登录之后才可访问
在app.js中配置
只要在登录之后往req.session.user中把用户对象存进去就行了
10.生成验证码
11.配置log4j
修改app.js
其它的后续研究添加
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.’);
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.’);
其它的后续研究添加
发表评论
-
小程序textarea完美填坑
2020-07-07 16:09 518相信做微信小程序的码友们都被textarea这个原生组件坑过 ... -
微信小程序页面跳转 的几种方式
2019-09-22 16:04 794最近在做微信小程序, ... -
vue import 传入变量
2019-08-01 13:59 982在做动态添加component的时候,传入变量就会报错,出现以 ... -
vue配置font-awesome5的方法步骤
2019-07-25 18:10 483用yarn更新 yarn add @fortawesome ... -
在idea里使用vue,设置tab缩进为4
2019-01-21 15:32 2279本人通过vue-cli搭建vue项目后,编写代码时发现tab缩 ... -
为什么要使用computed而不是data获取vuex中的state
2018-09-27 19:05 1593最近在学习vuex时,照着官网最基本的 Vuex 记数应用示例 ... -
理解vuex -- vue的状态管理模式
2018-08-11 16:46 889vuex是什么? 先引用vuex ... -
Javascript(es2016) import和require用法和区别
2018-08-10 16:19 540写个简单js文件,假设名字为:lib.js 。 假设内容如下: ... -
vue中修改了数据但视图无法更新的情况
2018-07-02 18:31 2147我们有时候常碰到vue中明明修改了数据,但是视图无法更新,因此 ... -
Electron安装 for mac
2018-03-08 09:29 1316第一次用Electron这个安 ... -
vue组件大集合 component
2017-09-07 10:00 573vue组件分为全局组件、局部组件和父子组件,其中局部组件只 ... -
初探和实现websocket心跳重连
2017-06-28 15:20 1774心跳重连缘由 在使用websocket过程中,可能会出现网络 ... -
「Javascript」搞定JS面试——跨域问题
2017-03-15 13:50 605一、什么是跨域? 只要 ... -
js Swiper移动设备触控滑块的框架
2016-08-29 16:20 654官方:http://www.swiper.com.cn/ -
CSS3控制文字只显示一行超出部分显示省略号
2016-08-08 16:43 1104在编写网页的时候,我 ... -
jquery.bootstrap.teninedialog.v3.js使用说明
2015-12-27 12:37 831http://www.xnwai.com/teninedial ... -
好用的前端框架(更新中)
2015-12-19 08:44 1291Bootstrap https://github.com/tw ... -
Data URI 和 MHTML
2013-07-06 14:07 1106Data URI Data URI是由RFC 2397定义的 ... -
Web 前端开发者必知的9 个 CSS3 属性
2012-09-25 17:08 1133CSS可以改进网站的设计 ... -
css 设置元素背景为透明
2012-08-23 12:34 1383要设置某一元素的背景为透明,在 chrome 、firefox ...
相关推荐
Node.js是一款基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程,打破了传统的JavaScript只能在浏览器中运行的限制。这使得JavaScript成为了一种全栈语言,能够处理从客户端到...
在IT行业中,Node.js因其高效的非阻塞I/O模型和JavaScript的跨平台特性,已经成为构建网络应用的热门选择。本项目以"node.js搭建的聊天小程序"为主题,旨在展示如何利用WebSocket技术创建一个简单的微信小程序聊天...
在本项目中,你将学习如何使用Node.js和MySQL搭建一个后端服务器,结合Angular作为前端框架,以及EJS作为后端模板引擎,构建一个简单的博客Web应用。这是一个绝佳的Node.js自学实践项目,涵盖了从基础到进阶的多个...
本教程将聚焦于如何利用Node.js搭建一个简单的静态资源服务器,这对于开发和测试前端项目非常实用。 首先,我们需要理解静态资源服务器的作用。静态资源服务器主要负责提供HTML、CSS、JavaScript等不需动态处理的...
尽管语法相似,但Node.js和前端JavaScript在运行环境和设计目标上有显著差异。Node.js主要用于服务器端编程,强调高效处理I/O密集型任务,而前端JavaScript则关注用户交互和页面渲染。 ### 七、Node.js应用实例 - ...
在“Node.js+MondoDB开发实例”中,我们将探讨如何使用Node.js这一流行的JavaScript运行环境,配合NoSQL数据库MongoDB,进行后端开发。这个实例涵盖了从项目环境的搭建到实际应用的完整流程,包括数据库连接、数据...
根据Node.js开发指南搭建的基于Node.js+express3+MongoDB的微博实例,原书微博实例使用的express2升级express3有很大改动,导致原书实例无法重新现。
涵盖的主要内容有:Node.js的概念、应用场景、环境搭建和配置、异步编程;Node.js的模块概念及应用、Node.js的设计模式;HTTP简单服务的搭建、Node.js静态资源管理、文件处理、Cookie和Session实践、Crypto模块加密...
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它让JavaScript能够在服务器端运行。由于其异步事件驱动的特性,Node.js非常适合用来处理高并发的网络请求,因此常被用于搭建各类网络应用,包括静态资源...
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程,极大地推动了Web开发领域的创新。在"node.js后台搭建"这个主题中,我们将深入探讨如何利用Node.js来构建强大的...
在本文中,我们将深入探讨如何使用Node.js、Express框架和MongoDB数据库来构建一个个人博客系统。这是一项涉及Web开发核心技术的任务,对于初学者和经验丰富的开发者来说都是一个很好的实践项目。 首先,Node.js是...
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者可以在服务器端使用JavaScript编写应用,打破了JavaScript只能在浏览器端使用的限制。Node.js使用事件驱动、非阻塞I/O模型,使其轻量又高效,特别...
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让JavaScript开发者可以在服务器端执行代码,打破了传统的JavaScript只能在浏览器端运行的限制。这本《Node.js开发实战详解》电子书,显然是为了帮助那些...
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地推动了全栈开发的流行。Koa2 是一个由 Express 团队开发的下一代 Node.js Web 应用框架,它的...
在IT行业中,Node.js是一个非常流行的JavaScript运行环境,它允许开发者使用JavaScript进行后端开发,构建高效、可扩展的网络应用程序。本知识点将详细讲解如何使用Node.js搭建一个Web服务器,以及处理请求URL不正确...
学习 Node.js 不仅能让你构建高性能的 Web 应用,还能帮助你理解和应用现代 JavaScript 的特性,为全栈开发打下坚实基础。这个"Node.js中文资料导航"对于中文学习者来说,无疑是一个宝贵的资源集合。
总的来说,《新时期的Node.js入门》是一本全面介绍Node.js基础与实践的书籍,通过李锴精心编写的实例代码,读者不仅能学习到Node.js的基本语法,还能掌握实际开发中的各种技巧,为步入Node.js的世界打下坚实基础。
### 使用Node.js+Socket.IO搭建WebSocket实时应用 #### WebSocket与实时推送技术 随着互联网技术的发展,用户对于数据的即时性有了更高的要求。实时推送技术,即Realtime技术,旨在实现无需用户手动刷新页面就能...