- 介绍
- facebook的页面异步加载框架
- 不同于ajax的http调用,需要更多的网线连接。bigpipe与当前页面共用http连接
- 使用
- 前端
- <script src=“jquery.js”></script> - <script src=“underscore.js”></script> - <script src=“bigpipe.js”></script> - <div id=“body”></div> - <script type=“text/template” id=“tpl_body”> - <div><%=articles%></div> - </script> - <script> - var bigpipe = new Bigpipe()
- bigpipe.ready(‘articles’, function(data) {
- $(‘#body’).html(_.render($(‘#tpl_body’).html(), {articles: data}))
- })
- </script> - 服务器端
- app.get(‘/profile’, function (req, res) {
- if (!cache[layout]) {
- cache[layout] = fs.readFileSync(path.join(VIEW_FOLDER, layout), ‘utf8’)
- }
- res.writeHead(200, {‘Content-Type’: ‘text/html’})
- res.write(render(complie(cache[layout])))
- ep.all(‘users’, ‘articles’, function () {
- })
- ep.fail(function(err) {
- })
- db.getData(‘sql1’, function (err, data) {
- data = err ? {} : data
- res.write(‘’)
- })
- })
- nodejs使用
- ‘use strict’
- var BigPipe = require(‘bigpipe’);
- var bigpipe = BigPipe.createServer(8080, {
- pagelets: __dirname + ‘/pagelets’,
- dist: __dirname + ‘/dist’
- });
- o→ 开启https
- var bigpipe = BigPipe.createServer(443, {
- key: fs.readFileSync(__dirname + ‘/ssl.key’, ‘utf-8’),
- cert: fs.readFileSync(__dirname + ‘/ssl.cert’, ‘utf-8’)
- });
- o→ 嫁接
- var server = require(‘http’).createServer(),
- BigPipe = require(‘bigpipe’);
- var bigpipe = new BIgPipe(server, {options});
- bigpipe.listen(8080, function listening(){
- console.log(‘listening on port 8080.’);
- });
- bigpipe.define(‘../pagelets’, function done(err){
- }); # 合并pagelets, 结束后调用done
- o→ AMD 方式define,与链式编程
- bigpipe.define([Pagelet1, Pagelet2, Pagelet3], function done(err){
- }).define(‘../more/pagelets’, function done(err){});
-
bigpipe.before来添加中间件, remove来删除中间件, disable、enable来跳过和重新启用中间件
-
bigpipe.use来引用插件
- api
- BigPipe所有组件继承EventEmitter interface
- 功能
- pagelets
- var Pagelet = require(‘bigpipe’).Pagelet;
-
var Pagelet = require(‘pagelet’);
- Pagelet.extend({
- js: ‘client.js’,
- css: ‘sidebar.styl’,
- view: ‘templ.jade’,
- name: ‘sidebar‘, // 唯一路由路径
- get: function get(){
- }
- }).on(module);
-
traverse方法自动调用来递归找additional child pagelets, 要手动指定名称时手动调用