• 搜索:npm

centos 系统上安装 yarn

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环境

Docker Compose 事半功倍,容器部署更方便简洁

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

Docker 容器之间互访的几种形式

容器之间为什么要互访 docker容器与容器之间是隔离状态,不能互相访问,但如果有些依赖关系的服务要如何访问对方呢? 介绍三种方法来解决容器互访问题. 虚拟IP访问 安装docker时,docker会默认创建一个内部的桥接网络docker0,每创建一个容器分配一个虚拟网卡,容器之间可以根据ip互相访问。 运行一个centos镜像, 查看ip地址得到:192.168.32.2 首先通过 docker ps 查看当前电脑上运行的容器实例 $ docker ps CONTAINER ID IMAGE COMMAND CREATE

sequelize 5.0中文文档连接数据源及数据类型 (一) - node.js语言最好用的orm

前言 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

levelup 4.x版本升级node.js下leveldb数据库对照文档

levelup 是一个由谷歌构建的简单 key-value 数据库. 它在 Google Chrome 和许多其他产品中使用,使用 fast Snappy算法,可以将任意字节数组作为键和值. leveldown 它提供了一个纯 C++ 绑定到 LevelDB. 在浏览器或者 memdown 中,有许多可选存储( 如 level.js ),用于内存存储中的. 它们通常支持键和值的字符串和缓冲区. 对于更丰富的数据类型集,可以用 encoding-down 包装存储. level 它可以看做是包的一个集合,捆绑了 levelup , leveldown 和 encoding-down. 它的

vue项目打包发布线上环境

说明 发现一些朋友在群里询问如何线上发布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命令

node.js json-server 使用教程

一. 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 设置端口号

axios中文使用文档说明

关于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

electron加载第三方c++库走过的坑

前言 在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

使用Electron打造跨平台桌面应用

前言 早期桌面应用的开发主要借助原生 C/C++ API 进行,由于需要反复经历编译过程,且无法分离界面 UI 与业务代码,开发调试极为不便。后期出现的 QT 和 WPF 在一定程度上解决了界面代码分离和跨平台的问题,却依然无法避免较长时间的编译过程。近几年伴随互联网行业的迅猛发展,尤其是 NodeJS、Chromium 这类基于 W3C 标准开源应用的不断涌现,原生代码与 Web 浏览器开发逐步走向融合,Electron 正是在这种背景下诞生的。 electron Electron 是由 Github 开发,通过将Chromium和NodeJS整合为一个运行时环境,实现使用 HTML、CS

leveldb&levelup中文文档简介

levelup LevelDB是一个Google构建的简单的k-v数据库. 在Google Chrome和其他产品中被使用. LevelDB支持抽象字节数组作为键和值,单一get, put 和delete操作,批处理的put 和delete操作,双向迭代和使用快速Snappy 算法进行简单压缩. LevelDB存储按照键的字母顺序进行排序的条目. 这种构造levelup的流接口, 奠定了levelup作为可读流的迭代器一个十分有效的查询机制. leveldown是提供了存C++链接到LevelDB的存储器. 有很多交替存储是可用的, 如在浏览器中的level.js,或者是内存存储的mem

docker 实践:如何构建自己的镜像

创建自己的项目 我们用简单的 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

brew install时一直卡在Updating怎么办

前言 当你通过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

glob node.js下可以像shell模式一样匹配文件

前言 早期 Unix (第 1-6 版,1969-1975)的命令行解释器依赖独立程序 /etc/glob 展开参数中的通配符。 这个程序会展开通配符并把展开后的文件列表传给命令。 它的名字是 "global command" 的简称。 后来这个功能由工具函数 glob() 提供,被 shell 等程序使用。 -- 维基百科 python语言中有了golb封装的包,接着有了今天我们看到的JavaScript实现的glob. Glob可以做什么 它可以根据指定的通配符来匹配文件,并且把匹配到的结果列表返回给你. 安装 npm install glob 用法 v

node.js Express 框架下支持跨域服务

前言 由于现在的项目都流行前后端分离, 导致后端部署服务和前端一定不会解析到一个服务上, 这样面临的就是跨域请求. 什么情况下会出现跨域请求点击查看这篇博文介绍. 解决跨域的方法 nginx设置跨域请求头点击查看 服务端代码解决跨域 今天我们介绍后者,服务器端如何解决跨域. Express框架下设置跨域请求 cors安装包 自己定义中间件 cors安装包 npm install cors --save 使用 const cors = require('cors'); server.use(cors()); 自定义中间件 项目 middlewares 文件夹下创建 cors.js m

remarkable搭配markdown-toc自动生成博文目录

前段时间写过一篇关于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

markdown编辑器如何自动生成目录 showdown toc插件的使用

markdown如何转化成html markdown 文本转化成 html 成熟的工具有不少, node 开源库中有 markdown-it showdown markdown-to-html marked markdown 上面的工具各有优势,自行google开源地址,找到一款最适合自己的. 本人博客一直是markdown编辑器撰写, 然后,一直再琢磨如何通过标题来自动生成内容目录, 造轮子的事情还是留给大牛们, 我们能把轮子使用好也是对大牛们的敬仰和支持. markdown-it 介绍 开源地址: https://github.com/markdown-it/markdown-it

node.js 环境下使用 sails 框架搭建服务

什么是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 框架

node.js 微信开发 提交菜单

前面连续分享2篇关于微信开发的文章. node.js 定时获取 access_token 使用 wechat 开发微信回调接口 今天分享 node.js 开发微信菜单 前提: 1.首先是切换到了开发者模式 2.微信管理后台已经授权自定义菜单,如下图例是没办法提交菜单的 当你的微信从编辑模式切换到开发者模式时, 之前你手动定义的关键词回复, 手动创建的菜单全部失效. 微信自定义菜单 说白了非常简单. 微信自定义菜单就是一次 POST 请求. 请求接口: https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TO

node.js 下使用 wechat 开发微信接口

node.js 开发微信系列二 wechat 开发微信回调接口 上一篇我们介绍了 node.js下定时获取access_token 这里可能有个疑问,node.js 开发微信回调接口和定时获取 access_token 有关系吗? 其实没有必然的关系,通过微信回调接口我们可以方便的获取到交互者的 openid 但是,如果你想根据 openid 获取当前交互者的用户信息时,就必须要 access_token 了. 今天我们只谈 wechat 如何使用,获取用户详情在以后的博文中介绍. wechat 微信公共平台消息接口服务中间件 github地址: https://github.com/

node.js 微信开发 定时获取access_token

什么是access_token access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效 [来自微信文档] 当你的多个微信开发相关服务并存时,多个服务各自去获取 access_token ,最后导致其中一些服务会不能正常访问. 所以这种情况下,应该设置一个获取 access_token 的中控服务器. 因为 access_token 的有效期为 2个小时,

node.js 调用 shelljs 接收 stdin 输入输出

#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

JavaScript 代码规范与约束

在开发过程中,团队代码风格统一,会让我妈避免不必要的错误和低级 Bug、控制代码质量,这样我们最好会预定一套编码规范. 检验JavaScript编码规范的工具有哪些? jslint jshint ESLint 下面简单看下这3个检验工具之间的差别: jslint jslint 的作者是 Douglas Crockford(《JavaScript: The Good Parts》的作者)。 Douglas Crockford 制订了一套 JavaScript 编码规则, JSLint 通过检查和分析 JavaScript 代码, 将任何违反规则的代码警告给开发者, 且无法通过配置关闭一

npm 不加sudo 执行失败

随笔记录一个小问题, 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

node.js Sails 学习文档 model 篇

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(整个

通过 pm2 部署 node.js 项目

我们如何用 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: _

[随笔] http-server 快速创建node.js 静态服务器

说到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

NPM如何发布node模块到社区

如何把自己写的 node.js 模块发布到 npm 开源社区 有下面几个前提条件: 你需要是 npm 社区注册的会员 如果你还没有,点击下面的链接注册 https://www.npmjs.com/ 你的开发环境需要 安装node.js 和 npm 创建repository 接下来我们需要创建module所需的repository,默认你拥有一个github账号(如果没有自行解决),这个repository用来托管我们module的代码,并方便用户报告bug,最重要的是可以让其他开发者向module贡献代码,这也是乐趣所在。 初始化package.json 接下来我们创建pa

webpack 前端加载工具 让 浏览器端 javascript 执行 CommonJS规范

#为什么用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

levelDB 数据操作接口 实现 promise 规范

什么是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

node.js 下 promise 开源包 q 使用

promise 规范 可以让你从繁杂的 callback 中解脱出来. 如果我们在传统的 callback 中执行 5个 步骤,应该是下面这样的: setp1(function(res)){ setp2(function(res)){ setp3(function(res){ setp4(function(res){ setp5(function(res){ //终于执行完了 }); }); }); });

React Native 中文版 安装 入门 环境部署

要求 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

安装 nrm 自由切换 npm 源 国内镜像提升下载速度

之前写了一篇博文,关于如何把 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

angular.js 官方应用 angular-phonecat 下载 运行 学习

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 其中有几个

http-server Angular.js 后端node服务首选 轻量级替换 Express 解决方案

http-server 是轻量级web服务 你可以轻松使用 http-server 替换 Express http-server 轻量级到什么地步 无需任何设置 也需不要你引用 轻松把当前所在目录架构成一个web服务 应用场景 angular.js 应用. 因为 angular.js本身作为一个单页面应用,首先需要加载这个单页面. 而这页面,一般是我们静态目录下的 index.hlmt 然后这个静态页面加载了 angular.js 前端框架 这时真正的路由控制已经掌握到了 angular.js 的手里 所以,你不需要像 Express 这样大的包来支持后端web服务

node.js 使用 UglifyJS2 高效率压缩 javascript 文件

UglifyJS2 这个工具使用很长时间了,但之前都是在 gulp 自动构建 时用到了 UglifyJS 算法进行压缩. 最近玩了一下 UglifyJS2 ,做了一个 在线压缩javascript工具 欢迎点击玩耍. 为什么要压缩 javascript 因为每个人开发者的书写习惯,定义参数习惯,已经使用习惯都不一样. 所以相同的功能出自不同开发者代码各异.这里牵扯到一个代码所占空间. 以前端为例来说明 大家通常都会认为,现在在网络时代,动不动就是10M光纤,拨号上网让人感觉是上个世纪的方式..... 说法是没有问题,但是,我们今天讨论的并不是终端下载速度. 而是前端压缩对服务器有何利

node.js 版本控制 nvm 和 n 使用 及 nvm 重启终端失效的解决方法

今天的话题包括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 版本. 为什么

node.js 利用 sitemap 为你的站点生成站点地图

node.js 下利用 sitemap 生成站点地图. 大致的工作就是,我们生成一份提供给搜索引擎的 Sitemap 之前你获取在网络上找过各种在线生成 sitemap 工具或者服务,使用起来却都不尽人意.有的收费,有的最大抓取2层url ,还有的最大链接数限制在500个. 所以今天和大家分享的是如何用 node.js 来为站点生成 sitemap 什么是sitemap 借用百科的一段话 Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的

node.js 在 Express4.0 框架使用 Connect-Busboy 实现文件上传

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')

[转]Node.js 与 io.js 那些事儿

去年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创造出来后,

oh-my-zsh配置你的zsh提高shell逼格终极选择

抱歉,这篇博文推迟发布了,人都是有惰性的...看在这个牛逼闪闪的标题就原谅我吧!为何这篇文章要归类到 mac 下? 第一个问题,稍后我们说明下.zsh是个什么东东? 第二个问题...你应该稍微接触过一点点shell ,或者了解一点点?如果不知道 shell ,那就点下广告离开吧, 人生苦短,时间珍贵.在unix 内核的操作系统中,当然现在衍生出好多分支,linux ,OS X 都算.shell 就算和上面这些系统内核指令打交道的一座桥梁,我们通过键盘输入一种自己容易记忆识别的符号标识(shell 命令)然后 shell 解析这种命令再反馈给内核去执行一系列操作.那么问题来了,今天要说的zsh

node.js 下使用 redis 作为缓存介质

之前有一篇介绍node.js 下,轻量级缓存应用模块 node-cache点击访问.今天介绍使用 redis 作为缓存介质.首先,我们需要一个 node.js 下可以访问 redis 的中间件,就是 node_redisgithub地址:https://github.com/NodeRedis/node_redis安装:npminstall--saveredis然后我们封装一个缓存类:varredis=require('redis'); varconfig=require('../config'); ///////////////////////////////

commander.js node.js下又一个命令交互开源包

上周分享了一篇关于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.    

node.js 命令行框架 yargs 和你的程序实现交互

如何让你的node.js 应用程序像shell 脚本一样和你交互?于是就有了今天这一片博文 关于yargs 使用分享.大概有一种情况你需要让你的程序接收一个参数,通过这个参数我们做一系列的定制化功能.常见的做法是 把一些不同环境不同配置的变量写到 config 配置文件中.当你的环境变化的时候,你手动去修改你的config 中的变量来达到不同环境显示定制化的东西.更具象的一个例子:config文件中有一个配置项 langue当你发布国内站点的时候,你需要配置成 langue="zh-cn"当你发布国外站点的时候,你需要配置成 langue="en"现在,

node.js 使用 mssql 开源库操作 sqlServer 数据库

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 是

PostgreSQL 使用 node-postgres 在 node.js 中的应用

之前有一篇介绍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

README.md 如何规范 - 开源项目中必不可少的文件

我们在项目中常常看到README.md 当然扩展名可能是txt ,rb,md ,甚至 me 都有可能.其实这个小小的静态文件还是有些重要信息可以传递的.这就是你在github上创建一个项目的是,总会提示你要不要生成一个README.md 文件.README 应该是介绍code source 的一个概览.其实这个静态文件是有约定成俗的规范.你的项目介绍你的代码实现了什么功能?该如何使用? (系统环境参数,部署要素)代码组织架构是什么样的?版本更新重要摘要如果你的README包括上面的内容,那么当使用者拿到代码,打开README后,基本就知道该如何下手了.如下 README.md :DEMO ##

when 让你跳出异步回调噩梦 node.js下promise/A规范的使用

其实关于promise 的博客,前端时间专门写了一篇关于 promise 规范的文章,promise规范 让 javascript 中的异步调用更加人性化.简单回忆下:promise/A规范定义的“Deferred/Promise”模型其实是实现了“发布/订阅”模型.通过Deferred对象发布事件,包括下面2种事件完成 --> resolve事件,失败 --> reject事件,通过Promise对象进行对应完成或失败的订阅类似于任务状态转变时事件被触发.将会对应的执行事件绑定函数.每个Promise任务都有三种状态:默认(pending)、完成(fulfilled)、失败(re

node-config 模块根据 ENV 环境变量不同加载响应的配置文件

上一篇博文和大家分享了ENV定制开发,测试,发布环境变量.定制了以后如何来用,今天这篇就是要介绍如何使用自定义的不同环境变量.大概有些同学会有疑问.为什么各种环境不直接配成一致的.如果可以这么做的话,再好不过的.什么时候可能需要不同的配置.如果你想在开发环境下打印出log ,但是在正式运行环境不想打印log.你想在开发环境加载原 javascript 文件, 在正式运行环境下压缩javascript 文件.或者你想在开发环境加载一套 config 配置,在正式运行环境加载另外一套 config 配置.等等......一切你需要定制化的时候. 3. 我需要一个普通的json配置文件即可,为何要用

forever node.js web应用中不可或缺的伟大模块

javascript 一统江湖的势头越来越猛,越来越重的前端,不得不实施前后端分离,angular.js 成功把前端javascript抽象成了一个复杂的MVC框架,注意,它是一个框架,可不是普普通通的插件,或者工具包.另一位兄弟则是跳出浏览器宿主的限制,活跃在了服务器端,大名鼎鼎的 node.js还有一位齐头并进的好哥们 mongodb ,它不仅让你使用熟悉的javascript范围数据库,而且还自己实现了javascript引擎.可能创建 javascript 语言的大牛,看到今天js的发展事态,想必脊梁骨也是阵阵发凉.我们好像扯远了,开题先痛痛快快意淫一把怎能善罢甘休,O(∩_∩)O~由

前端包管理器bower的使用

随着前端项目越来越复杂,随便引入几个第三方javascript脚本库貌似已经习以为常,但是随着越来越多的包被引入,开发人员维护起来也是一件相当头疼的事,比如第三方库的版本更新,安装,卸载等.twitter推出了一个前端包管理器 bower 帮我们解决了这些头疼的事情.bower 完全借鉴了npm构思和实现原理,所以后面你会看到它的使用几乎和npm是一模一样.当然,bower 是运行在node.js 基础上,所以你的当前环境确保已经安装 node.js .bower 的基础功能是什么?1.注册模块每个包需要确定一个唯一的 ID 使得搜索和下载的时候能够正确匹配2.文件存储把文件存储在一个有效的网

angular.js 下使用 $q 创建一个promise 链式调用

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

node.js 调用 wechat 开发微信公众号自定义接口及中间件简介

上一次给公众号做自定义接口已经是很久以前的事了.....以至于今天发现那个公众号的接口已经不能服务了.访问公众号直接给出提示"该公众号暂时无法提供服务,请稍后再试"我想难道是年久失修? 也不应该啊,这么牛x的公司绝对不会修改api,或者是更新api不兼容之类的.....看来问题还是出在我这边.我甚至忘记了公众号登录密码.进去后复制接口链接地址到浏览器地址栏,发现是可以访问的,那么问题出在哪里?难道腾讯知道我好久没有维护此号了.所以暂时不提供服务了,想想以前网易邮箱经常被冻结,我竟然真的以为是这样的了.所以:我尝试前后到编辑模式,然后再切换回来,依然不提供服务...我试图改了

node.js 调试工具 node-inspector 简要说明

我们在接触客户端javascript的时候,调试利器就是firebug ,也是当年为何喜欢用上firefox 浏览器的主要动力,当然,后来 chrome 插件里也出现了firebug的身影.....但是服务器端开发语言node.js 一直以来调试不是特别方便,可能是之前被 virtual studio惯坏了,这种用 console.log() 去打印变量甚至回调数据实在是太蹩脚.当然,有一款很强大的IDE ,webstrom对node.js提供了最全面的支持,也可以轻松配置来实现调试,下回有必要和大家分享一次.今天要分享的是关于node-inspector 下调试node.js程序.第一步:n

angular 系列三 gulp 代码构建工具简介

为什么要把 gulp 的学习文章安装到这里,因为我们上一篇说到了创建一个angular.js项目框架,其中用 gulp 来构建代码.什么是 gulp ,我之前的博客介绍过 yoman项目构建工具 ,gulp 也是类似这样的工具,而且感觉比 yoman和 grunt等工具使用更加简单方便.我们在项目中使用 gulp 做什么?我们会用 gulp 定制几个任务,其中一个就是把controller中的控制器代码抽取出来,然后生成一个新的 app.js .这样的好处是不言而喻的,比如一个团队每个人负责几个控制器,如果我们不用项目管理工具来自动合并引用到文件的话,我们只能手动每个人去修改 index.ht

mac环境下node.js和phonegap/cordova创建ios和android应用

引用百度百科的一段描述: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

node.js 下依赖Express 实现post 4种方式提交参数

上面这个图好有意思啊,哈哈, 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没有支持,需要自己代码来

漫谈javascript 单线程异步io回调的特性

javascript经过浏览器大战的几次更新换代,终于一统江湖,稳坐第一把交椅,经过你会发现javascript语法和实现并不尽人意,但是丝毫不影响它的发展.我们最开始接触javascript应该大部分是从html中的js脚本开始,但是这种看似简单的语言稀里糊涂的用了好几年,也没有搞清楚它的一些原理机制,有没有躺枪!起码javascript在操作dom的时候用了各种事件回调,比如按钮,链接的点击,鼠标经过,获取焦点等等.在这个过程中,我们在dom上绑定一个事件回调函数 比如 onclick="doCheck()" 这个过程就是给dom元素注册了一个click 事件,并且绑定

async和eventproxy在流程控制上哪个更优秀

由于node.js特性异步IO,导致 node.js 开发常常让你头疼的是异步嵌套回调.一层一层的大括号嵌套让你当场就迷失在回调函数中,更不用说隔一段时间自己去维护这段代码的时候,恨不能砸显示器来泄愤.不过这个世界还是美好的,你遇到的问题大家也都遇到了,而且大牛们致力于减轻码农的各种node.js 的痛苦,开发出了高效好用的流程控制包,让你的逻辑变的清晰,维护起来一目了然.常用的有 async ,step ,eventproxystep本人接触很少,一直在用async,也是最近注意到了 eventproxy ,我想看看哪个性能更优,代码更加优雅,所以有了下面一个小demo.这个demo不去比较

request 模拟post提交表单

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',

我的vps运行4个站点,512M内存1M带宽下博客依然秒开不卡顿的原因是什么? - 站长必看

我从统计后台常看到有人site我的站,一部分是打算做友链的,另外还有一部分观望的站长,他们会发现一个固定IP上竟然绑了4个站,而且我的博客反应还足够快,一页列出40篇图文博客几乎是秒出,无延迟无等待,所以我收到一个站长的Email,大概就是问下我阿里云vps花了多少钱.站点加载速度快大概有下面几个因素:此blog是node.js开发的,异步IO处理还是有优势的.可以查看我的另外一篇博文,node.js和其他语言相比的优点在哪里?2.此blog没有用特别复杂的数据库,而且选择了小众化的google推出的kv型nosql数据库 levelDB.此数据库简约而不简单,它强悍的读写能力可以支撑十亿级别

Express 3.x升级到4.x 优缺点

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

Error: invalid csrf token

当你的Express 升级到4.0+版本后,有没有遇到过下面这个问题.{ [Error:invalidcsrftoken] expose:true, code:'EBADCSRFTOKEN', statusCode:403, status:403 }上面的错误是在node.js 运行环境的命令行报出来的.页面直接返回了500服务器错误.我执行了什么操作?这是我的一个新站 三思悦 ,此站有个功能是邀请注册,不对外公开注册的.所以管理后台有个页面用来显示 邀请码,同时有个按钮,用来生成验证码,一次生成唯一不重复的50个.所以这个页面对应2个相同的url ,只不过get方式用来呈现为

node.js使用leveldb

上一篇简单说到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

高性能kv数据库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

node.js使用mocha自动化测试程序

之前有过一篇比较简单的关于 mocha 做自动化测试的帖子, mocha测试今天稍晚详细点说下.常见的开源项目你都会发现test目录,当然我们自己创建的项目建议也加上此目录,在这个目录下做自动化测试.目前node.js下做自动化测试的工具也很多,今天我们主要来介绍下如何使用mocha进行自动化测试.安装 mochanpminstall-gmocha这样你就可以创建测试脚本了,如下:varassert=require("assert"); describe('Array',function(){ describe('#indexOf()',fu

ejs母版页让你的node.js应用开发更快更有效- 一介布衣

引子:母版页之方便之处相信做过web开发的都不用说太多,可以重复利用资源,维护方便,开发起来你只需关注当前页变动的东西,固定不变的全部放到母版页,可以理解为前人栽树后人乘凉,省时,省力,省心.下面围绕2点简单说下.一.node.js开发,基于ejs引擎的母版页二.前提环境 ,如何使用及示例介绍就像上面的这个图,如果你的业务说覆盖的页面只有中间是变化的,那么其他部分完全可以放到母版页中呈现.node.js 下的web应用开发有2种模板引擎 ejs 和 jade ,当然你可能直接用jquery 的前端模板后端ajax请求数据等等....(也算一种吧)ejs 下如何使用母版页?ejs的母版页功能支持

node.js 下使用mocha 来做测试 test for node.js

NodeJS里最常用的测试框架估计就是mocha了。它支持多种node的assert libs, 同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑Javascript代码测试。本文示例大多源于官网示例,部分示例结合需要或自己的感想有所改动。更多介绍请看 官方网址:Mocha on GithubInstallation:当你成功安装nodejs v0.10 和 npm后执行下面这条命令。#npminstall-gmochap.s. Ubuntu的注意apt源里的nodejs版本会比较旧,某些module会不支持,请从nodejs官网进行源码安装。First st

node.js post json格式数据到服务器的几种方法

json格式被越来越多的开发者说青睐,我们常常在接口定义时使用这种格式参数进行数据交换.今天主要给大家从繁到简的几个node.js下使用的提交 json个数参数的方式方法.下面示例中出现的参数都做了处理,拷贝代码后需要更改这些参数同时自己写一个接收json格式的api,请求成功后再返回json格式(一) node.js 原生自带http模块,可以解决基于http协议下的请求及回发,执行效率高,但是好多东西需要开发人员自己动手来实现,看下面代码varhttp=require('http'); var body = {   "data":{    "

node.js 下给字符串生成一个哈希散列值

我们常常对一个拼接的变量进行映射,让一个变量通过一定的算法得出一个可控的结果然后在操作.比如淘宝的分布式存储,淘宝会根据注册用户ID对64取模,结果肯定是小于64的数,就可以根据此数来确定用户信息存储在64台服务器中的哪一台.这里一个前提是会员ID是数值型,如果是字符串怎么办?本文要解决的就是这个问题.思路:给字符串求哈希散列码, 然后对固定数值求模,最后确定该把数据存储到那台服务器上.node.js 下有很多求哈希散列值的模块,本文用到的是fnv-plusgithub 地址:https://github.com/tjwebb/fnv-plus npm 安装模块(这里就省略不说了)使用:var

express 解析post方式下的json参数

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 () {    

【随笔】关于 npm 命令使用的好习惯

有关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句命令是创建项目

控制异步回调利器 - async 串行series,并行parallel,智能控制auto简介

async 作为大名鼎鼎的异步控制流程包,在npmjs.org 排名稳居前五,目前已经逐渐形成node.js下控制异步流程的一个规范.async成为异步编码流程控制的老大哥绝非偶然,它不仅使用方便,文档完善,把你杂乱无章的代码结构化,生辰嵌套的回掉清晰化.async 提供的api包括三个部分:(1)流程控制 常见的几种流程控制.(2)集合处理 异步操作处理集合中的数据.(3)工具类 .github 开源地址:https://github.com/caolan/async安装方法: npm install async使用方法: var async=require('async')

yeoman 安装和使用 - 快速构建web应用(上)

Yeoman是由Paul Irish、Addy Osmani、Sindre Sorhus、Mickael Daniel、Eric Bidelman和Yeoman社区共同开发的一个项目。它旨在为开发者提供一系列健壮的工具、程序库和工作流,帮助他们快速构建出漂亮、引人注目的Web应用。它不只是一个工具,还是一个工作流。它其实包括了三个部分yo、grunt、bower,分别用于项目的启动、文件操作、包管理。Yo: Yo是一个项目初始化工具,可以生成一套启动某类项目必需的项目文件。Bower: 一个客户端技术的软件包管理器,它可用于搜索、安装和卸载如JavaScript、HTML、C

给电脑换源 npm 国内镜像 cnpm

npm 是node.js 环境下的包管理器,非常强大智能.生活这这片神奇的土地上,各种奇葩手段屡见不鲜啊.为什么要换源? npm 官方站点http://www.npmjs.org/并没有被墙,但是下载第三方依赖包的速度让人着急啊!就拿阿里云环境来说,有时npm 一个包也需要耐心等待......等待过去也许是原地踏步,也许就是安装失败.幸运的是,国内有几个镜像站点可以供我们使用,本人在使用http://www.cnpmjs.org/速度非常快,镜像站会实时更新,为我们节省了好多时间.如何给本机换源呢?(1)通过 config 配置指向国内镜像源npmconfigsetregistryhttp:/

npm install canvas 各种依赖,各种错误 转投npm install ccap 来生成验证码

canvas 模块是npm提供的一个第三方包,国内环境安装慢的话请给npm换国内源,点击查看,用来生成图片.在本博客的应用场景是生成验证码.前端时间阿里云上使用 ubuntu 系统,本地mac OS ,安装 canvas 及各种依赖貌似很顺利,最近从ubuntu 换到了 centOS 后,进过几小时的挣扎,canvas 环境还是没有安装成功!他的依赖很多,最好按照官方wiki提供的文档来安装.wiki文档地址:https://github.com/LearnBoost/node-canvas/wikiwiki 提供的安装向导包括2部分,红框内的为不同操作系统需要安装的依赖. 红框下面是云环境需

NodeJS - Express 3.0下ejs模板使用 partial展现 片段视图

如果你也在看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已经失效,取而

mongoskin 学习总结

在node.js环境下使用mongoskin 操作mongoDB .mongoskin 的安装非常简单 npm install mongoskinmongoskin 的使用,上一篇博文已经说过,你可以返回去瞄一眼, 我是伟大的传送带下面的内容针对 mongoskin 操作 mongoDB 的api来说明:查这应该是所有数据库的灵魂,通过简单的api可以帮助我们从海量数据库总准备找到自己想要的数据.查询多条数据原生方法: find()使用: db.集合名.find([option]) [option] 为可选条件,可以空,也可以指定条件,如 {name:'xiaoxiao'}查

node.js 中的核心模块 Core Modules 加载顺序及规则

何为核心? 重要的/不可缺的!node.js作为一门跨平台服务器端编程语言,必然也有它的核心.node.js继承了javascript 客户端语言该有的优势,同时摒弃了客户端javascript的一些缺点,比如在客户端javascript环境下,全局变量可以到处被定义,随意被覆盖,代码污染严重,所以node.js有了模块的概念,在模块里定义的全局变量如果没有被export ,那么此变量是私有的,只能在定义的模块是使用.不用提醒我,我并没有跑题,正因为模块机制,导致node.js的一些核心模块也编译成各自独立的二进制文件,他们就放在 node 源代码中 lib 文件夹下.为啥是二进制文件?你不用

给linux 换上163的源

有一种错误叫做:Readingpackagelists...Done Buildingdependencytree Readingstateinformation...Done E:Unabletolocatepackagecairo上面出现的情况是阿里云环境安装图形组件 cairo 时出现错误(可以使用ccap代替生成验证码),在很多开源的LInux 内核系统下图形处理大多依赖此组件.出现上面的错误是因为nodeJS 环境下 sudo npm installcanvas 时,系统需要依赖 cairo,而服务器没有/找不到.所以用脚趾头稍微想了想便直接敲下了sudoapt-getinstall

回到顶部