一. 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
2230
nodejs
查看更多
什么是事件循环 Event loop 事件循环是 Node.js 处理非阻塞 I/O 操作的机制——尽管 JavaScript 是单线程处理的——当有可能的时候,它们会把操作转移到系统内核中去。
既然目前大多数内核都是多线程的,它们可在后台处理多种操作。
当其中的一个操作完成的时候,内核通知 Node.js 将适合的回调函数添加到 轮询 队列中等待时机执行.
工作机制是什么样的? Client 请求到达 node api,该请求被添加到Event Queue(事件队列)[这是因为Node.js 无法同时处理多个请求]
Event Loop(事件循环) 始终检查事件队列中是否有待处理事件,如果
2019-08-03
1582
nodejs
查看更多
前言 早期 Unix (第 1-6 版,1969-1975)的命令行解释器依赖独立程序 /etc/glob 展开参数中的通配符。
这个程序会展开通配符并把展开后的文件列表传给命令。
它的名字是 "global command" 的简称。
后来这个功能由工具函数 glob() 提供,被 shell 等程序使用。 -- 维基百科
python语言中有了golb封装的包,接着有了今天我们看到的JavaScript实现的glob.
Glob可以做什么 它可以根据指定的通配符来匹配文件,并且把匹配到的结果列表返回给你.
安装 npm install glob
用法 v
2017-09-28
3295
nodejs
查看更多
前言 由于现在的项目都流行前后端分离,
导致后端部署服务和前端一定不会解析到一个服务上,
这样面临的就是跨域请求.
什么情况下会出现跨域请求点击查看这篇博文介绍.
解决跨域的方法
nginx设置跨域请求头点击查看
服务端代码解决跨域
今天我们介绍后者,服务器端如何解决跨域.
Express框架下设置跨域请求
cors安装包
自己定义中间件
cors安装包 npm install cors --save
使用
const cors = require('cors');
server.use(cors());
自定义中间件 项目 middlewares 文件夹下创建 cors.js
m
2017-07-25
2729
nodejs
查看更多
什么是node.js 的中间件 在整个web请求的生命周期中,
客户端request 过来一个请求,
接着服务器端做出响应处理,
最后response结果给客户端.
上面这个请求过程中,其中服务器端做出响应处理时,会有一系列处理单元,这些处理单元可以简单的理解成中间件.
node.js中间件:
它泛指一种设计模式、一系列的处理单元、过滤器和处理程序;
以函数的形式存在,形成一个异步队列,来完成对数据的预处理和后处理;
它的优点在于灵活处理业务逻辑中的单元模块;
使用中间件我们用极少的操作就能得到一个插件,用最简单的方法就能将新的过滤器和处理程序扩展到现有的系统上.
Express 中间件实现
2016-12-26
1613
nodejs
查看更多
前面一系列介绍 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){
});
创建一条新纪录后,回调函数
2016-09-06
8543
nodejs
查看更多
上一篇是关于 sails 定义模型models 属性字段定义类型
这一篇和大家分享关于 sails 的 orm框架 WaterLine 在与数据库操作过程中的生命周期控制.
生命周期
WaterLine 在执行过程中的生命周期可以简单的理解为:
调用前干什么
调用中.....
调用后干什么
具体有哪些操作会执行上面的生命周期
创建 create
创建记录时生命周期依次执行下面几个步骤:
验证模型数据之前..
验证模型数据之后..
创建记录之前..
创建记录之后..
beforeValidate: fn(values, callback)
afterValidate: fn(values
2016-09-05
6130
nodejs
查看更多
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
2016-09-02
6798
nodejs
查看更多
之前有一篇简单介绍了 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
2016-09-01
10947
nodejs
查看更多
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等
2016-08-25
6389
nodejs
查看更多
上一篇介绍了 使用sails框架快速搭建项目
今天和大家分享 sails 另外一个重要的功能模块:
sails的ORM实现 什么是ORM
Java 中的 Hibernate 框架的一个重要功能便是将数据库中的数据与 Java 中的对象进行映射,被称为 ORM (Object Relational Mapping),
Node.js 里常用的 Mongoose ,便是将 MongoDB 的文档,映射为 JavaScript 的对象,
而 Waterline 可以看做是一个支持多种数据库的 Mongoose ,使得可以用一样的代码来实现对多种数据库的操作,无论是关系数据库还是文档数据库,都可
2016-08-25
9371
nodejs
查看更多
什么是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
16294
nodejs
查看更多
#产品要求:必须先关注公众号才能参与活动
###上面需求涉及到的几个点:
1.access_token中继服务
2.第三方页面授权
3.获取微信用户信息
前面有一篇 node.js定时获取access_token
那么根据此博文我们可以解决 access_token 中继服务的创建
第三方页面授权
前提:必须微信服务号 且 第三方站点域名设置为微信管理后台安全域
获取微信用户信息
前提:微信管理后台开通开发者模式,且微信回调接口调试无误.
如何在页面授权时判断用户是否关注
首先拉取当前公众号下所有关注用户 (存储用户 openid )
然后根据存储的所有用户openid 去获取
2016-08-18
11265
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
6135
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
11494
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
9299
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
13266
nodejs
查看更多
随笔记录一个小问题, 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
10967
nodejs
查看更多
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
2016-01-18
7530
nodejs
查看更多
我们如何用 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
17834
nodejs
查看更多
JavaScript 单元测试、更因其执行环境复杂无比、自动化门槛超高.
目前 JavaScript 越来越复杂庞大,其实更需要单元测试来确保品质.
但是由于 PhantomJS、Travis CI 等工具… 写 JavaScript 单元测试变得轻松许多.
今天来聊一下关于 javascript 单元测试 Unit Test 及 CI 持续集成工具.
Unit Test 单元测试
我们常写一些工具类的 JavaScript Function、甚至包装成组件、以方便未来重复使用.
单元测试 (Unit Test) 是另外一份代码、用来检查这些代码的正确性.
例如过去我们得替自己撰写 t
2015-11-29
7277
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
18329
nodejs
查看更多
关于 promise 介绍和使用方法 请点击浏览其他博客.
今天分享的是针对 Q 开源包 api 的简单白话版本.
promise.then(onFulfilled, onRejected, onProgress)
then 回调接收 3个参数 ,分别是 成功时,失败时,持续读取状态时
前两个函数对应Promise的两种状态的回调函数fulfiled 和 rejected,第三个函数用于处理进度信息
promise.catch(onRejected)
promise 遇到异常时执行
promise.then(undefined, onRejected)
当catc
2015-11-14
5723
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
7517
nodejs
查看更多
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
2015-11-12
17061
nodejs
查看更多
promise 规范 可以让你从繁杂的 callback 中解脱出来.
如果我们在传统的 callback 中执行 5个 步骤,应该是下面这样的:
setp1(function(res)){
setp2(function(res)){
setp3(function(res){
setp4(function(res){
setp5(function(res){
//终于执行完了
});
});
});
});
2015-11-03
8187
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
5368
nodejs
查看更多
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
2015-11-02
4864
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
26653
nodejs
查看更多
为什么是 node.js 桌面应用
准确的说,这只是一个浏览器, node-webkit 项目是 chromium 和 node.js 搭建起来的本地运行时环境.
我们知道node.js 是javascript 在服务器端通过强大的 V8 引擎实现的.
chromium 内置了 V8 引擎
所以 node-webkit 就这样结合起来了.
回到刚才的问题,为什么说是桌面应用
Node支持的与操作系统交互的功能,文件系统,网络 , 操作系统资源等,
以及Node之上的第三方库都可以在node-webkit中进行使用
所以他很像是一个桌面级应用,但是又有区别
和传统桌面应用不
2015-10-28
8153
nodejs
查看更多