Skip to content

Commit

Permalink
combine two json files
Browse files Browse the repository at this point in the history
  • Loading branch information
im6 committed Jan 9, 2020
1 parent 32e63c3 commit 7140d88
Show file tree
Hide file tree
Showing 11 changed files with 112 additions and 113 deletions.
54 changes: 54 additions & 0 deletions server/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
module.exports = {
pretty: false,
bundleDir: '/assets/',
remoteAsset: '//dkny.oss-cn-hangzhou.aliyuncs.com/1/icons',
main: 'article0',
route: '/article/',
type: ['2020', 'Developer', 'Designer', 'Architect', 'Beginner', 'Fun!'],
articles: [
{
id: 4,
title: 'Vue/React的加载优化(高级篇)',
author: 'ZJ Guo',
about: ['Webpack', 'react', 'vue', 'angular', '阿里云', 'OSS'],
time: '2015-08-30',
content: 'JavaScript加载优化方案...',
fileName: 'article1',
},
{
id: 3,
title: '新浪微博(Weibo.com)前端构建详解之BigPipe',
author: 'ZJ Guo',
about: ['BigPipe', 'architecture', 'weibo', 'Facebook'],
time: '2015-07-01',
content: '微博以及Facebook前端构建详解...',
fileName: 'article1',
},
{
id: 2,
title: 'JavaScript代码的逆向读取',
author: 'ZJ Guo',
about: ['uglify', 'minify'],
time: '2015-06-28',
content: '微博前端代码的混淆分析',
fileName: 'article1',
},
{
id: 1,
title: '如何写一手漂亮的React(一):state vs redux',
author: 'ZJ Guo',
about: ['react', 'redux'],
time: '2015-06-15',
content: '状态管理详解...',
fileName: 'article1',
},
{
id: 0,
title: 'Welcome to Javascript.fun',
author: 'ZJ Guo',
about: ['javascript', 'node.js'],
time: '2015-04-01',
content: '为JavaScript社区不定期更新...',
},
],
};
6 changes: 2 additions & 4 deletions server/task/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@ const createSitePage = require('./render/site');
const createArticleList = require('./render/article2');
const createArticleContent = require('./render/article1');

const vm = require('./render/viewModel_article.json');
const vm = require('../config');
const copy = require('./copy');

createArticleList();
vm.article.forEach(v => {
createArticleContent(v.id);
});
vm.articles.forEach(v => createArticleContent(v));
createSitePage();
createGithubPage(() => {
copy(() => {
Expand Down
34 changes: 17 additions & 17 deletions server/task/render/article1.js
Original file line number Diff line number Diff line change
@@ -1,46 +1,46 @@
const fs = require('fs');
const pug = require('pug');
const path = require('path');
const configJson = require('../../config.js');

module.exports = articleId => {
if (!articleId) {
module.exports = article => {
if (!article.id) {
return;
}

const configJson = JSON.parse(
fs.readFileSync(path.join(__dirname, './viewModel_article.json'))
const viewModel = Object.assign(
{
page: 6,
article,
},
configJson
);

configJson.id = articleId;
configJson.page = 6;
configJson.article = configJson['article'].filter(
v => v.id === configJson.id
)[0];

if (process.env.NODE_ENV === 'development') {
configJson.bundleDir = `/build/${configJson.article.fileName}.js`;
viewModel.bundleDir = `/build/${viewModel.article.fileName}.js`;
} else {
configJson.bundleDir += `${configJson.article.fileName}.js`;
viewModel.bundleDir += `${viewModel.article.fileName}.js`;
}

const pugPath = path.join(
__dirname,
`../../../views/article/${configJson.id}.pug`
`../../../views/article/${viewModel.article.id}.pug`
);
const html = pug.renderFile(pugPath, configJson);

const html = pug.renderFile(pugPath, viewModel);
const folderPath = path.join(
__dirname,
`../../../public/article/${configJson.id}/`
`../../../public/article/${viewModel.article.id}/`
);
if (!fs.existsSync(folderPath)) {
fs.mkdirSync(folderPath);
}
const filePwd = path.join(
__dirname,
`../../../public/article/${configJson.id}/index.html`
`../../../public/article/${viewModel.article.id}/index.html`
);
fs.openSync(filePwd, 'w');
fs.writeFileSync(filePwd, html);

console.log(`render article ${configJson.id} success!`);
console.log(`render article ${viewModel.article.id} success!`);
};
16 changes: 9 additions & 7 deletions server/task/render/article2.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
const fs = require('fs');
const pug = require('pug');
const path = require('path');

const configJson = require('../../config.js');
module.exports = () => {
const configJson = JSON.parse(
fs.readFileSync(path.join(__dirname, './viewModel_article.json'))
const viewModel = Object.assign(
{
page: 5,
},
configJson
);
configJson.page = 5;

if (process.env.NODE_ENV === 'development') {
configJson.bundleDir = `/build/${configJson.main}.js`;
viewModel.bundleDir = `/build/${configJson.main}.js`;
} else {
configJson.bundleDir += `${configJson.main}.js`;
viewModel.bundleDir += `${configJson.main}.js`;
}

const pugPath = path.join(__dirname, '../../../views/article/index.pug');
const html = pug.renderFile(pugPath, configJson);
const html = pug.renderFile(pugPath, viewModel);
const filePwd = path.join(__dirname, '../../../public/article/index.html');
fs.openSync(filePwd, 'w');
fs.writeFileSync(filePwd, html);
Expand Down
6 changes: 4 additions & 2 deletions server/task/render/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const fs = require('fs'),
orderBy = require('lodash.orderby'),
getPackageList = require('../crawler/github'),
sqlConn = require('../mysqlConnection'),
vm0 = require('../../config'),
ISDEV = process.env.NODE_ENV === 'development',
PAGECONFIG = [
{
Expand All @@ -27,8 +28,9 @@ const fs = require('fs'),
];

const privateFn = {
getPrototype: () =>
JSON.parse(fs.readFileSync(path.join(__dirname, './viewModel.json'))),
getPrototype: () => {
return Object.assign({}, vm0);
},
render: (data, inputUrl, outputUrl) => {
const html = pug.renderFile(inputUrl, data);
fs.openSync(outputUrl, 'w');
Expand Down
6 changes: 4 additions & 2 deletions server/task/render/site.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ const groupBy = require('lodash.groupby');
const sqlConn = require('../mysqlConnection');
const HTMLINPUT = path.join(__dirname, '../../../views/site/index.pug');
const HTMLOUTPUT = path.join(__dirname, '../../../public/site/index.html');
const vm0 = require('../../config');
const ISDEV = process.env.NODE_ENV === 'development';

const privateFn = {
getPrototype: () =>
JSON.parse(fs.readFileSync(path.join(__dirname, './viewModel.json'))),
getPrototype: () => {
return Object.assign({}, vm0);
},

render: (data, inputUrl, outputUrl) => {
const html = pug.renderFile(inputUrl, data);
Expand Down
8 changes: 0 additions & 8 deletions server/task/render/viewModel.json

This file was deleted.

55 changes: 0 additions & 55 deletions server/task/render/viewModel_article.json

This file was deleted.

2 changes: 1 addition & 1 deletion views/article/index.pug
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
extends ../layout
block content
.post_container
each val, index in article
each val, index in articles
.post
+ArticleTitle(val)
p.art_desc=val.content
Expand Down
26 changes: 15 additions & 11 deletions webpack/dev.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,28 @@
"use strict";
'use strict';

const webpackConfig = require('./generic/hot');
const configJson = require('../server/task/render/viewModel_article.json');
const article = configJson.article.filter(v => v.id === configJson.id)[0];
const configJson = require('../server/config');
const article = configJson.articles[0];

const entries = {
main: ['./client/modules/main/index.js', 'webpack/hot/only-dev-server'],
site: ['./client/modules/site/index.js', 'webpack/hot/only-dev-server'],
devServerClient: 'webpack-dev-server/client?http://0.0.0.0:3000'
devServerClient: 'webpack-dev-server/client?http://0.0.0.0:3000',
};

entries[configJson.main] = ['./client/modules/article2/index.js', 'webpack/hot/only-dev-server'];
entries[article.fileName] = ['./client/modules/article1/index.js', 'webpack/hot/only-dev-server'],

webpackConfig.entry = entries;
entries[configJson.main] = [
'./client/modules/article2/index.js',
'webpack/hot/only-dev-server',
];
(entries[article.fileName] = [
'./client/modules/article1/index.js',
'webpack/hot/only-dev-server',
]),
(webpackConfig.entry = entries);
webpackConfig.output = {
publicPath: '/build',
filename: "[name].js",
filename: '[name].js',
};
webpackConfig.devServer.historyApiFallback.index = 'main/';


module.exports = webpackConfig;
module.exports = webpackConfig;
12 changes: 6 additions & 6 deletions webpack/prod.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
"use strict";
'use strict';
const path = require('path');
const webpackConfig = require('./generic/build');
const configJson = require('../server/task/render/viewModel_article.json');
const article = configJson.article.filter(v => v.id === configJson.id)[0];
const configJson = require('../server/config');
const article = configJson.articles[0];

const entries = {
main: './client/modules/main/index.js',
Expand All @@ -11,12 +11,12 @@ const entries = {

entries[configJson.main] = './client/modules/article2/index.js';
entries[article.fileName] = './client/modules/article1/index.js';

console.log(entries);
webpackConfig.entry = entries;
webpackConfig.output = {
filename: "[name].js",
filename: '[name].js',
path: path.join(__dirname, `../public/build`),
publicPath: '/build',
};

module.exports = webpackConfig;
module.exports = webpackConfig;

0 comments on commit 7140d88

Please sign in to comment.