yarn是什么 Yarn是一个用于node.js应用程序的高级包管理软件。它是任意一个其他Nodejs包管理器的快速、安全和可靠的替代方案,比npm更好的解决包依赖问题。本篇文章介绍在CentOS,Redhat和Fedora系统上安装Yarn的方法。
centos下如何安装 使用NPM安装Yarn Yarn组件可与NPM一起安装。只需运行以下命令即可全局安装Yarn。另外,没有-g,就是仅为当前项目安装。
$ sudo npm install yarn -g
用脚本安装Yarn 这是安装Yarn最为推荐的方法。这将下载yarn档案并在home的.yarn目录下提取。脚本还设置了PATH环境
2020-12-27
4688
linux
查看更多
Docker Compose是什么
Docker Compose 是一个工具,这个工具可以通过一个 yml 文件定义多容器的 Docker 应用.
通过一条命令就可以根据 yml 文件的定义去创建或者管理多个容器.
什么是yml文件 YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,
YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互.
如何定义yml文件 新建 docker-compose.yml 文件
version: '3.7'
services:
mongodb:
contain
2020-07-11
3355
Docker
查看更多
容器之间为什么要互访 docker容器与容器之间是隔离状态,不能互相访问,但如果有些依赖关系的服务要如何访问对方呢?
介绍三种方法来解决容器互访问题.
虚拟IP访问 安装docker时,docker会默认创建一个内部的桥接网络docker0,每创建一个容器分配一个虚拟网卡,容器之间可以根据ip互相访问。
运行一个centos镜像, 查看ip地址得到:192.168.32.2
首先通过 docker ps 查看当前电脑上运行的容器实例
$ docker ps
CONTAINER ID IMAGE COMMAND CREATE
2020-04-20
4360
Docker
查看更多
前言 Node.js 社区中,sequelize 应该是最好用的 ORM 框架,它支持多种数据库,包括 PostgreSQL ,MySQL ,SQLite 和 MSSQL.
安装 npm install --save sequelize
在你的项目中使用了哪种数据源,那么对应的去安装此数据源的驱动程序:
$ npm install --save pg pg-hstore # PostgreSQL
$ npm install --save mysql2 # MySQL
$ npm install --save mariadb # Mariadb (mysql的孪生兄弟)
$ n
2020-02-24
6404
javascript
查看更多
levelup
是一个由谷歌构建的简单 key-value 数据库.
它在 Google Chrome 和许多其他产品中使用,使用 fast Snappy算法,可以将任意字节数组作为键和值.
leveldown
它提供了一个纯 C++ 绑定到 LevelDB.
在浏览器或者 memdown 中,有许多可选存储( 如 level.js ),用于内存存储中的. 它们通常支持键和值的字符串和缓冲区.
对于更丰富的数据类型集,可以用 encoding-down 包装存储.
level
它可以看做是包的一个集合,捆绑了 levelup , leveldown 和 encoding-down.
它的
2019-12-12
3521
javascript
查看更多
webpack打包报错 $ npm run build:prod
> jiajialink-admin@3.2.1 build:prod /Users/zhangzhi/code/jjzn/admin
> vue-cli-service build
⠧ Building for production...
WARNING Compiled with 3 warnings 8:22:16 PM
warning
asset size limit: The follo
2019-11-19
17289
javascript
查看更多
说明 发现一些朋友在群里询问如何线上发布vue项目.
从而暴露出来很多有意思的问题.
所以这篇博文简单介绍一下vue项目线上发布的情况.
本地环境 mac os
node 10.16
vue 2.6
vue-cli 4.0
线上环境 centOS6
node 10.16
nginx
vue是最近很火的前端框架,
所以它依赖的是浏览器,及我们可以从浏览器定位到你服务器nginx,然后nginx把指定的静态资源转发出来,最后我们在浏览器渲染看到
不管你的服务器是iis,apache还是nginx
只要http可以定位到服务器的静态资源即可.
很多人会有问号?
那为什么我在开发的时候用node命令
2019-10-28
3680
javascript
查看更多
一. json-server介绍 json-server 一个在前端本地运行,可以存储数据的server ,模拟接口,操作模拟数据
二. json-server的使用 2.1 安装 npm install json-server -D
复制代码
安装完成之后,可以通过 json-server -h 命令检查是否安装成功
json-server [options]
Options:
--config, -c 指定 config 文件 [默认: "json-server.json"]
--port, -p 设置端口号
2019-10-11
2282
nodejs
查看更多
关于axios axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js.
主要功能
从浏览器中创建 XMLHttpRequests
从 node.js 创建 http 请求
支持 Promise API
拦截请求和响应
转换请求数据和响应数据
取消请求
自动转换 JSON 数据
客户端支持防御 XSRF
浏览器支持
使用 浏览器端 直接引用:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
使用 bower:
bower ins
2019-08-27
2347
javascript
查看更多
前言 在node的程序中,如果有大数据量的计算,处理起来比较慢,可以用C来处理,然后通过回调(callback的形式),返回给node.
那么编写好的C组件如何可以在node.js环境中调用呢.
Node.js 插件是用 C++ 编写的动态链接共享对象,可以使用 require() 函数加载到 Node.js 中,且像普通的 Node.js 模块一样被使用. 它们主要用于为运行在 Node.js 中的 JavaScript 与 C/C++ 库之间提供接口.
node.js如何编写c++组件 以官方Hello World” 示例是一个简单的插件,用 C++ 编写,如下代码:
module.ex
2019-04-12
8320
electron
查看更多
前言 早期桌面应用的开发主要借助原生 C/C++ API 进行,由于需要反复经历编译过程,且无法分离界面 UI 与业务代码,开发调试极为不便。后期出现的 QT 和 WPF 在一定程度上解决了界面代码分离和跨平台的问题,却依然无法避免较长时间的编译过程。近几年伴随互联网行业的迅猛发展,尤其是 NodeJS、Chromium 这类基于 W3C 标准开源应用的不断涌现,原生代码与 Web 浏览器开发逐步走向融合,Electron 正是在这种背景下诞生的。
electron Electron 是由 Github 开发,通过将Chromium和NodeJS整合为一个运行时环境,实现使用 HTML、CS
2019-01-26
3345
electron
查看更多
levelup
LevelDB是一个Google构建的简单的k-v数据库.
在Google Chrome和其他产品中被使用.
LevelDB支持抽象字节数组作为键和值,单一get, put 和delete操作,批处理的put 和delete操作,双向迭代和使用快速Snappy
算法进行简单压缩.
LevelDB存储按照键的字母顺序进行排序的条目.
这种构造levelup的流接口,
奠定了levelup作为可读流的迭代器一个十分有效的查询机制.
leveldown是提供了存C++链接到LevelDB的存储器.
有很多交替存储是可用的,
如在浏览器中的level.js,或者是内存存储的mem
2018-12-08
3321
leveldb
查看更多
创建自己的项目 我们用简单的 node.js web项目输出 helloworld 为例.
项目目录:
npm start app.js 启动项目;
app.js 代码
const Koa = require('koa');
const app = new Koa();
const main = ctx => {
ctx.response.body = 'Hello World';
};
app.use(main);
app.listen(3000);
编写dockerfile FROM node:8.4
COPY . /app
WORKDIR /app
RUN ["n
2018-08-20
1588
Docker
查看更多
前言 当你通过brew安装软件的时候,
发现一只卡在Updating
Updating Homebrew...
这个时候有俩种办法来应对
找国内的源Updating Homebrew
brew install 时不要 update
切换国内的源 //替换brew源
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
//替换homebrew-core.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
gi
2018-05-20
2613
开发工具
查看更多
前言 早期 Unix (第 1-6 版,1969-1975)的命令行解释器依赖独立程序 /etc/glob 展开参数中的通配符。
这个程序会展开通配符并把展开后的文件列表传给命令。
它的名字是 "global command" 的简称。
后来这个功能由工具函数 glob() 提供,被 shell 等程序使用。 -- 维基百科
python语言中有了golb封装的包,接着有了今天我们看到的JavaScript实现的glob.
Glob可以做什么 它可以根据指定的通配符来匹配文件,并且把匹配到的结果列表返回给你.
安装 npm install glob
用法 v
2017-09-28
3345
nodejs
查看更多
前言 由于现在的项目都流行前后端分离,
导致后端部署服务和前端一定不会解析到一个服务上,
这样面临的就是跨域请求.
什么情况下会出现跨域请求点击查看这篇博文介绍.
解决跨域的方法
nginx设置跨域请求头点击查看
服务端代码解决跨域
今天我们介绍后者,服务器端如何解决跨域.
Express框架下设置跨域请求
cors安装包
自己定义中间件
cors安装包 npm install cors --save
使用
const cors = require('cors');
server.use(cors());
自定义中间件 项目 middlewares 文件夹下创建 cors.js
m
2017-07-25
2788
nodejs
查看更多
前段时间写过一篇关于showdown和showdown-toc插件自动生成目录的博客 ⬅️点击查看
为什么要改进
showdown-toc作为专门为showdown开发的 toc 插件,搭配使用都非常方便
安装showdown ,showdown-toc
toc插件集成到showdown代码中
const Showdown = require('showdown');
const showdownToc = require('showdown-toc');
const showdownHighlight = require("showdown-highlight");
const to
2017-02-06
2785
开发工具
查看更多
markdown如何转化成html
markdown 文本转化成 html 成熟的工具有不少,
node 开源库中有
markdown-it
showdown
markdown-to-html
marked
markdown
上面的工具各有优势,自行google开源地址,找到一款最适合自己的.
本人博客一直是markdown编辑器撰写,
然后,一直再琢磨如何通过标题来自动生成内容目录,
造轮子的事情还是留给大牛们,
我们能把轮子使用好也是对大牛们的敬仰和支持.
markdown-it 介绍 开源地址: https://github.com/markdown-it/markdown-it
2017-01-22
5667
开发工具
查看更多
什么是Sails Sails.js使部署一个定制的企业级Node.js应用变成一件极为简单的事,它的设计模仿了像Ruby on Rails这样的MVC框架,但是更支持现代应用的开发需求:可扩展的数据驱动层的API,面向服务的架构,Sails.js允许你方便快速得使用Node.js生成应用,并通过MVC模式来使管理和维护代码变得更加简单.
使用 Sails Sails.js 依赖 node.js ,使用时确保你的环境安装了 node.js 环境.
npm install sails -g
搭建项目 安装了 node.js 和 sails.js 的环境,只需要一条命令即可创建 sails 框架
2016-08-23
16326
nodejs
查看更多
前面连续分享2篇关于微信开发的文章.
node.js 定时获取 access_token
使用 wechat 开发微信回调接口
今天分享 node.js 开发微信菜单
前提:
1.首先是切换到了开发者模式
2.微信管理后台已经授权自定义菜单,如下图例是没办法提交菜单的
当你的微信从编辑模式切换到开发者模式时,
之前你手动定义的关键词回复,
手动创建的菜单全部失效.
微信自定义菜单
说白了非常简单.
微信自定义菜单就是一次 POST 请求.
请求接口:
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TO
2016-08-16
6159
nodejs
查看更多
node.js 开发微信系列二
wechat 开发微信回调接口 上一篇我们介绍了 node.js下定时获取access_token
这里可能有个疑问,node.js 开发微信回调接口和定时获取 access_token 有关系吗?
其实没有必然的关系,通过微信回调接口我们可以方便的获取到交互者的 openid
但是,如果你想根据 openid 获取当前交互者的用户信息时,就必须要 access_token 了.
今天我们只谈 wechat 如何使用,获取用户详情在以后的博文中介绍.
wechat
微信公共平台消息接口服务中间件
github地址:
https://github.com/
2016-08-15
11510
nodejs
查看更多
什么是access_token
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效 [来自微信文档]
当你的多个微信开发相关服务并存时,多个服务各自去获取 access_token ,最后导致其中一些服务会不能正常访问.
所以这种情况下,应该设置一个获取 access_token 的中控服务器.
因为 access_token 的有效期为 2个小时,
2016-08-11
9319
nodejs
查看更多
#node.js 调用 shell 脚本
现在能见到的有很多很多种方法
今天和大家分享的是 shelljs
shelljs 安装 npm install shelljs --save
shelljs 使用 exec 方法 var shell = require("shelljs");
// exec 方法
shell.exec("echo hello world!");
shelljs 使用全局模式 require('shelljs/global');
mkdir('-p', '/var/log');
cp('-R', '/var/log/*', '/home/zhang
2016-07-22
13320
nodejs
查看更多
在开发过程中,团队代码风格统一,会让我妈避免不必要的错误和低级 Bug、控制代码质量,这样我们最好会预定一套编码规范.
检验JavaScript编码规范的工具有哪些?
jslint
jshint
ESLint
下面简单看下这3个检验工具之间的差别:
jslint
jslint 的作者是 Douglas Crockford(《JavaScript: The Good Parts》的作者)。
Douglas Crockford 制订了一套 JavaScript 编码规则,
JSLint 通过检查和分析 JavaScript 代码,
将任何违反规则的代码警告给开发者,
且无法通过配置关闭一
2016-02-05
7565
javascript
查看更多
随笔记录一个小问题, npm 安装开源包的时候,你可能碰到这样的情况,无写入权限.
***必须加上 sudo *** 才能执行成功.
无 sudo
➜ /Users/zhangzhi >npm install -g jslint
npm ERR! tar.unpack untar error /Users/zhangzhi/.npm/jslint/0.9.6/package.tgz
npm ERR! Darwin 15.3.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "jsli
2016-02-02
11041
nodejs
查看更多
sails安装
npm install -g sails
sails创建新项目
sails new test
sails目录结构
test api
controllers(控制器相关,业务逻辑)
models(模块开发)
policies(用于路由过滤)
responses(定制所需的响应:如404 res.notFound())
services(定制一些常用的工具类–全局的)
assets(静态资源文件)
images
js
styles
templates
favicon.ico
config(整个
2016-01-31
7048
javascript
查看更多
我们如何用 pm2 把 node.js项目 部署到服务器
安装 pm2 全局安装
➜ /Users/zhangzhi >sudo npm install -g pm2
初始化 pm2 配置文件 ➜ /Users/zhangzhi >pm2 ecosystem
-------------
Looking for a complete monitoring and management tool for PM2?
Check out:
_
2015-12-14
17892
nodejs
查看更多
说到node.js 创建服务器,首先想到 express
之前和大家分享过 关于http-server快速创建node服务
http-server
首先需要 全局安装 http-server
npm install -g http-server
http-server 启动
http-server -a 127.0.0.1 -p 7070
上面的一句命令启动了一个node.js 的静态服务器. 监听本地 7070 端口.
静态目录就是当前运行 命令所在的目录
如果你的当前项目中存在 public 文件夹,那么默认静态目录会指定到 public
如果没有 public
2015-11-17
18404
nodejs
查看更多
如何把自己写的 node.js 模块发布到 npm 开源社区
有下面几个前提条件:
你需要是 npm 社区注册的会员
如果你还没有,点击下面的链接注册
https://www.npmjs.com/
你的开发环境需要 安装node.js 和 npm 创建repository
接下来我们需要创建module所需的repository,默认你拥有一个github账号(如果没有自行解决),这个repository用来托管我们module的代码,并方便用户报告bug,最重要的是可以让其他开发者向module贡献代码,这也是乐趣所在。
初始化package.json
接下来我们创建pa
2015-11-14
7585
nodejs
查看更多
#为什么用webpack
如果我们 前端 javascript 能像 node.js 一样 require 去引用一个依赖包,那么前端的世界就不会像现在这么乱
现在为什么乱?
假设:
a.js 依赖 b.js
b.js 依赖 c.js
c.js 依赖 d.js
如果在我们前端去引用这些依赖的时候,往往是这样的:
<script src='a.js'></script>
<script src='b.js'></script>
<script src='c.js'></script>
<scri
2015-11-12
14602
javascript
查看更多
什么是levelDB
google 公司开发的一款 高性能KV型nosql数据库 ,你可以点击链接查看以前的介绍.
node.js 下使用leveldb 请移步到这里.
但是之前的所有leveldb 操作接口都是基于 callback 回调.所以今天这篇就是分享下leveldb 数据接口实现promise 规范.
什么是promise
promise 规范让javascript拜托callback回调
请移步到上面的博文查看
levelup
levelup 是 leveldb 在node.js 上的实现开源包.
github地址: https://github.com/L
2015-11-11
7772
leveldb
查看更多
promise 规范 可以让你从繁杂的 callback 中解脱出来.
如果我们在传统的 callback 中执行 5个 步骤,应该是下面这样的:
setp1(function(res)){
setp2(function(res)){
setp3(function(res){
setp4(function(res){
setp5(function(res){
//终于执行完了
});
});
});
});
2015-11-03
8250
nodejs
查看更多
要求
OS X - 当前仅支持 OS X
推荐使用 Homebrew 的方式来安装 nvm,watchman 和 flow。
安装 Node.js 4.0 或者更新的版本。
使用 Homebrew 来安装 nvm 或者参考 它的安装指南。
接着运行 nvm install node && nvm alias default node, 它可以让您安装最新版本的 Node.js 并设置您的终端,所以你可以通过键入 node 来运行它。使用 Nvm 可以让您安装多个版本的 Node.js 并且在它们之间轻松切换。
npm 的更新之处。
brew 安装 wa
2015-11-02
5430
nodejs
查看更多
之前写了一篇博文,关于如何把 npm 换到国内镜像员的博文,如下:
给电脑换 npm 国内镜像员 cnpm
为什么要换,你懂的!
今天给大家推荐一个 npm 开源包 nrm
基于 npm ,全局安装以后,你开源无缝快速切换几个源,提高下载速度,拒绝 loading !
安装 npm install -g nrm
开源地址 https://github.com/Pana/nrm
使用
查看帮助
➜ /Users/zhangzhi/code >nrm -h
Usage: nrm [options] [command]
Commands:
l
2015-10-29
26720
nodejs
查看更多
angular-phonecat 是什么
它是google 官方开发的一个 angular.js入门学习web应用程序.
此web应用程序是介绍 android 手机的一个站点
从哪里下载 angular-phonecat
git 直接下载克隆项目
git clone --depth=20 https://github.com/angular/angular-phonecat.git
可以学习什么?
angular.js 框架的构建,测试,学习
后端 node.js 的搭配使用
如何让它运行起来
首先安装 node.js 运行的依赖包
npm install
其中有几个
2015-10-17
5669
angularjs
查看更多
http-server 是轻量级web服务
你可以轻松使用 http-server 替换 Express
http-server 轻量级到什么地步
无需任何设置
也需不要你引用
轻松把当前所在目录架构成一个web服务
应用场景
angular.js 应用.
因为 angular.js本身作为一个单页面应用,首先需要加载这个单页面.
而这页面,一般是我们静态目录下的 index.hlmt
然后这个静态页面加载了 angular.js 前端框架
这时真正的路由控制已经掌握到了 angular.js 的手里
所以,你不需要像 Express 这样大的包来支持后端web服务
2015-10-15
8207
nodejs
查看更多
UglifyJS2 这个工具使用很长时间了,但之前都是在 gulp 自动构建 时用到了 UglifyJS 算法进行压缩.
最近玩了一下 UglifyJS2 ,做了一个 在线压缩javascript工具 欢迎点击玩耍.
为什么要压缩 javascript 因为每个人开发者的书写习惯,定义参数习惯,已经使用习惯都不一样.
所以相同的功能出自不同开发者代码各异.这里牵扯到一个代码所占空间.
以前端为例来说明
大家通常都会认为,现在在网络时代,动不动就是10M光纤,拨号上网让人感觉是上个世纪的方式.....
说法是没有问题,但是,我们今天讨论的并不是终端下载速度.
而是前端压缩对服务器有何利
2015-09-30
22897
nodejs
查看更多
今天的话题包括2个部分
node.js 下使用 nvm 或者 n 来进行版本控制
nvm 安装node.js 版本后,重启终端 node , npm 环境变量失效
第一部分 用什么来管理 node.js 版本
首先应该欢呼庆祝一下 node.js 终于发布了有历史意义的正式版 1.0 ,虽然我们看到的是V4.0,其实他就是node.js 真正意义的 1.0, io.js 不负众望,完成了它的使命.
回头看这几年node.js 以及 io.js 的发展速度,各种版本的迭代发布,我们很有必要用一个 node.js 的版本管理工具来控制当前系统的 node.js 版本.
为什么
2015-09-24
34319
nodejs
查看更多
node.js 下利用 sitemap 生成站点地图.
大致的工作就是,我们生成一份提供给搜索引擎的 Sitemap
之前你获取在网络上找过各种在线生成 sitemap 工具或者服务,使用起来却都不尽人意.有的收费,有的最大抓取2层url ,还有的最大链接数限制在500个.
所以今天和大家分享的是如何用 node.js 来为站点生成 sitemap
什么是sitemap
借用百科的一段话
Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的
2015-09-20
9090
nodejs
查看更多
node.js下四种post提交数据的方式
今天说分享的是其中一种,就是上传文件.
Express 4.0 以后,将功能原子化,高内聚,低耦合,独立出了很多中间件
今天主要分享文件上传
对于connect-multiparty ,他是专门处理此类post数据相关的依赖包,也是博客之前使用的方式
github 官方地址: https://github.com/andrewrk/connect-multiparty
安装 npm install connect-multiparty
使用 var multipart = require('connect-multiparty')
2015-09-15
12917
nodejs
查看更多
去年12月,多位重量级Node.js开发者不满Joyent对Node.js的管理,自立门户创建了io.js。io.js的发展速度非常快,先是于2015年1月份发布了1.0版本,并且很快就达到了2.0版本,社区非常活跃。而最近io.js社区又宣布,这两个项目将合并到Node基金会下,并暂时由“Node.js和io.js核心技术团队联合监督”运营。本文将聊一聊Node.js项目的一些历史情况,与io.js项目之间的恩怨纠葛,他们将来的发展去向。希望能从历史的层面去了解这个开源项目在运营模式上是如何演变和发展的Node.js项目的由来自从JavaScript被Brendan Eich创造出来后,
2015-09-09
8373
javascript
查看更多
抱歉,这篇博文推迟发布了,人都是有惰性的...看在这个牛逼闪闪的标题就原谅我吧!为何这篇文章要归类到 mac 下? 第一个问题,稍后我们说明下.zsh是个什么东东? 第二个问题...你应该稍微接触过一点点shell ,或者了解一点点?如果不知道 shell ,那就点下广告离开吧, 人生苦短,时间珍贵.在unix 内核的操作系统中,当然现在衍生出好多分支,linux ,OS X 都算.shell 就算和上面这些系统内核指令打交道的一座桥梁,我们通过键盘输入一种自己容易记忆识别的符号标识(shell 命令)然后 shell 解析这种命令再反馈给内核去执行一系列操作.那么问题来了,今天要说的zsh
2015-09-03
254877
mac
查看更多
之前有一篇介绍node.js 下,轻量级缓存应用模块 node-cache点击访问.今天介绍使用 redis 作为缓存介质.首先,我们需要一个 node.js 下可以访问 redis 的中间件,就是 node_redisgithub地址:https://github.com/NodeRedis/node_redis安装:npminstall--saveredis然后我们封装一个缓存类:varredis=require('redis');
varconfig=require('../config');
///////////////////////////////
2015-07-30
10592
redis
查看更多
上周分享了一篇关于node.js 下命令行框架 yargs 如何实现与程序交互今天又一款强大的命令行框架开源包 commander.jsnode.js 下的commander是从Ruby下同名项目移植过来的.下面我们来简单了解下.github项目地址:https://github.com/tj/commander.js npm 地址:https://www.npmjs.com/package/commander 使用:npminstall--savecommandervarcommander=require('commander');
//定义参数
commander.
2015-07-27
9885
nodejs
查看更多
如何让你的node.js 应用程序像shell 脚本一样和你交互?于是就有了今天这一片博文 关于yargs 使用分享.大概有一种情况你需要让你的程序接收一个参数,通过这个参数我们做一系列的定制化功能.常见的做法是 把一些不同环境不同配置的变量写到 config 配置文件中.当你的环境变化的时候,你手动去修改你的config 中的变量来达到不同环境显示定制化的东西.更具象的一个例子:config文件中有一个配置项 langue当你发布国内站点的时候,你需要配置成 langue="zh-cn"当你发布国外站点的时候,你需要配置成 langue="en"现在,
2015-07-24
22279
nodejs
查看更多
node.js 连接 ms SqlServer ,你没有看错,就是这样.我们抛开一切操作系统的歧视, 当你需要用到的数据源存储在 SqlServer 中,那么就会遇到我们今天要说的情况.一. mssql 下载安装github地址:https://github.com/patriksimek/node-mssql mssql 默认使用Tedious驱动.Tediousby Mike D Pilsbury (pure javascript - windows/osx/linux) 默认支持(windows/osx/linux 等系统)所以你在mac 下用node.js 连接 sqlserver 是
2015-07-21
12306
nodejs
查看更多
之前有一篇介绍PostgreSQL在MAC环境下的初体验 ,今天要和大家分享的是 node.js 应用 + PostgreSQL 做数据存储的demo.node.js 环境使用 PostgreSQL 需要下载编译node-postgresgithub地址:https://github.com/brianc/node-postgres 使用:zhangzhi@moke:npminstall--savepgREADME.md 关于如何使用的api 也比较简单:varpg=require('pg');
varconString="postgres://username:pa
2015-05-26
30411
PostgreSQL
查看更多
我们在项目中常常看到README.md 当然扩展名可能是txt ,rb,md ,甚至 me 都有可能.其实这个小小的静态文件还是有些重要信息可以传递的.这就是你在github上创建一个项目的是,总会提示你要不要生成一个README.md 文件.README 应该是介绍code source 的一个概览.其实这个静态文件是有约定成俗的规范.你的项目介绍你的代码实现了什么功能?该如何使用? (系统环境参数,部署要素)代码组织架构是什么样的?版本更新重要摘要如果你的README包括上面的内容,那么当使用者拿到代码,打开README后,基本就知道该如何下手了.如下 README.md :DEMO
##
2015-05-19
26227
心得
查看更多
其实关于promise 的博客,前端时间专门写了一篇关于 promise 规范的文章,promise规范 让 javascript 中的异步调用更加人性化.简单回忆下:promise/A规范定义的“Deferred/Promise”模型其实是实现了“发布/订阅”模型.通过Deferred对象发布事件,包括下面2种事件完成 --> resolve事件,失败 --> reject事件,通过Promise对象进行对应完成或失败的订阅类似于任务状态转变时事件被触发.将会对应的执行事件绑定函数.每个Promise任务都有三种状态:默认(pending)、完成(fulfilled)、失败(re
2015-05-11
9608
nodejs
查看更多
上一篇博文和大家分享了ENV定制开发,测试,发布环境变量.定制了以后如何来用,今天这篇就是要介绍如何使用自定义的不同环境变量.大概有些同学会有疑问.为什么各种环境不直接配成一致的.如果可以这么做的话,再好不过的.什么时候可能需要不同的配置.如果你想在开发环境下打印出log ,但是在正式运行环境不想打印log.你想在开发环境加载原 javascript 文件, 在正式运行环境下压缩javascript 文件.或者你想在开发环境加载一套 config 配置,在正式运行环境加载另外一套 config 配置.等等......一切你需要定制化的时候. 3. 我需要一个普通的json配置文件即可,为何要用
2015-05-05
27599
nodejs
查看更多
javascript 一统江湖的势头越来越猛,越来越重的前端,不得不实施前后端分离,angular.js 成功把前端javascript抽象成了一个复杂的MVC框架,注意,它是一个框架,可不是普普通通的插件,或者工具包.另一位兄弟则是跳出浏览器宿主的限制,活跃在了服务器端,大名鼎鼎的 node.js还有一位齐头并进的好哥们 mongodb ,它不仅让你使用熟悉的javascript范围数据库,而且还自己实现了javascript引擎.可能创建 javascript 语言的大牛,看到今天js的发展事态,想必脊梁骨也是阵阵发凉.我们好像扯远了,开题先痛痛快快意淫一把怎能善罢甘休,O(∩_∩)O~由
2015-04-23
10469
nodejs
查看更多
随着前端项目越来越复杂,随便引入几个第三方javascript脚本库貌似已经习以为常,但是随着越来越多的包被引入,开发人员维护起来也是一件相当头疼的事,比如第三方库的版本更新,安装,卸载等.twitter推出了一个前端包管理器 bower 帮我们解决了这些头疼的事情.bower 完全借鉴了npm构思和实现原理,所以后面你会看到它的使用几乎和npm是一模一样.当然,bower 是运行在node.js 基础上,所以你的当前环境确保已经安装 node.js .bower 的基础功能是什么?1.注册模块每个包需要确定一个唯一的 ID 使得搜索和下载的时候能够正确匹配2.文件存储把文件存储在一个有效的网
2015-04-22
32241
javascript
查看更多
angular.js 下使用$q 创建一个 promose 链式调用.我们在前几天分享了一篇,关于javascript中 promose 规范的博客 (点击查看)现在很多很多的开源javascript库 实现了 promise 规范大名鼎鼎的npm 包 Qgithub地址:https://github.com/kriskowal/q 相仿的在 angular.js 下 $q 是一个小型轻量级的 promise 实现.作者据说是$q是从Kris Kowal的Q中获得灵感从而产生的一个promise/deffered实现我们如何使用$q 定义一个 promise .
vargetPersonLis
2015-04-15
9481
angularjs
查看更多
你有没有认认真真写过package.json 文件?其中 package.json 里的依赖配置项是非常重要的."dependencies":{
"MD5":"^1.2.1",
"async":"^0.9.0",
"body-parser":"^1.9.2",
"cluster":">=0.7.7",
"commander":"^2.6.0",
"compres
2015-04-09
29660
javascript
查看更多
上一次给公众号做自定义接口已经是很久以前的事了.....以至于今天发现那个公众号的接口已经不能服务了.访问公众号直接给出提示"该公众号暂时无法提供服务,请稍后再试"我想难道是年久失修? 也不应该啊,这么牛x的公司绝对不会修改api,或者是更新api不兼容之类的.....看来问题还是出在我这边.我甚至忘记了公众号登录密码.进去后复制接口链接地址到浏览器地址栏,发现是可以访问的,那么问题出在哪里?难道腾讯知道我好久没有维护此号了.所以暂时不提供服务了,想想以前网易邮箱经常被冻结,我竟然真的以为是这样的了.所以:我尝试前后到编辑模式,然后再切换回来,依然不提供服务...我试图改了
2015-03-31
14599
nodejs
查看更多
我们在接触客户端javascript的时候,调试利器就是firebug ,也是当年为何喜欢用上firefox 浏览器的主要动力,当然,后来 chrome 插件里也出现了firebug的身影.....但是服务器端开发语言node.js 一直以来调试不是特别方便,可能是之前被 virtual studio惯坏了,这种用 console.log() 去打印变量甚至回调数据实在是太蹩脚.当然,有一款很强大的IDE ,webstrom对node.js提供了最全面的支持,也可以轻松配置来实现调试,下回有必要和大家分享一次.今天要分享的是关于node-inspector 下调试node.js程序.第一步:n
2015-03-22
21702
nodejs
查看更多
为什么要把 gulp 的学习文章安装到这里,因为我们上一篇说到了创建一个angular.js项目框架,其中用 gulp 来构建代码.什么是 gulp ,我之前的博客介绍过 yoman项目构建工具 ,gulp 也是类似这样的工具,而且感觉比 yoman和 grunt等工具使用更加简单方便.我们在项目中使用 gulp 做什么?我们会用 gulp 定制几个任务,其中一个就是把controller中的控制器代码抽取出来,然后生成一个新的 app.js .这样的好处是不言而喻的,比如一个团队每个人负责几个控制器,如果我们不用项目管理工具来自动合并引用到文件的话,我们只能手动每个人去修改 index.ht
2015-01-25
14383
angularjs
查看更多
引用百度百科的一段描述:PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,WP8,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以调用. 查看更多使用前提:已经安装xcode已经安装python 2.7 (3.0一下版本)已经安装node 0.10.*(本环境是 0.10.28)上面的安装方法你可以在本博客搜索cordova和phonegap是什么关系?PhoneG
2015-01-12
16709
nodejs
查看更多
上面这个图好有意思啊,哈哈, v8威武啊....在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据.上上一篇说到了关于http协议里定义的4种常见数据的post方法,详细介绍请点击查看.分别是这四种:www-form-urlencoded,form-data,application/json,text/xmlExpress 依赖 bodyParser 对请求的包体进行解析,默认支持:application/json, application/x-www-form-urlencoded, multipart/form-data.可惜对xml没有支持,需要自己代码来
2014-12-31
56859
nodejs
查看更多
javascript经过浏览器大战的几次更新换代,终于一统江湖,稳坐第一把交椅,经过你会发现javascript语法和实现并不尽人意,但是丝毫不影响它的发展.我们最开始接触javascript应该大部分是从html中的js脚本开始,但是这种看似简单的语言稀里糊涂的用了好几年,也没有搞清楚它的一些原理机制,有没有躺枪!起码javascript在操作dom的时候用了各种事件回调,比如按钮,链接的点击,鼠标经过,获取焦点等等.在这个过程中,我们在dom上绑定一个事件回调函数 比如 onclick="doCheck()" 这个过程就是给dom元素注册了一个click 事件,并且绑定
2014-12-22
9057
javascript
查看更多
由于node.js特性异步IO,导致 node.js 开发常常让你头疼的是异步嵌套回调.一层一层的大括号嵌套让你当场就迷失在回调函数中,更不用说隔一段时间自己去维护这段代码的时候,恨不能砸显示器来泄愤.不过这个世界还是美好的,你遇到的问题大家也都遇到了,而且大牛们致力于减轻码农的各种node.js 的痛苦,开发出了高效好用的流程控制包,让你的逻辑变的清晰,维护起来一目了然.常用的有 async ,step ,eventproxystep本人接触很少,一直在用async,也是最近注意到了 eventproxy ,我想看看哪个性能更优,代码更加优雅,所以有了下面一个小demo.这个demo不去比较
2014-12-19
10126
nodejs
查看更多
node.js环境下,利用request 模拟post提交表单 需要 formstream 插件配合使用.npminstallrequestformstreamvarrequest=require('request')
,FormStream=require('formstream')
var form = FormStream()
.field('name', '一介布衣')
.file('head_image', '100x100.png')
var upload = request.post('http://yijiebuyi.com/page',
2014-12-17
8689
nodejs
查看更多
我从统计后台常看到有人site我的站,一部分是打算做友链的,另外还有一部分观望的站长,他们会发现一个固定IP上竟然绑了4个站,而且我的博客反应还足够快,一页列出40篇图文博客几乎是秒出,无延迟无等待,所以我收到一个站长的Email,大概就是问下我阿里云vps花了多少钱.站点加载速度快大概有下面几个因素:此blog是node.js开发的,异步IO处理还是有优势的.可以查看我的另外一篇博文,node.js和其他语言相比的优点在哪里?2.此blog没有用特别复杂的数据库,而且选择了小众化的google推出的kv型nosql数据库 levelDB.此数据库简约而不简单,它强悍的读写能力可以支撑十亿级别
2014-12-16
8874
心得
查看更多
Express 是Node.js Web应用框架,他集成了一整套完善的api,让您能够快速搭建一套Web应用.安装Expressnpminstall-gexpress创建一个启动文件 index.jsvarexpress=require('express');
varapp=express();
app.listen(8000);nodeindex.js既可以成功运行起来应用创建一个路由app.get('/',function(request,response){
response.send("HelloWorld!");
});Expres
2014-12-12
8591
nodejs
查看更多
当你的Express 升级到4.0+版本后,有没有遇到过下面这个问题.{
[Error:invalidcsrftoken]
expose:true,
code:'EBADCSRFTOKEN',
statusCode:403,
status:403
}上面的错误是在node.js 运行环境的命令行报出来的.页面直接返回了500服务器错误.我执行了什么操作?这是我的一个新站 三思悦 ,此站有个功能是邀请注册,不对外公开注册的.所以管理后台有个页面用来显示 邀请码,同时有个按钮,用来生成验证码,一次生成唯一不重复的50个.所以这个页面对应2个相同的url ,只不过get方式用来呈现为
2014-12-09
15536
nodejs
查看更多
上一篇简单说到leveldb数据库,此开源项目目前是支持处理十亿级别规模Key-Value型数据持久性存储的C++ 程序库。那么问题来了,node.js环境下如何使用leveldb数据库呢?node.js下需要第三方npm包 levelup 和 leveldown 来支持.安装依赖环境:npminstalllevelupleveldown提醒:levelup 版本最好用0.10.0或者更低版本,最新版本和leveldown编译时出问题.npm 安装指定版本依赖包npminstalllevelup@0.10.0或者你也可以这样npminstalllevel使用起来也非常简单.varlevelup
2014-12-03
21088
leveldb
查看更多
LevelDB是google公司开发出来的一款超高性能kv存储引擎,以其惊人的读性能和更加惊人的写性能在轻量级nosql数据库中鹤立鸡群,下面简单说下这个文件存储引擎。次存储引擎是google公司2位大神级工程师开发而成.Jeff Dean其人:http://research.google.com/people/jeff/index.html,Google大规模分布式平台Bigtable和MapReduce主要设计和实现者。Sanjay Ghemawat其人:http://research.google.com/people/sanjay/index.html,Google大规模分布式平台GF
2014-12-02
17640
leveldb
查看更多
之前有过一篇比较简单的关于 mocha 做自动化测试的帖子, mocha测试今天稍晚详细点说下.常见的开源项目你都会发现test目录,当然我们自己创建的项目建议也加上此目录,在这个目录下做自动化测试.目前node.js下做自动化测试的工具也很多,今天我们主要来介绍下如何使用mocha进行自动化测试.安装 mochanpminstall-gmocha这样你就可以创建测试脚本了,如下:varassert=require("assert");
describe('Array',function(){
describe('#indexOf()',fu
2014-11-28
14832
nodejs
查看更多
引子:母版页之方便之处相信做过web开发的都不用说太多,可以重复利用资源,维护方便,开发起来你只需关注当前页变动的东西,固定不变的全部放到母版页,可以理解为前人栽树后人乘凉,省时,省力,省心.下面围绕2点简单说下.一.node.js开发,基于ejs引擎的母版页二.前提环境 ,如何使用及示例介绍就像上面的这个图,如果你的业务说覆盖的页面只有中间是变化的,那么其他部分完全可以放到母版页中呈现.node.js 下的web应用开发有2种模板引擎 ejs 和 jade ,当然你可能直接用jquery 的前端模板后端ajax请求数据等等....(也算一种吧)ejs 下如何使用母版页?ejs的母版页功能支持
2014-11-25
29711
nodejs
查看更多
NodeJS里最常用的测试框架估计就是mocha了。它支持多种node的assert libs, 同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑Javascript代码测试。本文示例大多源于官网示例,部分示例结合需要或自己的感想有所改动。更多介绍请看 官方网址:Mocha on GithubInstallation:当你成功安装nodejs v0.10 和 npm后执行下面这条命令。#npminstall-gmochap.s. Ubuntu的注意apt源里的nodejs版本会比较旧,某些module会不支持,请从nodejs官网进行源码安装。First st
2014-11-07
6379
javascript
查看更多
json格式被越来越多的开发者说青睐,我们常常在接口定义时使用这种格式参数进行数据交换.今天主要给大家从繁到简的几个node.js下使用的提交 json个数参数的方式方法.下面示例中出现的参数都做了处理,拷贝代码后需要更改这些参数同时自己写一个接收json格式的api,请求成功后再返回json格式(一) node.js 原生自带http模块,可以解决基于http协议下的请求及回发,执行效率高,但是好多东西需要开发人员自己动手来实现,看下面代码varhttp=require('http');
var body = {
"data":{
"
2014-07-17
70591
nodejs
查看更多
我们常常对一个拼接的变量进行映射,让一个变量通过一定的算法得出一个可控的结果然后在操作.比如淘宝的分布式存储,淘宝会根据注册用户ID对64取模,结果肯定是小于64的数,就可以根据此数来确定用户信息存储在64台服务器中的哪一台.这里一个前提是会员ID是数值型,如果是字符串怎么办?本文要解决的就是这个问题.思路:给字符串求哈希散列码, 然后对固定数值求模,最后确定该把数据存储到那台服务器上.node.js 下有很多求哈希散列值的模块,本文用到的是fnv-plusgithub 地址:https://github.com/tjwebb/fnv-plus npm 安装模块(这里就省略不说了)使用:var
2014-07-02
15858
nodejs
查看更多
node.js 下最出名的web框架 express ,之前低版本(4.0以下)貌似需要依赖bodyParser 包来解析请求体,Express 3.x和4.x版本的区别 查看此博文了解.后来的版本把bodyParser 继承进去,需要在express 配置项里 user(express.bodyParser({ keepExtensions: true, uploadDir: '/tmp' })) 如下代码:varexpress=require('express'),
app=express();
app.configure(function () {
2014-05-08
46997
nodejs
查看更多
有关npm的几个使用习惯,逐渐完善中。。我们开发中经常用到npm来管理第三方包,如果你觉得国外环境下载第三方包不是很快,可以换成国内的npm源,npm换国内源,使用过程也相对简单,本项目私有的包会选择 npm install async ,如果全局共享安装会使用 npm install -g async其实 npm 的实际功能远远超过我们实用的这几招。1.npm 帮你完成package.json 文件,在一个node.js 文件中 package.json 文件的重要性不必多说,如果你还不明白,赶紧google一下。如何完善:mkdirblog
cdblog
npminit前2句命令是创建项目
2014-05-01
9521
nodejs
查看更多
async 作为大名鼎鼎的异步控制流程包,在npmjs.org 排名稳居前五,目前已经逐渐形成node.js下控制异步流程的一个规范.async成为异步编码流程控制的老大哥绝非偶然,它不仅使用方便,文档完善,把你杂乱无章的代码结构化,生辰嵌套的回掉清晰化.async 提供的api包括三个部分:(1)流程控制 常见的几种流程控制.(2)集合处理 异步操作处理集合中的数据.(3)工具类 .github 开源地址:https://github.com/caolan/async安装方法: npm install async使用方法: var async=require('async')
2014-04-30
41392
nodejs
查看更多
Yeoman是由Paul Irish、Addy Osmani、Sindre Sorhus、Mickael Daniel、Eric Bidelman和Yeoman社区共同开发的一个项目。它旨在为开发者提供一系列健壮的工具、程序库和工作流,帮助他们快速构建出漂亮、引人注目的Web应用。它不只是一个工具,还是一个工作流。它其实包括了三个部分yo、grunt、bower,分别用于项目的启动、文件操作、包管理。Yo: Yo是一个项目初始化工具,可以生成一套启动某类项目必需的项目文件。Bower: 一个客户端技术的软件包管理器,它可用于搜索、安装和卸载如JavaScript、HTML、C
2014-04-25
44413
开发工具
查看更多
npm 是node.js 环境下的包管理器,非常强大智能.生活这这片神奇的土地上,各种奇葩手段屡见不鲜啊.为什么要换源? npm 官方站点http://www.npmjs.org/并没有被墙,但是下载第三方依赖包的速度让人着急啊!就拿阿里云环境来说,有时npm 一个包也需要耐心等待......等待过去也许是原地踏步,也许就是安装失败.幸运的是,国内有几个镜像站点可以供我们使用,本人在使用http://www.cnpmjs.org/速度非常快,镜像站会实时更新,为我们节省了好多时间.如何给本机换源呢?(1)通过 config 配置指向国内镜像源npmconfigsetregistryhttp:/
2014-04-20
123077
nodejs
查看更多
canvas 模块是npm提供的一个第三方包,国内环境安装慢的话请给npm换国内源,点击查看,用来生成图片.在本博客的应用场景是生成验证码.前端时间阿里云上使用 ubuntu 系统,本地mac OS ,安装 canvas 及各种依赖貌似很顺利,最近从ubuntu 换到了 centOS 后,进过几小时的挣扎,canvas 环境还是没有安装成功!他的依赖很多,最好按照官方wiki提供的文档来安装.wiki文档地址:https://github.com/LearnBoost/node-canvas/wikiwiki 提供的安装向导包括2部分,红框内的为不同操作系统需要安装的依赖. 红框下面是云环境需
2014-04-20
12136
nodejs
查看更多
mac 下安装 Angular.JS 时,直接报错:google 搜索 phantomjs@1.9.7-3 install: `node install.js` 发现phantomjs 已经被"墙"解决方案:手动下载 phantomjs后放到npm install对应的phantomjs那个目录下然后 npm install或者你打开你的代理后再 npm install 试一试.
2014-04-19
9452
nodejs
查看更多
如果你也在看Node.js开发指南,如果你也在一步一步实现 microBlog 项目!也许你会遇到本文提到的问题,如果你用的是Express 3.0本书实例背景是 Express 2.0 而如今升级到 3.0后去掉了一些老的方法也更新了一些新的,所以变化还是蛮大的.首先上一篇博客提到的一个问题:如何用Express 3.0 生成一个 ejs 模板项目前提是你已经下载了ejs包,如何下载,运行cmd 输入 npm install ejs -g2.0 下的语法是:express -t ejs microblog3.0下的语法是:express -e ejs microblog (-t已经失效,取而
2014-04-12
10959
nodejs
查看更多
在node.js环境下使用mongoskin 操作mongoDB .mongoskin 的安装非常简单 npm install mongoskinmongoskin 的使用,上一篇博文已经说过,你可以返回去瞄一眼, 我是伟大的传送带下面的内容针对 mongoskin 操作 mongoDB 的api来说明:查这应该是所有数据库的灵魂,通过简单的api可以帮助我们从海量数据库总准备找到自己想要的数据.查询多条数据原生方法: find()使用: db.集合名.find([option]) [option] 为可选条件,可以空,也可以指定条件,如 {name:'xiaoxiao'}查
2014-04-09
16585
mongodb
查看更多
何为核心? 重要的/不可缺的!node.js作为一门跨平台服务器端编程语言,必然也有它的核心.node.js继承了javascript 客户端语言该有的优势,同时摒弃了客户端javascript的一些缺点,比如在客户端javascript环境下,全局变量可以到处被定义,随意被覆盖,代码污染严重,所以node.js有了模块的概念,在模块里定义的全局变量如果没有被export ,那么此变量是私有的,只能在定义的模块是使用.不用提醒我,我并没有跑题,正因为模块机制,导致node.js的一些核心模块也编译成各自独立的二进制文件,他们就放在 node 源代码中 lib 文件夹下.为啥是二进制文件?你不用
2014-03-23
11647
nodejs
查看更多
有一种错误叫做:Readingpackagelists...Done
Buildingdependencytree
Readingstateinformation...Done
E:Unabletolocatepackagecairo上面出现的情况是阿里云环境安装图形组件 cairo 时出现错误(可以使用ccap代替生成验证码),在很多开源的LInux 内核系统下图形处理大多依赖此组件.出现上面的错误是因为nodeJS 环境下 sudo npm installcanvas 时,系统需要依赖 cairo,而服务器没有/找不到.所以用脚趾头稍微想了想便直接敲下了sudoapt-getinstall
2013-10-08
5992
linux
查看更多