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

sails modules 模型自带的方法介绍

前面一系列介绍 Sails 框架学习 今天和大家分享 Sails 框架下模型自带的方法 1 . create(), update(), destroy(), find(), findOne(), destroy(), findOrCreate() count(), create() 创建记录 TestUser.create({name:'yijiebuy', email:'admin@yijiebuyi.com', gender:'male', age: '30'}, function(err, model){ }); 创建一条新纪录后,回调函数

node.js 下 sails orm框架 WaterLine 生命周期介绍

上一篇是关于 sails 定义模型models 属性字段定义类型 这一篇和大家分享关于 sails 的 orm框架 WaterLine 在与数据库操作过程中的生命周期控制. 生命周期 WaterLine 在执行过程中的生命周期可以简单的理解为: 调用前干什么 调用中..... 调用后干什么 具体有哪些操作会执行上面的生命周期 创建 create 创建记录时生命周期依次执行下面几个步骤: 验证模型数据之前.. 验证模型数据之后.. 创建记录之前.. 创建记录之后.. beforeValidate: fn(values, callback) afterValidate: fn(values

Waterline Models 字段定义类型设置

Waterline Models 字段定义类型设置 waterline 中涉及到的字段类型如下: string text integer float date time datetime boolean binary array json 模型属性 module.exports = { identity: 'Article_content', autoCreatedAt:false, autoUpdatedAt:false, tableName:'Article_Content', autoPK:false, attributes: { } } ide

sails 框架下 Waterline ORM 常用查询方法

之前有一篇简单介绍了 Sails下orm框架 waterline Waterline 常用的查询方法 find 条件查询 事例: models.user.find().exec(function(err, models) { if(err) return res.json({ err: err }, 500); }); 上面事例的 find 方法无参数,相当于全表查询,最后执行 exec 方法拿到数据. 现在我们来看下 find 方法可以接受哪些参数呢. find 方法可以接收 3类参数: 过滤条件 where 查询条数限制 skip 和 limit 排序条件 so

sails 特色路由 blueprints 的支持及自定义路由

blueprints 是 sails 框架特色功能 Sails中的路由,blueprint 功不可没,网上翻译成 "蓝图" , Sails的blueprint是负责指挥每一条客户端请求应该分配到服务器端的哪个Action去 ,你可以理解成路由的"调度中心" blueprint主要分为三种:RESTful routes、Shortcut routes、Action routes . RESTful routes 当路径诸如: /:post 或者 /:post/:id的时候,blueprint会根据HTTP的动作(GET、POST、DELETE、PUT等

sails 框架下的 orm 实现 - Waterline

上一篇介绍了 使用sails框架快速搭建项目 今天和大家分享 sails 另外一个重要的功能模块: sails的ORM实现 什么是ORM Java 中的 Hibernate 框架的一个重要功能便是将数据库中的数据与 Java 中的对象进行映射,被称为 ORM (Object Relational Mapping), Node.js 里常用的 Mongoose ,便是将 MongoDB 的文档,映射为 JavaScript 的对象, 而 Waterline 可以看做是一个支持多种数据库的 Mongoose ,使得可以用一样的代码来实现对多种数据库的操作,无论是关系数据库还是文档数据库,都可

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 框架

微信第三方活动 关注微信公众号才能参与

#产品要求:必须先关注公众号才能参与活动 ###上面需求涉及到的几个点: 1.access_token中继服务 2.第三方页面授权 3.获取微信用户信息 前面有一篇 node.js定时获取access_token 那么根据此博文我们可以解决 access_token 中继服务的创建 第三方页面授权 前提:必须微信服务号 且 第三方站点域名设置为微信管理后台安全域 获取微信用户信息 前提:微信管理后台开通开发者模式,且微信回调接口调试无误. 如何在页面授权时判断用户是否关注 首先拉取当前公众号下所有关注用户 (存储用户 openid ) 然后根据存储的所有用户openid 去获取

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

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 中实现的ES6 新特性

ES6 的发布,给 JavaScript 开发带来了很多实实在在的特性,那么对于 node.js 的开发者而言,V8对于ES6新特性的支持有哪些? 如何查看node 的新特性 process.versions ➜ /Users/zhangzhi >node process.versions { http_parser: '2.5.0', node: '4.2.4', v8: '4.5.103.35', uv: '1.7.5', zlib: '1.2.8', ares: '1.10.1-DEV', icu: '56.1', modules: '4

通过 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: _

node.js 单元测试 Unit Test 及 程序持续集成 CI 工具

JavaScript 单元测试、更因其执行环境复杂无比、自动化门槛超高. 目前 JavaScript 越来越复杂庞大,其实更需要单元测试来确保品质. 但是由于 PhantomJS、Travis CI 等工具… 写 JavaScript 单元测试变得轻松许多. 今天来聊一下关于 javascript 单元测试 Unit Test 及 CI 持续集成工具. Unit Test 单元测试 我们常写一些工具类的 JavaScript Function、甚至包装成组件、以方便未来重复使用. 单元测试 (Unit Test) 是另外一份代码、用来检查这些代码的正确性. 例如过去我们得替自己撰写 t

[随笔] 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

pormise Q 使用文档简单描述

关于 promise 介绍和使用方法 请点击浏览其他博客. 今天分享的是针对 Q 开源包 api 的简单白话版本. promise.then(onFulfilled, onRejected, onProgress) then 回调接收 3个参数 ,分别是 成功时,失败时,持续读取状态时 前两个函数对应Promise的两种状态的回调函数fulfiled 和 rejected,第三个函数用于处理进度信息 promise.catch(onRejected) promise 遇到异常时执行 promise.then(undefined, onRejected) 当catc

promise Q.all 方法使用 及 spread 分散返回结果

promise 规范 点击查看此博文了解 promise规范让你解脱callback回调噩梦 promise 规范 开源包 Q 使用 点击查看博文 node.js下如何使用q 当promise 遇到 forEach 当你的一个业务需要执行多个异步方法时,最后统一返回 计数器法 顾名思义,用一个计数器来统计遍历/调用函数的次数,最后一次统一返回结果 假设我们有一个 实现 promise 规范的函数 test var test=function(a){ var defer=Q.defer(); defer.resolve(a+1); return defer.p

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 学习 安装 Android 运行环境

React Native 安卓应用程序所需要的开发环境的基本安装步骤 安装和配置 SDK 安装最新的 JDK. 安卓 SDK brew install android-sdk 将它添加到 ~/.bashrc, ~/.zshrc 或者任何其他您的 shell 所使用的路径: export ANDROID_HOME=/usr/local/opt/android-sdk 启动一个新的 shell 并且运行 android ➜ /Users/zhangzhi >android Android SDK 生成工具版本 23.0.1 Android 6.0 (API 23

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

node.js webkit 项目 开启node.js 桌面应用

为什么是 node.js 桌面应用 准确的说,这只是一个浏览器, node-webkit 项目是 chromium 和 node.js 搭建起来的本地运行时环境. 我们知道node.js 是javascript 在服务器端通过强大的 V8 引擎实现的. chromium 内置了 V8 引擎 所以 node-webkit 就这样结合起来了. 回到刚才的问题,为什么说是桌面应用 Node支持的与操作系统交互的功能,文件系统,网络 , 操作系统资源等, 以及Node之上的第三方库都可以在node-webkit中进行使用 所以他很像是一个桌面级应用,但是又有区别 和传统桌面应用不

node-webkit 项目中的 package.json 格式

node.js 既然是依靠google V8引擎驱动的,而chrome浏览器内置了V8,所以就诞生了 node-webkit 这样的项目. 它的执行宿主也是 浏览器,但是由于 node.js 的支持,我们可以轻松访问当前执行环境的OS ,这不就是PC 客户端程序的功能吗. 可见 node-webkit 项目利用了web UI 的优势,node.js 访问本地OS 的优势,从而用 javascript 实现了一个本地 客户端程序. 今天我们首先来看下一个简单的 node-webkit 项目中 package.json 中,各项所代表的意义. 实例: { "name": "Ser

mac 系统下 如何 彻底 删除 node.js

mac 系统下,如何彻底删除 node.js 网上找到一段脚本,可以彻底从你的mac上卸载掉node.js #!/bin/bash lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom \ | while read i; do sudo rm /usr/local/${i} done sudo rm -rf /usr/local/lib/node \ /usr/local/lib/node_modules \ /var/db/receipts/org.nodejs.* 首先创建一个 shell 文件 nano

spawn exec方法 在 node.js child_process模块中的应用及区别 解决 Error: maxBuffer exceeded

node.js 的child_process模块中有两个方法spawn和exec,这两个方法都可以被用来开启一个子进程来执行其他的程序 既然两个方法的功能一样,那么究竟应该选择哪个方法。在本文中,我们将一起来探索spawn和我exec方法的不同之处,以便你在将来能够选择正确的方法 spawn child_process.spaen会返回一个带有stdout和stderr流的对象。你可以通过stdout流来读取子进程返回给Node.js的数据。stdout拥有’data’,’end’以及一般流所具有的事件。当你想要子进程返回大量数据给Node时,比如说图像处理,读取二进制数据等等,你

回到顶部