12 2013 档案

摘要:一、基本语法:location [=|~|~*|^~] /uri/ { … }二、分类: 1.基本location:以“=”或“^~”为前缀或者没有任何前缀的/uri/ 2.正则location:以“~”或“~*”为前缀的/uri/ 基本location 又分为2种: 1)严格精确匹配: “=” 2)最大前缀匹配: 无前缀或者以“^~”三、解释: 1)= 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。 2)~ 为区分大小写匹配(可用正则表达式) 3)~* 为不区分大小写匹配(可用正则表达式) 4)!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 5)^~ 如果... 阅读全文
posted @ 2013-12-26 18:26 yupeng 阅读(3732) 评论(1) 推荐(0) 编辑
摘要:1.connect中间件csrf原理:在express框架中csrf 是通过connect 模块的中间件来解决的。其原理是在前端构造一个隐藏的表单域“_csrf” ,后端生成一个值,作为该表单域,然后在提交表单的时候,将这个值提交到后端,后端再根据这个值来比较,如果和之前的值相等的,就认为是正确的,否则就是错误的。 我们来看看代码:module.exports = function csrf(options) { options = options || {}; var value = options.value || defaultValue; return function(req,... 阅读全文
posted @ 2013-12-26 18:23 yupeng 阅读(5394) 评论(0) 推荐(0) 编辑
摘要:本文是基于 kraken-js 0.6.1 版本的关于如何使用kraken-js 可以去看看官网的使用文档 点击这里。kraken-js 是基于express之上的,目的在于让工程师更多的去关注代码逻辑,少关注自身的开发环境,所以他将express所有的一些公用的配置都写在了配置文件里面了。暴露给开发者的很少。下面来看看kraken-js 源码,分析是如何创建nodejs应用程序的。如果对express 不太理解的,可以看看我之前博客写的express框架解密序列。按照kraken-js 官网上的步骤,我们创建了一个新项目,然后生成了代码是这个样子的:对这个结构说明下:/config ---应 阅读全文
posted @ 2013-12-20 16:47 yupeng 阅读(4689) 评论(0) 推荐(1) 编辑
摘要:本文档是基于express 3.4.6 的在我们的代码中,渲染模板大致是这样写的exports.index = function(req, res){ res.render('index', { title: 'Express' });};这个req,res 函数其实是经过了中间件middleware.js 处理后的,我们在前面提到过。req,res的原型分别为app.request 和app.response req.__proto__ = app.request; res.__proto__ = app.response;而app.request 和app. 阅读全文
posted @ 2013-12-19 15:55 yupeng 阅读(8427) 评论(0) 推荐(2) 编辑
摘要:本文档是基于express3.4.6express 的路由是自己去实现的,没有使用connect中的路由中间件模块。1、在如何创建一个app那篇中,我们提到了路由, //router //路由 this._router = new Router(this); this.routes = this._router.map; this.__defineGetter__('router', function(){ this._usedRouter = true; this._router.caseSensitive = this.enabled('case sensitive 阅读全文
posted @ 2013-12-19 15:18 yupeng 阅读(7848) 评论(0) 推荐(3) 编辑
摘要:本文档是基于express 3.4.6 的在上篇中我们提到了中间件,这篇主要解释这个模块,middleware.js 为:var utils = require('./utils');/** * Initialization middleware, exposing the * request and response to eachother, as well * as defaulting the X-Powered-By header field. * * @param {Function} app * @return {Function} * @api private 阅读全文
posted @ 2013-12-19 10:51 yupeng 阅读(3365) 评论(0) 推荐(1) 编辑
摘要:本文是基于express 3.4.6 的1.在我们的app.js 文件里面有这么几行 http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port'));});这个其实是调用http模块 的 createServer 函数创建一个服务,然后监听端口的。2. 我们再去看看express 的入口文件 /** * Module dependencies. */var co 阅读全文
posted @ 2013-12-19 10:42 yupeng 阅读(5243) 评论(0) 推荐(1) 编辑
摘要:本文是基于express3.4.6的。1.express 代码结构为: bin/express 是在命令行下的生成express 框架目录文件用的lib/express 是框架的入口文件lib/router 是路由模块,主要是进行路由分发,比对,执行callbacklib/middleware 是中间件模块,主要是对response,request进行改写lib/request 是请求lib/response 是响应lib/utils 是工具集函数,是对connect模块的一个补充,比如地址处理正则lib/view 是处理视图2.express 框架调用关系图: 阅读全文
posted @ 2013-12-19 09:33 yupeng 阅读(5055) 评论(2) 推荐(1) 编辑
摘要:1.什么是getter,什么是setter? getter 是一种获得属性值的方法,setter是一种设置属性值的方法。2.怎么定义? 有2种办法:在对象初始化的时候定义在对象定义后的时候定义3.例子: yupeng's document 结果:100 101200 201 阅读全文
posted @ 2013-12-18 13:43 yupeng 阅读(23472) 评论(5) 推荐(2) 编辑
摘要:1.Object.create() 是什么? Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不是一个子函数,可以传一个null,第二个参数是对象的属性描述符,这个参数是可选的。 例如: function Car (desc) { this.desc = desc; this.color = "red";} Car.prototype = { getInfo: function() { return 'A ' + this.color + ' &# 阅读全文
posted @ 2013-12-17 11:12 yupeng 阅读(47798) 评论(2) 推荐(2) 编辑
摘要:之前有过一个谈了很多关于PayPal移动到node.js的一个应用平台。作为设置我的免费用户界面的第1部分的延续,我很高兴地说,这些传言是真的,我们的Web应用程序正在从Java迁移到JavaScript和node.js中。从历史上看,我们工程团队的代码已经被分割成浏览器层(使用HTML , CSS和JavaScript )和应用层(使用Java ) 。试想一下,一个HTML的开发人员要求一个Java开发人员将“A”和“B”页面连接在一起,但是这就是我们。该模型通过引入全栈工程师,落后那些能够创造一个好的用户界面,然后生成应用程序去支持它。称他们为独角兽,但是这就是我们想要的,在PayPal中 阅读全文
posted @ 2013-12-15 10:52 yupeng 阅读(3029) 评论(3) 推荐(1) 编辑
摘要:本帖子是记录一些javascript的一些文章:1. 理解node.js2.异步编程http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html 阅读全文
posted @ 2013-12-14 22:18 yupeng 阅读(588) 评论(0) 推荐(0) 编辑
摘要:本文是在mac下配置nodejs 在nginx下的反向代理1.安装nodejs,之前就安装了。2.安装nginx ,我采用的直接源码安装3.进入/usr/local/nginx/conf 目录,在该目录下创建include 文件下,我的配置文件就写在这个文件夹里面4.进入/usr/local/nginx/conf/include 目录,创建nginx.node.conf 文件,在里面输入如下代码:upstream nodejs { server 127.0.0.1:3000; #server 127.0.0.1:3001; keepalive 64;}server { ... 阅读全文
posted @ 2013-12-13 11:36 yupeng 阅读(28436) 评论(1) 推荐(0) 编辑
摘要:在网上看到一些帖子,吐糟,质疑nodejs 程序的稳定性,为什么呢?其一,可能这个和javascript有关吧,node是拿javascript去实现的,而javascript又被称为是“世界上误解最深的语言”,我们可以去看看nodejs 创始人的说法,可以去看看知乎的这篇文章,为什么node 用javascript去实现,其二,nodejs 毕竟还年轻,而且官网在部分模块也标注了此模块的目前的状态。 这2天我抽了点时间思考了下这个问题,我觉得我们程序首先功能应该是独立的,就是一个功能出异常了,不应该去影响另外一个正常的功能,不应该将整个程序都崩溃掉,其次,即使是程序崩溃了,我们也应该有... 阅读全文
posted @ 2013-12-13 11:18 yupeng 阅读(11718) 评论(0) 推荐(4) 编辑
摘要:昨天研究了下如何用C++和node交互,在node的程序中,如果有大数据量的计算,处理起来比较慢,可以用C++来处理,然后通过回调(callback的形式),返回给node。首先,先来看看node 是如何和C++交互吧。前提:需要安装nodejs 环境,安装node-gyp 包。采用npm 方式安装,这个太方便了,修改本文件夹下面的package.json 依赖选项,然后执行npm install 就可以了。1.以hello world 为例来说明:1)建立一个文件夹hello,在这个文件夹里依次添加3个文件,hello.cc, binding.gyp,test.js (其中hello.c.. 阅读全文
posted @ 2013-12-11 15:12 yupeng 阅读(26934) 评论(5) 推荐(6) 编辑
该文被密码保护。
posted @ 2013-12-10 22:44 yupeng 阅读(3) 评论(0) 推荐(0) 编辑
摘要:1.避免使用同步代码:// Good: write files asynchronouslyfs.writeFile('message.txt', 'Hello Node', function (err) { console.log("It's saved and the server remains responsive!");}); // BAD: write files synchronouslyfs.writeFileSync('message.txt', 'Hello Node');conso 阅读全文
posted @ 2013-12-05 11:18 yupeng 阅读(971) 评论(0) 推荐(1) 编辑