Comparing version 0.1.0 to 0.1.1
const Koa = require('koa') | ||
const app = new Koa() | ||
const path = require('path') | ||
const fs = require('fs') | ||
const onerror = require('koa-onerror') | ||
const bodyparser = require('koa-bodyparser') | ||
const logger = require('koa-logger') | ||
const ejs = require('ejs') | ||
// this is important | ||
global.Promise = require('bluebird') | ||
const basic = require('./bpmodules/basic') | ||
var ejs = require('ejs'); | ||
const app = new Koa() | ||
// error handler | ||
@@ -19,8 +23,4 @@ onerror(app) | ||
app.use(logger()) | ||
app.use(require('koa-static')(__dirname + '/public')) | ||
app.use(require('koa-static')(path.join(__dirname, '/public'))) | ||
// app.use(views(__dirname + '/views', { | ||
// extension: 'pug' | ||
// })) | ||
// logger | ||
@@ -34,22 +34,26 @@ app.use(async (ctx, next) => { | ||
app.use(async (ctx, next) => { | ||
app.use(async (ctx, next) => { | ||
const start = new Date() | ||
// const start = new Date() | ||
ctx.render = function (tpl, data, cb) { | ||
var fs = require('fs'); | ||
var read = require('fs').readFileSync; | ||
var join = require('path').join; | ||
const read = require('fs').readFileSync | ||
// /Users/youku/workspace/github/bigview-koa/examples/bpmodules/basic/p2/p2 | ||
if (!fs.existsSync(tpl + ".html") ){ | ||
console.log("tpl=" + tpl) | ||
var str = read(join(__dirname, './views/' + tpl + '.html'), 'utf8'); | ||
}else{ | ||
console.log("tpl2=" + tpl) | ||
var str = read(tpl + '.html', 'utf8'); | ||
let str | ||
if (!fs.existsSync(tpl + '.html')) { | ||
throw new Error('cannot find file: "' + tpl + '.html"') | ||
} else { | ||
str = read(tpl + '.html', 'utf8') | ||
} | ||
html = ejs.compile(str)(data); | ||
cb(null, html) | ||
let html = '' | ||
let errmsg = false | ||
try { | ||
html = ejs.render(str, data) | ||
} catch (err) { | ||
errmsg = err | ||
console.log(err) | ||
} | ||
cb(errmsg, html) | ||
} | ||
@@ -59,4 +63,2 @@ await next() | ||
// ctx.render(tpl, data | ||
@@ -97,4 +99,4 @@ // app.get('/', require('./bpmodules/basic')); | ||
console.error('server error', err, ctx) | ||
}); | ||
}) | ||
module.exports = app |
@@ -1,6 +0,8 @@ | ||
var app = require('./app') | ||
const app = require('./app') | ||
// const open = require("open") | ||
app.listen(4005) | ||
var open = require("open"); | ||
// open("http://127.0.0.1:4005"); | ||
console.log('Please open "http://127.0.0.1:4005"') | ||
// open("http://127.0.0.1:4005"); |
@@ -1,31 +0,27 @@ | ||
'use strict' | ||
const MyBigView = require('./MyBigView') | ||
const Main = require('./main') | ||
const Layout = require('./layout') | ||
const P1 = require('./p1') | ||
const P2 = require('./p2') | ||
module.exports = function (ctx, next) { | ||
var bigpipe = new MyBigView(ctx, 'basic/index', { title: "测试" }) | ||
// bigpipe.mode = 'render' | ||
bigpipe.add(require('./p1')) | ||
bigpipe.add(require('./p2')) | ||
if (ctx.query && ctx.query.bigview_mode) { | ||
bigpipe.mode = ctx.query.bigview_mode | ||
} | ||
// console.log(bigpipe.mode) | ||
// 从this.cookies('bigview_mode') 其次 | ||
// debug("this.cookies = " + req.cookies) | ||
if (ctx.cookies && ctx.cookies.bigview_mode) { | ||
bigpipe.mode = ctx.cookies.bigview_mode | ||
} | ||
var bigpipe = new MyBigView(ctx) | ||
console.log(bigpipe.mode) | ||
// main and layout setter | ||
bigpipe.setMain(new Main(ctx)) | ||
bigpipe.setLayout(new Layout(ctx)) | ||
// bigpipe.preview('aaaa.html') | ||
// bigpipe.isMock = true | ||
// bigpipe.previewFile = 'aaaa.html' | ||
return bigpipe.start() | ||
} | ||
bigpipe.mode = 'pipeline' | ||
bigpipe.add(P1, ctx) | ||
bigpipe.add(P2, ctx) | ||
if (ctx.query && ctx.query.bigview_mode) { | ||
bigpipe.mode = ctx.query.bigview_mode | ||
} | ||
if (ctx.cookies && ctx.cookies.bigview_mode) { | ||
bigpipe.mode = ctx.cookies.bigview_mode | ||
} | ||
return bigpipe.start() | ||
} |
@@ -1,3 +0,1 @@ | ||
'use strict' | ||
const BigView = require('../../../src') | ||
@@ -7,9 +5,9 @@ | ||
before () { | ||
return new Promise(function(resolve, reject) { | ||
setTimeout(function(){ | ||
resolve(true) | ||
}, 0) | ||
return new Promise(function (resolve, reject) { | ||
setTimeout(function () { | ||
resolve(true) | ||
}, 0) | ||
}) | ||
} | ||
beforeRenderLayout () { | ||
@@ -19,3 +17,3 @@ // console.log('beforeRenderLayout') | ||
} | ||
afterRenderLayout () { | ||
@@ -26,5 +24,2 @@ // console.log('afterRenderLayout') | ||
// after () { | ||
// | ||
// } | ||
} | ||
} |
@@ -1,30 +0,29 @@ | ||
'use strict' | ||
const path = require('path') | ||
const Biglet = require('biglet') | ||
const Pagelet = require('biglet') | ||
module.exports = class MyPagelet extends Pagelet { | ||
constructor () { | ||
super() | ||
this.root = __dirname | ||
this.name = 'pagelet1' | ||
this.data = { | ||
is: "pagelet1测试", | ||
po: { | ||
name: this.name | ||
} | ||
module.exports = class P1Pagelet extends Biglet { | ||
constructor (args) { | ||
super(args) | ||
this.root = __dirname | ||
this.name = 'biglet1' | ||
this.data = { | ||
is: 'pagelet1测试', | ||
po: { | ||
title: 'Green City', | ||
src: 'https://mir-s3-cdn-cf.behance.net/projects/404/ce919652243157.Y3JvcCw3MjQsNTY3LDQwOCwxMzc.png' | ||
} | ||
this.domid = 'pagelet1' | ||
this.location = 'pagelet1' | ||
// this.tpl = 'tpl/p1.html' | ||
this.delay = 4000 | ||
} | ||
this.domid = 'pagelet1' | ||
this.tpl = path.join(__dirname, './tpl/index') | ||
this.location = 'pagelet1' | ||
this.delay = 4000 | ||
} | ||
fetch() { | ||
fetch () { | ||
return this.sleep(this.delay) | ||
} | ||
sleep(time) { | ||
return new Promise((resolve)=> setTimeout(resolve, time)) | ||
sleep (time) { | ||
return new Promise((resolve) => setTimeout(resolve, time)) | ||
} | ||
} |
@@ -1,28 +0,28 @@ | ||
'use strict' | ||
const path = require('path') | ||
const Biglet = require('biglet') | ||
const Pagelet = require('biglet') | ||
module.exports = class P2Pagelet extends Biglet { | ||
constructor (args) { | ||
super(args) | ||
this.root = __dirname | ||
this.name = 'biglet2' | ||
this.data = { | ||
t: '测试', | ||
po: { | ||
title: 'Street-light in the morning', | ||
src: 'https://mir-s3-cdn-cf.behance.net/projects/404/4962b752362283.Y3JvcCwyMDUwLDE2MDUsMjUzLDA.png' | ||
} | ||
} | ||
this.domid = 'pagelet2' | ||
this.tpl = path.join(__dirname, './p2') | ||
this.delay = 7000 | ||
} | ||
module.exports = class MyPagelet extends Pagelet { | ||
constructor () { | ||
super() | ||
this.root = __dirname | ||
this.name = 'pagelet2' | ||
this.data = { | ||
t: "测试" , | ||
po: { | ||
name: this.name | ||
} | ||
} | ||
this.domid = 'pagelet2' | ||
this.tpl = 'p2' | ||
this.delay = 2000 | ||
} | ||
fetch() { | ||
return this.sleep(this.delay) | ||
} | ||
sleep(time) { | ||
return new Promise((resolve)=> setTimeout(resolve, time)) | ||
} | ||
fetch () { | ||
return this.sleep(this.delay) | ||
} | ||
sleep (time) { | ||
return new Promise((resolve) => setTimeout(() => resolve(this.data), time)) | ||
} | ||
} |
@@ -6,3 +6,3 @@ 'use strict' | ||
const MyBigView = require('./MyBigView') | ||
const Biglet = require('../../../packages/biglet') | ||
const Biglet = require('biglet') | ||
@@ -9,0 +9,0 @@ module.exports = function (req, res) { |
'use strict' | ||
const BigView = require('../../../packages/bigview') | ||
const { BigView } = require('../../../src') | ||
module.exports = class MyBigView extends BigView { | ||
before () { | ||
return new Promise(function(resolve, reject) { | ||
setTimeout(function(){ | ||
resolve(true) | ||
}, 0) | ||
return new Promise(function (resolve, reject) { | ||
setTimeout(function () { | ||
resolve(true) | ||
}, 0) | ||
}) | ||
} | ||
// after () { | ||
// | ||
// } | ||
} | ||
} |
{ | ||
"name": "bigkoa", | ||
"version": "0.1.0", | ||
"version": "0.1.1", | ||
"description": "", | ||
"main": "index.js", | ||
"main": "src/index.js", | ||
"dependencies": { | ||
@@ -13,4 +13,9 @@ "bluebird": "^3.4.7", | ||
"biglet": "^1.3.14", | ||
"chromedriver": "^2.34.1", | ||
"co-exec": "^1.0", | ||
"codecov": "^1.0.1", | ||
"cross-spawn": "^5.1.0", | ||
"ejs": "^2.3.4", | ||
"ghooks": "^1.2.4", | ||
"husky": "^0.14.3", | ||
"koa": "^2.4.1", | ||
@@ -21,5 +26,9 @@ "koa-bodyparser": "^3.2.0", | ||
"koa-static": "^3.0.0", | ||
"lazy-req": "^2.0.0", | ||
"lru-cache": "^4.0.2", | ||
"nightwatch": "^0.9.19", | ||
"nightwatch-helpers": "^1.2.0", | ||
"nyc": "^10.0.0", | ||
"open": "0.0.5", | ||
"selenium-server": "^2.53.1", | ||
"sinon": "^1.17.7", | ||
@@ -31,9 +40,19 @@ "standard": "^8.4.0", | ||
"start": "node --trace_gc examples/bin", | ||
"test": "./node_modules/.bin/nyc ./node_modules/.bin/ava -v", | ||
"report-coverage": "./node_modules/.bin/nyc report --reporter=lcov > coverage.lcov && codecov", | ||
"standard": "./node_modules/.bin/standard index.js" | ||
"precommit": "npm run standard && npm test", | ||
"test:unit": "./node_modules/.bin/nyc ./node_modules/.bin/ava test/unit -v", | ||
"test:e2e": "node test/e2e/runner.js", | ||
"test": "npm run test:unit && npm run test:e2e", | ||
"report-coverage": "nyc report --reporter=lcov > coverage.lcov && codecov", | ||
"standard": "standard index.js", | ||
"chromedriver": "npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver" | ||
}, | ||
"keywords": [], | ||
"author": "i5ting", | ||
"license": "MIT" | ||
"license": "MIT", | ||
"nyc": { | ||
"exclude": [ | ||
"examples", | ||
"test" | ||
] | ||
} | ||
} |
@@ -1,9 +0,11 @@ | ||
# BigView (Node.js 4.x +) | ||
# BigKoa (Node.js 4.x +) | ||
[![Build](https://travis-ci.org/i5ting/bigview.svg?branch=v2)](https://travis-ci.org/i5ting/bigview) | ||
[![codecov.io](https://codecov.io/github/i5ting/bigview/coverage.svg?branch=v2)](https://codecov.io/github/i5ting/bigview?branch=v2) | ||
> BigKoa = BigView + Koa | ||
[![Build](https://travis-ci.org/bigviewjs/bigkoa.svg?branch=master)](https://travis-ci.org/bigviewjs/bigkoa) | ||
[![codecov.io](https://codecov.io/github/bigviewjs/bigkoa/coverage.svg?branch=master)](https://codecov.io/github/bigviewjs/bigkoa?branch=master) | ||
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/) | ||
- bigview [![NPM version](https://img.shields.io/npm/v/bigview.svg?style=flat-square)](https://www.npmjs.com/package/bigview) | ||
- bigkoa [![NPM version](https://img.shields.io/npm/v/bigkoa.svg?style=flat-square)](https://www.npmjs.com/package/bigkoa) | ||
- biglet [![NPM version](https://img.shields.io/npm/v/biglet.svg?style=flat-square)](https://www.npmjs.com/package/biglet) | ||
@@ -10,0 +12,0 @@ - bigview-cli [![NPM version](https://img.shields.io/npm/v/bigview-cli.svg?style=flat-square)](https://www.npmjs.com/package/bigview-cli) |
307
src/index.js
@@ -1,92 +0,97 @@ | ||
'use strict'; | ||
'use strict' | ||
const debug = require('debug')('bigview'); | ||
const debug = require('debug')('bigview') | ||
global.Promise = require("bluebird"); | ||
const Promise = require('bluebird') | ||
const BigViewBase = require('./base'); | ||
const Utils = require('./utils'); | ||
const PROMISE_RESOLVE = Promise.resolve(true); | ||
const BigViewBase = require('./BigViewBase') | ||
const Utils = require('./utils') | ||
const PROMISE_RESOLVE = Promise.resolve(true) | ||
class BigView extends BigViewBase { | ||
constructor(ctx, layout, data) { | ||
super(ctx, layout, data); | ||
this.debug = process.env.BIGVIEW_DEBUG || false; | ||
// 布局文件,在渲染布局前是可以改的 | ||
this.layout = layout; | ||
constructor (ctx, options = {}) { | ||
super(ctx, options) | ||
// 用于为页面模板提供数据 | ||
// 如果是动态布局会自动注入pagelets | ||
this.data = data || {}; | ||
this.debug = process.env.BIGVIEW_DEBUG || false | ||
// 存放add的pagelets,带有顺序和父子级别 | ||
this.pagelets = []; | ||
this.layout = options.layout | ||
this.done = false; | ||
// timeout = 30s | ||
this.timeout = 30000; | ||
// main pagelet | ||
this.main = options.main | ||
// 默认是pipeline并行模式,pagelets快的先渲染 | ||
// 页面render的梳理里会有this.data.pagelets | ||
} | ||
// 存放add的pagelets,带有顺序和父子级别 | ||
this.pagelets = [] | ||
_getPageletObj(Pagelet) { | ||
let pagelet; | ||
this.done = false | ||
if (Pagelet.domid && Pagelet.root) { | ||
pagelet = Pagelet; | ||
} else { | ||
pagelet = new Pagelet(); | ||
} | ||
// timeout = 30s | ||
this.timeout = 30000 | ||
pagelet.owner = this; | ||
pagelet.dataStore = this.dataStore; | ||
// 默认是pipeline并行模式,pagelets快的先渲染 | ||
// 页面render的梳理里会有this.data.pagelets | ||
} | ||
return pagelet; | ||
} | ||
setMain (main) { | ||
this.main = main | ||
} | ||
add(Pagelet) { | ||
let pagelet = this._getPageletObj(Pagelet); | ||
this.pagelets.push(pagelet); | ||
} | ||
setLayout (layout) { | ||
this.layout = layout | ||
} | ||
// refact | ||
addErrorPagelet(Pagelet) { | ||
let pagelet = this._getPageletObj(Pagelet); | ||
this.errorPagelet = pagelet; | ||
_getPageletObj (Pagelet) { | ||
let pagelet | ||
if (Pagelet.domid && Pagelet.root) { | ||
pagelet = Pagelet | ||
} else { | ||
pagelet = new Pagelet(this) | ||
} | ||
pagelet.dataStore = this.dataStore | ||
/** | ||
* show error pagelet to Browser. only after bigview renderLayout | ||
* | ||
* @api public; | ||
*/ | ||
showErrorPagelet(error) { | ||
debug(error); | ||
// reset this.pagelets | ||
this.pagelets = [this.errorPagelet]; | ||
return pagelet | ||
} | ||
// start with render error pagelet | ||
this.renderPagelets() | ||
add (Pagelet) { | ||
let pagelet = this._getPageletObj(Pagelet) | ||
this.pagelets.push(pagelet) | ||
} | ||
// refact | ||
addErrorPagelet (Pagelet) { | ||
let pagelet = this._getPageletObj(Pagelet) | ||
this.errorPagelet = pagelet | ||
} | ||
/** | ||
* show error pagelet to Browser. only after bigview renderLayout | ||
* | ||
* @api public; | ||
*/ | ||
showErrorPagelet (error) { | ||
debug(error) | ||
// reset this.pagelets | ||
this.pagelets = [this.errorPagelet] | ||
// start with render error pagelet | ||
this.renderPagelets() | ||
.then(this.end.bind(this)) | ||
.catch(this.processError.bind(this)) | ||
return Promise.reject(new Error('interrupt, no need to continue!')) | ||
} | ||
return Promise.reject(new Error('interrupt, no need to continue!')) | ||
} | ||
start() { | ||
debug('BigView start'); | ||
start () { | ||
debug('BigView start') | ||
// 1) this.before | ||
// 2)renderLayout: 渲染布局 | ||
// 3)renderPagelets: Promise.all() 并行处理pagelets(策略是随机,fetch快的优先) | ||
// 4)this.end 通知浏览器,写入完成 | ||
// 5) processError | ||
// 1) this.before | ||
// 2)renderLayout: 渲染布局 | ||
// 3)renderPagelets: Promise.all() 并行处理pagelets(策略是随机,fetch快的优先) | ||
// 4)this.end 通知浏览器,写入完成 | ||
// 5) processError | ||
return this.before() | ||
return this.before() | ||
.then(this.beforeRenderLayout.bind(this)) | ||
.then(this.renderLayout.bind(this)) | ||
.then(this.renderMain.bind(this)) | ||
.then(this.afterRenderLayout.bind(this)) | ||
@@ -101,97 +106,115 @@ .catch(this.showErrorPagelet.bind(this)) | ||
.catch(this.processError.bind(this)) | ||
} | ||
before() { | ||
debug('default before'); | ||
return PROMISE_RESOLVE; | ||
} | ||
} | ||
/** | ||
* compile(tpl + data)=> html | ||
* | ||
* @api public | ||
*/ | ||
compile(tpl, data) { | ||
let self = this; | ||
before () { | ||
debug('default before') | ||
return PROMISE_RESOLVE | ||
} | ||
return new Promise(function(resolve, reject) { | ||
debug('renderLayout'); | ||
self.ctx.render(tpl, data, function(err, str) { | ||
if (err) { | ||
debug('renderLayout ' + str); | ||
Utils.log(err); | ||
return reject(err) | ||
} | ||
debug(str); | ||
let html = str + Utils.ready(self.debug) | ||
// 在pipeline模式下会直接写layout到浏览器 | ||
self.write(html, self.modeInstance.isLayoutWriteImmediately); | ||
//html没用到 | ||
resolve(html) | ||
}) | ||
}) | ||
} | ||
/** | ||
* compile(tpl + data)=> html | ||
* | ||
* @api public | ||
*/ | ||
compile (tpl, data) { | ||
let self = this | ||
renderLayout() { | ||
debug("BigView renderLayout"); | ||
// set data pagelets and errorPagelet | ||
data.pagelets = self.pagelets || [] | ||
data.errorPagelet = self.errorPagelet | ||
// 默认注入pagelets和errorPagelet信息 | ||
this.data.pagelets = this.pagelets; | ||
this.data.errorPagelet = this.errorPagelet; | ||
return new Promise(function (resolve, reject) { | ||
debug('renderLayout') | ||
self.ctx.render(tpl, data, function (err, str) { | ||
if (err) { | ||
debug('renderLayout ' + str) | ||
Utils.log(err) | ||
return reject(err) | ||
} | ||
debug(str) | ||
let html = str + Utils.ready(self.debug) | ||
// 在pipeline模式下会直接写layout到浏览器 | ||
self.write(html, self.modeInstance.isLayoutWriteImmediately) | ||
// html没用到 | ||
resolve(html) | ||
}) | ||
}) | ||
} | ||
let self = this; | ||
renderMain () { | ||
let syncArray = [] | ||
let self = this | ||
return self.compile(self.layout, self.data).then(function(str) { | ||
return str; | ||
}) | ||
} | ||
debug('BigView renderLayoutAndMain') | ||
renderPagelets() { | ||
debug("BigView renderPagelets start"); | ||
let bigview = this; | ||
return this.modeInstance.execute(bigview.pagelets) | ||
let mainPagelet = null | ||
if (this.main) { | ||
mainPagelet = this._getPageletObj(this.main) | ||
syncArray.push(self.compile(mainPagelet.tpl, mainPagelet.data)) | ||
return Promise.all([mainPagelet._exec()]) | ||
} else { | ||
return Promise.resolve(true) | ||
} | ||
} | ||
end() { | ||
if (this.done) { | ||
let err = new Error("bigview.done = true"); | ||
return Promise.reject(err); | ||
renderLayout () { | ||
const self = this | ||
return new Promise(function (resolve, reject) { | ||
self.ctx.render(self.layout.tpl, self.layout.data, function (err, html) { | ||
self.write(html, self.modeInstance.isLayoutWriteImmediately) | ||
if (err) { | ||
return reject(err) | ||
} | ||
return resolve(true) | ||
}) | ||
}) | ||
} | ||
if (this.cache.length > 0) { | ||
// 如果缓存this.cache里有数据,先写到浏览器,然后再结束 | ||
// true will send right now | ||
let isWriteImmediately = true; | ||
let html = this.cache.join(''); | ||
// 在end时,无论如何都要输出布局 | ||
this.modeInstance.isLayoutWriteImmediately = true | ||
renderPagelets () { | ||
debug('BigView renderPagelets start') | ||
return this.modeInstance.execute(this.pagelets) | ||
} | ||
this.write(html, isWriteImmediately) | ||
} | ||
end () { | ||
if (this.done) { | ||
let err = new Error('bigview.done = true') | ||
return Promise.reject(err) | ||
} | ||
debug("BigView end"); | ||
if (this.cache.length > 0) { | ||
// 如果缓存this.cache里有数据,先写到浏览器,然后再结束 | ||
// true will send right now | ||
let isWriteImmediately = true | ||
let html = this.cache.join('') | ||
let self = this; | ||
// 在end时,无论如何都要输出布局 | ||
this.modeInstance.isLayoutWriteImmediately = true | ||
// lifecycle self.after before res.end | ||
return self.after().then(function() { | ||
self.res.end(Utils.end()); | ||
return self.done = true; | ||
}); | ||
this.write(html, isWriteImmediately) | ||
} | ||
after() { | ||
debug('default after'); | ||
return PROMISE_RESOLVE; | ||
} | ||
renderPageletstimeoutFn(err) { | ||
Utils.log('timeout in ' + this.timeout + ' ms') | ||
Utils.log(err) | ||
return this.end() | ||
} | ||
debug('BigView end') | ||
let self = this | ||
// lifecycle self.after before res.end | ||
return self.after().then(function () { | ||
self.res.end(Utils.end()) | ||
self.done = true | ||
return true | ||
}) | ||
} | ||
after () { | ||
debug('default after') | ||
return PROMISE_RESOLVE | ||
} | ||
renderPageletstimeoutFn (err) { | ||
Utils.log('timeout in ' + this.timeout + ' ms') | ||
Utils.log(err) | ||
return this.end() | ||
} | ||
}; | ||
module.exports = BigView; | ||
module.exports = BigView |
@@ -1,13 +0,13 @@ | ||
const PipelineMode = require('./pipeline.js'); | ||
const ParallelMode = require('./parallel.js'); | ||
const ReduceMode = require('./reduce.js'); | ||
const ReducerenderMode = require('./reducerender.js'); | ||
const RenderMode = require('./render.js'); | ||
const PipelineMode = require('./pipeline.js') | ||
const ParallelMode = require('./parallel.js') | ||
const ReduceMode = require('./reduce.js') | ||
const ReducerenderMode = require('./reducerender.js') | ||
const RenderMode = require('./render.js') | ||
module.exports = { | ||
pipeline: PipelineMode, | ||
parallel: ParallelMode, | ||
reduce: ReduceMode, | ||
reducerender: ReducerenderMode, | ||
render: RenderMode | ||
pipeline: PipelineMode, | ||
parallel: ParallelMode, | ||
reduce: ReduceMode, | ||
reducerender: ReducerenderMode, | ||
render: RenderMode | ||
} |
'use strict' | ||
const debug = require('debug')('bigview'); | ||
const Promise = require("bluebird"); | ||
// const debug = require('debug')('bigview') | ||
const Promise = require('bluebird') | ||
@@ -14,24 +14,24 @@ // pagelets 5种情况 | ||
module.exports = class ParallelMode { | ||
constructor() { | ||
this.isLayoutWriteImmediately = true | ||
this.isPageletWriteImmediately = false | ||
} | ||
constructor () { | ||
this.isLayoutWriteImmediately = true | ||
this.isPageletWriteImmediately = false | ||
} | ||
/** | ||
* execute pagelets'action | ||
* | ||
* @param {any} bigview | ||
* @returns | ||
*/ | ||
execute(pagelets) { | ||
let q = [] | ||
let self = this; | ||
/** | ||
* execute pagelets'action | ||
* | ||
* @param {any} bigview | ||
* @returns | ||
*/ | ||
execute (pagelets) { | ||
let q = [] | ||
let self = this | ||
pagelets.forEach(function(_pagelet){ | ||
_pagelet.isPageletWriteImmediately = self.isPageletWriteImmediately | ||
q.push(_pagelet._exec()) | ||
}); | ||
pagelets.forEach(function (_pagelet) { | ||
_pagelet.isPageletWriteImmediately = self.isPageletWriteImmediately | ||
q.push(_pagelet._exec()) | ||
}) | ||
return Promise.all(q) | ||
} | ||
} | ||
return Promise.all(q) | ||
} | ||
} |
'use strict' | ||
const debug = require('debug')('bigview'); | ||
const Promise = require("bluebird"); | ||
// const debug = require('debug')('bigview') | ||
const Promise = require('bluebird') | ||
@@ -14,24 +14,24 @@ // pagelets 5种情况 | ||
module.exports = class PiplineMode { | ||
constructor() { | ||
this.isLayoutWriteImmediately = true | ||
this.isPageletWriteImmediately = true | ||
} | ||
constructor () { | ||
this.isLayoutWriteImmediately = true | ||
this.isPageletWriteImmediately = true | ||
} | ||
/** | ||
* execute pagelets'action | ||
* | ||
* @param {any} bigview | ||
* @returns | ||
*/ | ||
execute(pagelets) { | ||
let q = [] | ||
let self = this | ||
/** | ||
* execute pagelets'action | ||
* | ||
* @param {any} bigview | ||
* @returns | ||
*/ | ||
execute (pagelets) { | ||
let q = [] | ||
let self = this | ||
pagelets.forEach(function (_pagelet) { | ||
_pagelet.isPageletWriteImmediately = self.isPageletWriteImmediately | ||
q.push(_pagelet._exec()) | ||
}); | ||
pagelets.forEach(function (_pagelet) { | ||
_pagelet.isPageletWriteImmediately = self.isPageletWriteImmediately | ||
q.push(_pagelet._exec()) | ||
}) | ||
return Promise.all(q) | ||
} | ||
return Promise.all(q) | ||
} | ||
} |
'use strict' | ||
const debug = require('debug')('bigview'); | ||
const Promise = require("bluebird"); | ||
// const debug = require('debug')('bigview'); | ||
const Promise = require('bluebird') | ||
@@ -14,18 +14,18 @@ // pagelets 5种情况 | ||
module.exports = class ReduceMode { | ||
constructor() { | ||
this.isLayoutWriteImmediately = true | ||
this.isPageletWriteImmediately = true | ||
} | ||
constructor () { | ||
this.isLayoutWriteImmediately = true | ||
this.isPageletWriteImmediately = true | ||
} | ||
/** | ||
* execute pagelets'action | ||
* | ||
* @param {any} bigview | ||
* @returns | ||
*/ | ||
execute(pagelets) { | ||
return Promise.reduce(pagelets, (total, _pagelet, index) => { | ||
return _pagelet._exec() | ||
}, 0) | ||
} | ||
} | ||
/** | ||
* execute pagelets'action | ||
* | ||
* @param {any} bigview | ||
* @returns | ||
*/ | ||
execute (pagelets) { | ||
return Promise.reduce(pagelets, (total, _pagelet, index) => { | ||
return _pagelet._exec() | ||
}, 0) | ||
} | ||
} |
'use strict' | ||
const debug = require('debug')('bigview'); | ||
const Promise = require("bluebird"); | ||
// const debug = require('debug')('bigview'); | ||
const Promise = require('bluebird') | ||
@@ -14,21 +14,21 @@ // pagelets 5种情况 | ||
module.exports = class ReduceRenderMode { | ||
constructor() { | ||
this.isLayoutWriteImmediately = false | ||
this.isPageletWriteImmediately = false | ||
} | ||
constructor () { | ||
this.isLayoutWriteImmediately = false | ||
this.isPageletWriteImmediately = false | ||
} | ||
/** | ||
* execute pagelets'action | ||
* | ||
* @param {any} bigview | ||
* @returns | ||
*/ | ||
execute(pagelets) { | ||
let self = this | ||
/** | ||
* execute pagelets'action | ||
* | ||
* @param {any} bigview | ||
* @returns | ||
*/ | ||
execute (pagelets) { | ||
let self = this | ||
return Promise.reduce(pagelets, (total, _pagelet, index) => { | ||
_pagelet.isPageletWriteImmediately = self.isPageletWriteImmediately | ||
return _pagelet._exec() | ||
}, 0) | ||
} | ||
} | ||
return Promise.reduce(pagelets, (total, _pagelet, index) => { | ||
_pagelet.isPageletWriteImmediately = self.isPageletWriteImmediately | ||
return _pagelet._exec() | ||
}, 0) | ||
} | ||
} |
'use strict' | ||
const debug = require('debug')('bigview'); | ||
const Promise = require("bluebird"); | ||
// const debug = require('debug')('bigview'); | ||
const Promise = require('bluebird') | ||
@@ -14,23 +14,23 @@ // pagelets 5种情况 | ||
module.exports = class RenderMode { | ||
constructor() { | ||
this.isLayoutWriteImmediately = false | ||
this.isPageletWriteImmediately = false | ||
} | ||
constructor () { | ||
this.mode = 'render'; | ||
this.isLayoutWriteImmediately = false | ||
this.isPageletWriteImmediately = false | ||
} | ||
/** | ||
* execute pagelets'action | ||
* | ||
* @param {any} bigview | ||
* @returns | ||
*/ | ||
execute(pagelets) { | ||
let q = [] | ||
for (var i in pagelets) { | ||
let _pagelet = pagelets[i] | ||
_pagelet.isPageletWriteImmediately = this.isPageletWriteImmediately | ||
q.push(_pagelet._exec()) | ||
} | ||
return Promise.all(q) | ||
} | ||
} | ||
/** | ||
* execute pagelets'action | ||
* | ||
* @param {any} bigview | ||
* @returns | ||
*/ | ||
execute (pagelets) { | ||
let q = [] | ||
for (var i in pagelets) { | ||
let _pagelet = pagelets[i] | ||
_pagelet.isPageletWriteImmediately = this.isPageletWriteImmediately | ||
q.push(_pagelet._exec()) | ||
} | ||
return Promise.all(q) | ||
} | ||
} |
@@ -1,11 +0,11 @@ | ||
'use strict'; | ||
'use strict' | ||
const MODULE_ID = 'BIGVIEW'; | ||
const MODULE_ID = 'BIGVIEW' | ||
exports.log = function (str) { | ||
console.log(' [' + MODULE_ID + ' LOG]: ' + str) | ||
console.log(' [' + MODULE_ID + ' LOG]: ' + str) | ||
} | ||
exports.error = function (str) { | ||
console.error(' [' + MODULE_ID + ' LOG]: ' + str) | ||
console.error(' [' + MODULE_ID + ' LOG]: ' + str) | ||
} | ||
@@ -15,9 +15,8 @@ | ||
// 当布局输出完成的时候,触发 | ||
exports.ready = function(isDebug) { | ||
exports.ready = function (isDebug) { | ||
if (isDebug === true) { | ||
return `<script charset="utf-8">bigview.debug=true;bigview.ready();</script>` | ||
} | ||
if(isDebug === true) { | ||
return `<script charset=\"utf-8\">bigview.debug=true;bigview.ready();</script>` | ||
} | ||
return `<script charset=\"utf-8\">bigview.ready();</script>` | ||
return `<script charset="utf-8">bigview.ready();</script>` | ||
} | ||
@@ -27,8 +26,8 @@ | ||
// 当所有模块都是输出完成的时候触发 | ||
exports.end = function(data) { | ||
if (!data) { | ||
return `<script charset=\"utf-8\">bigview.end()</script>` | ||
} | ||
exports.end = function (data) { | ||
if (!data) { | ||
return '<script charset="utf-8">bigview.end()</script>' | ||
} | ||
return `<script charset=\"utf-8\">bigview.end(${JSON.stringify(data)})</script>` | ||
return `<script charset="utf-8">bigview.end(${JSON.stringify(data)})</script>` | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
230438
81
2061
871
24