UNPKG

yog-devtools

Version:

提供数据模拟,页面跳转等功能协助前端快速开发。

65 lines (51 loc) 1.35 kB
/** * @fileOverview 添加 js 脚本页面功能。 * 让 test 目录的 js 脚本能够想 jsp, php 脚本一样运行。 */ var path = require('path'); var fs = require('fs'); module.exports = function(options) { var dataroot = options.data_path; var rpage = /^\/(?:test|mock)\/(.*\.(js|json))(?:$|\?)/i; function execScript(page, type, req, res, next) { var dirs = Array.isArray(dataroot) ? dataroot : [dataroot]; var file; dirs.every(function(dir) { var filepath = path.join(dir, page); if (fs.existsSync(filepath)) { file = filepath; } return !file; }); // 文件不存在,则跳过。 if (!file) { return next(); } if (type === 'js') { try { delete require.cache[require.resolve(file)]; require(file)(req, res, next); } catch (err) { next(err); } } else { fs.readFile(file, function(err, buf) { if (err) return next(err); res.writeHead(200, { 'Content-Type': 'application/json', 'Content-Length': buf.length }); res.end(buf); }); } } return function(req, res, next) { var url = req.url; var match = rpage.exec(url); if (match) { execScript(match[1], match[2], req, res, next); } else { next(); } }; }