传统的 MVC 是将模板放在其他地方,比如
script 标签或者模板文件,再在 JS 中通过某种手段引用模板。按照这种思路,想想多少次我们面对四处分散的模板片段不知所措?纠结模板引擎,纠结模板存放位置,纠结如何引用模板……下面是一段 React 官方的看法:
We strongly believe that components are the right way to separate concerns rather than "templates" and "display logic." We think that markup and
2015-11-05
4869
javascript
查看更多
上一篇博文介绍了 html5 file api
html5 提供了一套可以操作本地文件的 api ,但是有一定的局限性
必须由用户发起一个事件,所以你不要妄想着用户浏览器加载某个站点时,主动去读取他本地硬盘的资料....不可能的.
你的浏览器必须支持 html5 的 file api ,所以你也不要妄想去兼容IE6
用户发起行为比如: file upload 操作, 文件拖拽 等.
最近遇到一个需求
1.本地上传视频要保存到七牛服务器
2.提交切割视频任务 (大文件切割成多份)
3.返回视频截图 (按视频长短截取图片,供管理员审核视频内容)
七牛这边提供的有 j
2015-11-04
14194
html5
查看更多
javascript 访问本地文件,已经成为可能.
HTML5 file api
该规范主要定义了以下数据结构:
File
FileList
Blob
HTML5 访问文件和大部分语言是一致的,先获取文件句柄,然后调用文件访问接口,打开文件句柄,读取文件!
选择文件
首先检测一下当前浏览器是否支持File Api:
function isSupportFileApi() {
if(window.File && window.FileList && window.FileReader && window.Blob
2015-11-03
15752
html5
查看更多
promise 规范 可以让你从繁杂的 callback 中解脱出来.
如果我们在传统的 callback 中执行 5个 步骤,应该是下面这样的:
setp1(function(res)){
setp2(function(res)){
setp3(function(res){
setp4(function(res){
setp5(function(res){
//终于执行完了
});
});
});
});
2015-11-03
8303
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
5486
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
4961
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
26769
nodejs
查看更多
坐标: 深圳 , 南山区
职位: web 开发工程师
岗位职责:
1、负责后台相关业务系统的设计和研发;
2、负责平台开放接口的设计和研发;
3、优化性能、维护现有系统的功能模块、扩展的基础框架;
任职要求:
1、本科学历以上,计算机或相关专业,2年以上工作项目经验;对javascript语言本身有较为深刻的理解。
2、 了解NodeJS及其相关框架 ,要求至少有1年以上的服务器端研发经验;
3、对数据结构和算法设计有一定的理解;
4、熟悉MongoDB或MySQL ,有较强的SQL编程、优化能力;
5、熟悉Linux,熟悉常用的Shell命令;
6、熟练使用Git代码管理工具及
2015-10-28
5428
招聘
查看更多
为什么是 node.js 桌面应用
准确的说,这只是一个浏览器, node-webkit 项目是 chromium 和 node.js 搭建起来的本地运行时环境.
我们知道node.js 是javascript 在服务器端通过强大的 V8 引擎实现的.
chromium 内置了 V8 引擎
所以 node-webkit 就这样结合起来了.
回到刚才的问题,为什么说是桌面应用
Node支持的与操作系统交互的功能,文件系统,网络 , 操作系统资源等,
以及Node之上的第三方库都可以在node-webkit中进行使用
所以他很像是一个桌面级应用,但是又有区别
和传统桌面应用不
2015-10-28
8239
nodejs
查看更多
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
2015-10-26
9457
nodejs
查看更多
错误描述
Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
解决方法
打开终端,输入 sudo xcodebuild -license
终端提示敲回车键(enter)打开许可协议 ,回车继续
终端提示 按下 “space” 键阅读许可协议,按“q” 不阅读 ,直接 q 即可
最终,终端会出现三个选项,agree 、print、cancel,不用想,能不是agree 吗!当然是输入agree,然后enter出自:Agreeing
2015-10-26
4941
开发工具
查看更多
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
2015-10-23
20632
nodejs
查看更多
文章目录
对比
为什么使用 JSX
JSX 是 Javascript 代码里直接写XML的语法
JSX (Javascript XML syntax transform) 是使用XML语法编写Javascript的一套解析工具;
X代表XML;也可以理解为扩展(eXtension),因为实现JSX功能本身就是使用Javascript;
React建议使用JSX(但非必要)
实质上这只是一个语法糖,每一个XML标签都会被JSX转换工具转换成纯Javascript代码
React 官方推荐使用JSX, 当然你想直接使用纯Javascript代码写也是可以的,只是使用JSX
2015-10-23
9292
javascript
查看更多
node.js 的child_process模块中有两个方法spawn和exec,这两个方法都可以被用来开启一个子进程来执行其他的程序
既然两个方法的功能一样,那么究竟应该选择哪个方法。在本文中,我们将一起来探索spawn和我exec方法的不同之处,以便你在将来能够选择正确的方法
spawn
child_process.spaen会返回一个带有stdout和stderr流的对象。你可以通过stdout流来读取子进程返回给Node.js的数据。stdout拥有’data’,’end’以及一般流所具有的事件。当你想要子进程返回大量数据给Node时,比如说图像处理,读取二进制数据等等,你
2015-10-21
18136
nodejs
查看更多
你有招聘/求职机会,请联系 QQ:378989619 免费发布!
地点: 北京
坐标: 中关村
职位: 后端开发工程师
我叫刘大民,是敢玩的一名普通员工,刚刚我的总监找到我。
总监:“大民,我记得你简历里说你参加广告比赛得过重在参与奖?”
我:“是啊总监。”
总监:“那你会写文案喽。”
我:“啊?”
总监:“很好,你给我写个招聘文案,三点要。”
言毕,总监就转身走了,我低头一看手表,时间还富裕刚两点六十,发会呆再写吧……
今天起晚了,10点才到公司,这月估计又得拿全勤奖了,才1000毛爷爷,穷逼公司真抠门……
上午头脑风暴后去吃午饭,午休在二楼沙发睡了一个小时
2015-10-20
4526
招聘
查看更多
关于 lodash 和 underscore 的对比看这篇帖子
今天分享一个关于 lodash 的排序小方法
_.sortBy([1, 2, 3], function(n) {
return Math.sin(n);
});
上面是官方示例
默认排序方式是正序排列
如果你的数组是一个对象组合
var arr=
[
{"key":"key1","value":"value1","createTime":"124573216"},
{"key":"key2","value":"value2","createTime":"124593216"},
{"key":"key3","va
2015-10-19
36777
javascript
查看更多
什么是 openShift
openshift免费空间是Red Hat的平台即服务的云计算平台(PaaS)
支持Java,PHP,Python,Perl,Ruby以及MySQL Database,phpMyAdmin,MongoDB NoSQL Database,Cron 1.4等应用
OpenShift服务器采用的是AmazonEC2数据中心,月流量不限制,且支持绑定顶级域名
目前Red Hat的OpenShift 上可以免费创建三个app,提供512MB内存和1G 存储空间,OpenShift免费空间的稳定性是有目共睹的
该空间在2012年十大优秀免费空间中排名榜首,虽然
2015-10-18
8736
mac
查看更多
SSH 是什么
ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器
ssh 既可以登录远程服务器,还能进行数据转发
今天就是要和大家分享关于 SSH 数据转发的功能
SSH 数据转发原理
ssh 可以绑定本地端口,实现一个 socket 监听.
当本地被监听的端口发过来数据时, ssh 会转发到远程目标服务器上,目标服务器将请求的到的数据再回发回来.
SSH 参数
-1:强制使用ssh协议版本1;
-2:强制使用ssh协议版本2;
-4:强制使用IPv4地址;
-6:强制使用IPv6地址;
-A:开启认证代理连接转发功能;
-a:关闭
2015-10-18
7283
开发工具
查看更多
上一篇分享了, 如何使用 gem 在mac 环境下安装 rhc工具
这一篇是关于 如何使用 rhc 工具连接 openshift 服务器
如何使用 rhc 首先运行 rhc setup
➜ /Users/zhangzhi >rhc setup
OpenShift Client Tools (RHC) Setup Wizard
This wizard will help you upload your SSH keys, set your application namespace, and check that other
programs like Git are pr
2015-10-18
8136
mac
查看更多
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
5707
angularjs
查看更多
redis如何处理客户端连接
redis 连接建立
Redis Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作:
首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。
然后为这个socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法
然后创建一个 readable 的文件事件用于监听这个客户端 socket 的数据发送
当客户端连接被初始化后,
会查看目前的连接数,然后对比配置好的 maxclients
2015-10-16
7664
javascript
查看更多
http-server 是轻量级web服务
你可以轻松使用 http-server 替换 Express
http-server 轻量级到什么地步
无需任何设置
也需不要你引用
轻松把当前所在目录架构成一个web服务
应用场景
angular.js 应用.
因为 angular.js本身作为一个单页面应用,首先需要加载这个单页面.
而这页面,一般是我们静态目录下的 index.hlmt
然后这个静态页面加载了 angular.js 前端框架
这时真正的路由控制已经掌握到了 angular.js 的手里
所以,你不需要像 Express 这样大的包来支持后端web服务
2015-10-15
8268
nodejs
查看更多
在 linux 下你可以很方便的使用 tree 命令来查看当前目录下的目录树机构.
但是在 mac 下,至少你需要安装一个工具.
开始,我从网上找到了一个shell 命令打印 tree 结构的方法.
find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
你可以在你的终端下,直接输入上面的shell 命令来查看当前目录的结构树
如何把它变成一个 命令,直接使用呢
我们想到了 alias 指定别名的方法
alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;___
2015-10-14
41130
javascript
查看更多
你有招聘/求职机会,请联系 QQ:378989619 免费发布!
地点: 北京
年龄: 30以下
坐标: 中关村
职位: 后端开发工程师
我们找这样的你:
• 精通PHP(Yii2), Python, Java, NodeJS中的其中一种或者多种
• 精通MySQL,PostgreSQL,Oracle中的其中任意一种
• 熟悉Redis,MongoDB等NoSQL
• 熟悉HTTP,TCP/IP
• 熟悉Unix环境
加分项目
算法
Docker
流媒体开发
前端技术,Bootstrap,Angular
Github,StackOverfl
2015-10-14
4149
招聘
查看更多
让你的浏览器 console 加入 query 方便测试调试.
这样我们去操作 dom 就像 javascript 文件中书写代码一样方便.
而且查找结果实时输出到 console 中
你可以很轻松的发现 jquery 选择器是不是有误
操作的结果是不是你想要的
如何实现
你需要在你的 console 中引入一段 jquery
var jquery = document.createElement(‘script’);
jquery.src = “http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js”;
docu
2015-10-13
16903
开发工具
查看更多
Angular.js 中的特性,双向绑定.
多么神奇的功能,让视图的改变直接反应到数据中,数据的改变又实时的通知到视图,如何做到的?
这要归功于 scope 下面3个重要的方法:
$watch
$digest
$apply
他们的区别是什么,我们来介绍下:
$watch
这是一个监听 scope 上数据的监听器
方法说明:
$scope.$watch('参数',function(newValue,oldValue){
//逻辑处理
})
上面我们就是创建了一个监听器.
'参数' 就是$scope对象下的一个对象(或者一个对象的属性),注意,这里是字符串形式.
假如你
2015-10-12
8876
angularjs
查看更多
前一段时间写了一篇博文, 关于微信内置浏览器不显示联盟广告
根据 window.navigator.userAgent 来判断当前浏览器是否是微信内置浏览器
window.navigator.userAgent=='micromessenger'
今天要分享的内容差不多,因为之前只考虑了微信浏览器的适配,回头在移动端浏览器打开站点,发现适配问题.
有的联盟会自动屏蔽移动端,但是有的联盟就不能屏蔽,所以只能手动去判断.
根据浏览器 userAgent 判断来源
安卓设备的的 userAgent 判断
navigator.userAgent.match(/Android/i)
ip
2015-10-10
5594
杂谈
查看更多
查看 关于git tag 操作方法
分享一个小知识点:
git 如何获取指定 tag 代码
如果你本地有代码仓库
git tag
//查看本地tag
git checkout tag_name
如果你本地没有代码仓库
git clone git@xxx.xxx.xxx:/project_name.git
git tag
//查看本地tag
注意上面的git服务器地址,项目所在目录要替换
然后执行 checkout
git checkout tag_name
如图:
你会看到提示:
当前处于一个“detached HEAD" 状态 ,每一个 tag 就是代
2015-10-10
140990
开发工具
查看更多
今天和大家分享关于 nginx 的一些参数使用
首先,你应该安装了nginx CentOS 安装 nginx 这是很早之前的一篇博客,可以参考.
之前,我们如何去操作 nginx
##简单粗暴法
pkill -9 nginx
kill -TERM 主进程号
kill -QUIT 主进程号
现在我们是不是要从容优雅的去面对这些操作了
nginx -s 参数
-s 参数包括下列功能:
nginx -s stop – 快速的停止Nginx
nginx -s quit – 优雅的停止Nginx
nginx -s reload – 重载配置文件
nginx -s
2015-10-08
14571
开发工具
查看更多
你有招聘/求职机会,请联系 QQ:378989619 免费发布!
地点: 北京
坐标: 朝阳门
3-5 年web开发经验
本科
职位: javascript全栈攻城狮
我们找这样的你:
• 仰望星空,脚踏实地。
• 计算机、通信、数学等相关专业毕业,有激情有梦想有野心,结果导向。
• 扎实的技术功底,优秀的沟通能力,能够身先士卒完成产品迭代。
• 能从技术和工程的角度与产品团队有效沟通合作。
• 对Web frontend, server stack, API design, data visualization有较深研究
• 较好的英文沟通能力。
我
2015-10-08
4669
招聘
查看更多