旧版Javascript系统Webpack迁移解决方案

时间:2016-07-07 03:12:57

标签: javascript jquery webpack legacy-code

我的问题是

如何为数百个html网页上的旧版javascript代码库定义webpack入口点

我用旧学校时尚前端编码风格(javascript css html)遇到了这个系统 - 我称之为简单的jQuery风格时尚。

随着此代码库的增长,重复(几乎相同的功能)代码会泛滥许多js文件。我可以告诉我这个代码库很快就会出现。

我真的想利用当前的时尚构建/管理工具,比如webpack

所以我搜索了一下,人们更专注于如何在一小部分html页面中应用webpack(更像是10页)

我的情况是,从3个base_xxx.html个父网页扩展的近200多个html儿童网页共享相同的<script src="xxx.js"></script><link rel="stylesheet" href="xxx.css"/>个标记。

每个子页面都有自己定义的自定义js控件/显示逻辑来处理页面自己的需求。

e.g:

base_1.html
    |__lib11 .js+.css
    |__lib12 .js+.css
    |__lib13 .js+.css
    |__...
    |__lib1N .js+.css

child11.html extends base_1.html
    |__child11 .js+.css

child12.html extends base_1.html
    |__child12 .js+.css

...

child1N.html extends base_1.html
    |__child1N .js+.css

...

base_2.html
    |__lib11 .js+.css
    |__lib12 .js+.css
    |__lib13 .js+.css
    |__...
    |__lib21 .js+.css
    |__lib22 .js+.css
    |__...
    |__lib2N .js+.css

child21.html extends base_2.html
    |__child21 .js+.css

child22.html extends base_2.html
    |__child22 .js+.css

...

child2N.html extends base_2.html
    |__child2N .js+.css

让我们假设child## .js+.css彼此不兼容的极端情况,

child11 .js+.csschild12 .js+.css无法包含在同一个html页面中,因为同一个id或类上可能存在差异控制/显示逻辑。

目前,我可以将这些标准lib## .js+.css合并到vendor## .js+.css,即webpack中的一些入口点可以定义为vendor##

但是,如何处理这些child## .js+.css

entry : {
    vendor1 : [
        'lib11',
        'lib12',
        'lib13',
        ...,
        'lib1N',
    ],
    vendor2 : [
        'lib21',
        'lib22',
        'lib23',
        ...,
        'lib2N',
    ],
    // nightmare!!! over 200+ entry point definitions?
    child11: ['child11'],
    child12: ['child12'],
    child13: ['child13'],
    ...
    child1N: ['child1N'],
    child21: ['child21'],
    child22: ['child22'],
    child23: ['child23'],
    ...
    child2N: ['child2N'],
},
output : {
    filename : '[name].js'
}

在那些html页面中仅包含4个文件包含 e.g:

<!--child11.html-->
vendor1.css
child11.css
vendor1.js
child11.js

<!--child12.html-->
vendor1.css
child12.css
vendor1.js
child12.js

<!--child1N.html-->
vendor1.css
child1N.css
vendor1.js
child1N.js

入口点定义部分只是杀了我,还有更好的解决方案吗?

谢谢

0 个答案:

没有答案