2013-5-10-redis6.md
layout: post category: lessons title: “自己搭建Node+Express+Redis的MVC框架(六)” tagline: “Supporting tagline” tags: [intro, beginner, jekyll, tutorial] 与Express结合 module_users = require './routes/module_users.coffee' app.get 'users',module_users.list 流程很简单 引用模块文件
调用模块文件中的方法,前提是你要将方法输出,请参见下面的引用
测试 Controller控制器 Express路由原理 在app.coffee文件中定义路径,添加引用 index = require './routes/index.coffee' app.get 'index',index.list 在routes/index.coffee中定义方法,输出引用 list=(req,res)-> res.render 'index',{title:"Hello Express"} module.exports.list = list 这样实现了Controller和Module之间的双向通信
其中req是http请求,res是http回应,具体可参考Express手册中文版
常用的Express API req.body
这个对应的是解析过的请求体。这个特性是bodyParser() 中间件提供,其它的请求体解析中间件可以放在这个中间件之后。当bodyParser()中间件使用后,这个对象默认为 {}。
// POST user[name]=tobi&user[email]=tobi@learnboost.com req.body.user.name // => "tobi" req.params
这是一个数组对象,命名过的参数会以键值对的形式存放。 比如你有一个路由/user/:name, "name"属性会存放在req.params.name. 这个对象默认为 {}.
// GET /user/tj req.params.name // => "tj" res.
2013-5-6-express-tutorial-1.md
layout: post category : lessons tagline: “Supporting tagline” tags : [intro, beginner, jekyll, tutorial] 从零开始构建Express+Mongoose的程序 如果你已经看过第一部分,请猛击这里看下一章
关于Express的框架 调用http、express和path模块 http = require 'http' path = require 'path' 生成express应用 express = require 'express' app = express() app.configure(-> # 设置端口 app.set('port', process.env.PORT || 3000) # 设置视图和公共目录 app.use(express.logger('dev')) # app.use(express.directory(__dirname + 'public')) app.use(express.static(path.join(__dirname, 'public'))) app.use(express.favicon()) # 设置视图渲染模板为jade app.set('views', __dirname + '/views') app.set('view engine', 'jade') # 设置查询体解析为json功能 app.use(express.bodyParser({keepExtensions: true, uploadDir: './public/resources'})) # 设置http方法重写,如使用put更改数据等 app.use(express.methodOverride()) # 设置cookie和session # app.
2013-5-6-express-tutorial-2.md
layout: post category : lessons tagline: “Supporting tagline” tags : [intro, beginner, jekyll, tutorial] 从零开始构建Express+Mongoose的程序2 如果你没有看过第一部分,请猛击这里
本文之间重点讲解如何通过发送网页数据创建Mongodb的文件。
这等于是建立一个数据库的表中的一行记录。
首先我们需要一个页面,在jade模板中应该这样定义 extends single block content3 form(method='post',enctype="multipart/form- data",action='/newblog') input(type='hidden',id='',value=Date.now(),name='post[ date]') textarea(id='post_convaluent',id='Content',name='post[ content]') input(type="file",id='btn-file',name="post[image]") input(type='submit',id='btn-smt',value='好了吗?现在点击就可以发布') 说明: 通过post方法采取newblog的行动,发送多段的数据
网页抓取的数据存储在req.body.post中,以json的格式,供后续处理
需要设定对应的路由 app.post('/newblog', mongodb.create) 说明 **通过设定post的路由,告诉express,如果有post数据到newblog页面,就调用mongodb中的create方法 **
####调用的方法 create=(req,res)-> url = req.files.post[‘image’].path json = { name: req.body.post[’name’], age: req.body.post[‘age’], work: req.body.post[‘work’], email: req.body.post[’email’], title:req.body.post[’title’], content:req.body.post[‘content’], image:url.slice(7,url.length), date:req.body.post[‘date’] } aBlog = new Blog(json) aBlog.save((err)-> console.log “Hello! " + aBlog.
alpine.md
chroot to alpine linux install ./sbin/apk.static -X http://nl.alpinelinux.org/alpine/latest-stable/main/ -U --allow-untrusted --root /alpine --initdb add alpine-base mkdev mknod -m 666 /alpine/dev/full c 1 7 mknod -m 666 /alpine/dev/ptmx c 5 2 mknod -m 644 /alpine/dev/random c 1 8 mknod -m 644 /alpine/dev/urandom c 1 9 mknod -m 666 /alpine/dev/zero c 1 5 mknod -m 666 /alpine/dev/tty c 5 0 mknod -m 666 /alpine/dev/sda b 8 0 mknod -m 666 /alpine/dev/sda1 b 8 1 mknod -m 666 /alpine/dev/sda2 b 8 2 mknod -m 666 /alpine/dev/sda3 b 8 3 mknod -m 666 /alpine/dev/sda4 b 8 4 mknod -m 666 /alpine/dev/sda5 b 8 5 mknod -m 666 /alpine/dev/sda6 b 8 6 mknod -m 666 /alpine/dev/sdb b 8 16 mknod -m 666 /alpine/dev/sda1 b 8 17 mknod -m 666 /alpine/dev/sda2 b 8 18 mknod -m 666 /alpine/dev/sda3 b 8 19 mknod -m 666 /alpine/dev/sda4 b 8 20 mknod -m 666 /alpine/dev/sda5 b 8 21 mknod -m 666 /alpine/dev/sda6 b 8 22 cp /etc/resolv.