十二 08

国内优秀npm镜像推荐及使用

npm命令,npm源,npm国内源,npm配置

npm全称Node Package Manager,是node.js的模块依赖管理工具。由于npm的源在国外,所以国内用户使用起来各种不方便。下面整理出了一部分国内优秀的npm镜像资源,国内用户可以选择使用。

国内优秀npm镜像

淘宝npm镜像 Continue reading

26

github中mozilla的pdf.js开源项目实现在浏览器中查看PDF文件

PDF.js是一个用HTML5构建的便携文档格式(PDF)浏览器。
PDF.js是社区驱动的,由Mozilla实验室支持。目标是创建一个通用的、基于web标准的平台,用于解析和呈现pdf。

下面方法是在github中抄来的,我此次的项目是织梦二次开发,也就是说网站php环境的,不是nodejs。客户的需求是上传word文档后,可直接在浏览器中查看,那么我变通一下就是把这些文档转成PDF格式,之后使用PDF.js实现在浏览器中查看。我虽然全局安装了gulp,但是没有使用gulp server这条命令。在测试时访问http://域名/pdf.js/web/viewer.html,viewer.html没有做任何修改,加载了超多的js文件,造成很慢很慢,访问http://域名/pdf.js/examples/components/simpleviewer.html 只加载了必要的js,访问速度还可以。

所以,在使用中,还需要结合自己的实际需求来斟酌、测试。 Continue reading

29

nodejs之knex模块从安装到使用

knex.js是bookshelf框架的基础,其核心是query builder。这篇文章参考自Knex.js官网,翻译并总结了该框架的方法。

0 安装

1 初始化

把数据库类型和连接相关的参数配置好之后,才可以正确的连接到数据库,connection的信息可以写到config文件中。

2 概述

knex框架的方法大致分为几类: Continue reading

08

nodejs base64 编码解码

普通字符串 编码解码:

编码解码并转成hex

编码解码图片

Continue reading

03

微信小程序引用SDK(wafer-node-sdk)正确操作数据库

微信小程序引用SDK正确操作数据库方法:

注意:

1、必须使用await,因为数据库获取是异步返回的,此处折腾了好久,刚开始不知道是异步的,总获取不到信息

2、使用await的情况下,必须使用async,否则会报错

**如果不使用await,打印数据库查询结果为如下形式: Continue reading

02

NodeJS进程管理工具之PM2实用入门指南

守护进程,进程守护,进程管理

简介

PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。

下面就对PM2进行入门性的介绍,基本涵盖了PM2的常用的功能和配置。

安装

全局安装,简直不能更简单。

目录介绍

pm2安装好后,会自动创建下面目录。看文件名基本就知道干嘛的了,就不翻译了。

  • $HOME/.pm2 will contain all PM2 related files
  • $HOME/.pm2/logs will contain all applications logs
  • $HOME/.pm2/pids will contain all applications pids
  • $HOME/.pm2/pm2.log PM2 logs
  • $HOME/.pm2/pm2.pid PM2 pid
  • $HOME/.pm2/rpc.sock Socket file for remote commands
  • $HOME/.pm2/pub.sock Socket file for publishable events
  • $HOME/.pm2/conf.js PM2 Configuration

入门教程 Continue reading

01

NodeJS流程控制(同步回调并在外层获取回调返回值)

做了个Node项目,某个流程中最多五层回调进行逻辑判断,客户还要加一些业务,如果再这么做下去,至少还要加两层回调。就可读性来讲,是很差的。胃有点翻腾,要吐出来了…

在网上查了查,有很多人说Node的回调是个坑,但是个人还是愿意接受这不是Node坑的理论,回调这是Node的一个思想,我们既然选择了使用Node,就应该去分析、理解和适应它。

我相信无论遇到什么问题,总是能解决的。如果现在不能解决,那只是暂时没有想到解决办法而已。

一、generator(生成器)

是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次。

我喜欢并在使用着这种方法,这种方法很优雅。

作用:一是同步流程控制Node回调;二是或以在外层获取回调函数内的返回值;三是如果逻辑判断层级很多,那么使代码的可读性更好; Continue reading

20

Linux系统中使用forever让node.js持久运行

守护进程,进程守护,进程管理

 

18

nodejs之MySQLdb模块

基本的使用还是很简单的,进一步使用还没操作,先从网上找点资料放上来,以备后续查看

1.引入MySQLdb库

import MySQLdb

2.和数据库建立连接

conn=MySQLdb.connect(host=”localhost”,user=”root”,passwd=”sa”,db=”mytable”,charset=”utf8″)
提供的connect方法用来和数据库建立连接,接收数个参数,返回连接对象.

比较常用的参数包括
host:数据库主机名.默认是用本地主机.
user:数据库登陆名.默认是当前用户.
passwd:数据库登陆的秘密.默认为空.
db:要使用的数据库名.没有默认值.
port:MySQL服务使用的TCP端口.默认是3306.
charset:数据库编码.
更多关于参数的信息可以查这里

http://mysql-python.sourceforge.net/MySQLdb.html

然后,这个连接对象也提供了对事务操作的支持,标准的方法
commit() 提交
rollback() 回滚

3.执行sql语句和接收返回值

cursor=conn.cursor()
n=cursor.execute(sql,param)
首先,我们用使用连接对象获得一个cursor对象,接下来,我们会使用cursor提供的方法来进行工作.这些方法包括两大类:1.执行命令,2.接收返回值

cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集

cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode=’relative’):移动指针到某一行.如果mode=’relative’,则表示从当前所在行移动value条,如果mode=’absolute’,则表示从结果集的第一行移动value条.

下面的代码是一个完整的例子.
#使用sql语句,这里要接收的参数都用%s占位符.要注意的是,无论你要插入的数据是什么类型,占位符永远都要用%s
sql=”insert into cdinfo values(%s,%s,%s,%s,%s)”
#param应该为tuple或者list
param=(title,singer,imgurl,url,alpha)
#执行,如果成功,n的值为1
n=cursor.execute(sql,param)

#再来执行一个查询的操作
cursor.execute(“select * from cdinfo”)
#我们使用了fetchall这个方法.这样,cds里保存的将会是查询返回的全部结果.每条结果都是一个tuple类型的数据,这些tuple组成了一个tuple
cds=cursor.fetchall()
#因为是tuple,所以可以这样使用结果集
print cds[0][3]
#或者直接显示出来,看看结果集的真实样子
print cds

#如果需要批量的插入数据,就这样做
sql=”insert into cdinfo values(0,%s,%s,%s,%s,%s)”
#每个值的集合为一个tuple,整个参数集组成一个tuple,或者list
param=((title,singer,imgurl,url,alpha),(title2,singer2,imgurl2,url2,alpha2))
#使用executemany方法来批量的插入数据.这真是一个很酷的方法!
n=cursor.executemany(sql,param)

4.关闭数据库连接

需要分别的关闭指针对象和连接对象.他们有名字相同的方法
cursor.close()
conn.close()

四步完成,基本的数据库操作就是这样了.下面是两个有用的连接
MySQLdb用户指南: http://mysql-python.sourceforge.net/MySQLdb.html
MySQLdb文档: http://mysql-python.sourceforge.net/MySQLdb-1.2.2/public/MySQLdb-module.html