Webpack+vue+boostrap+ejs构建Web版GM工具

前言

Web前端的组件技术刷新真的是日新月异,前段时间看到很多童鞋分享了webpackarrow-up-right的使用,刚好之前做我们游戏里Web版的GM工具的时候正在想怎么用简单的方式,做模块分离并且又不需要引入重量级的第三方库或组件,也不需要太繁琐的流程(毕竟只是个小工具)。

我们的Web版GM工具长差不多这个样子,全静态页面。

1811-01.png
1811-02.png

因为分成了好几个模块,然后由于用的是bootstrap的。上面的Tab和下面的内容还有处理逻辑的函数都分了三大块,在不同的位置。在内容持续增加以后,全都写在一个html里太不方便了,而如果走ajax加载,调试和本地编辑都挺麻烦。

安装webpackarrow-up-right比较简单,直接走npmarrow-up-right命令即可。

当然如果想要换源或者用 tnpm 或者cnpmarrow-up-right,把上面的npmarrow-up-right命令替换一下就行了。

后面的很多组件都涉及 webpackarrow-up-right 的支持包,也都是需要额外安装的。

自动适配浏览器的ES6支持: babelarrow-up-right

现在ES版本很高了,开启一些新特性的支持试很爽的,但是浏览器兼容性怎么办呢?上 babelarrow-up-right。当然还得加上 webpackarrow-up-right 支持。

还可以加上VSCode的提示tags支持。

然后 webpackarrow-up-right 模具哎规则里加上:

sass、css支持

为了可以方便地使用css,可以加入 sassarrow-up-right 或者 lessarrow-up-right 支持,我这里加入了 sassarrow-up-right 支持。然后再加上原本的css模块。

然后 webpackarrow-up-right 模具哎规则里加上:

Vue模板

我的GM工具中使用Vue做模板引擎,前面有提到Vue模板引擎的支持。首先也是安装基础库的支持库。

不过其实我没有使用 vue-loader 来提供.vue后缀的支持。感觉这种方式局限性比较高。我用的是运行时编译的版本,而 vuearrow-up-rightwebpackarrow-up-right 文档里支持方式是只导入了runtime,没有导入编译库,所以这里初始化流程会麻烦一些。当然如果开 .vue 支持的话可以加规则:

插件初始化里要使用完整版本的Vue:

HTML模板引擎和ejs

webpackarrow-up-right 默认是对js打包的,但是如果能在编译期对html打包才能满足我们GM工具的模块化的需求。其实有很多模板引擎增加了对 webpackarrow-up-right 的支持,而我之前用过一些 ejsarrow-up-right ,比较轻量级,功能也足够,所以我还是用了 ejsarrow-up-right 作为模板系统。 另外要让 webpackarrow-up-right 支持对html打包,还需要 html-webpack-plugin 插件:

这里要注意下 webpackarrow-up-right 的版本,这里的插件对不同大版本的 webpackarrow-up-right 可能不同。 接下来仍然是注册规则:

然后初始化:

额外组件: bootstrap、jquery、moment

bootstraparrow-up-rightjqueryarrow-up-rightmomentarrow-up-right 是前端页面用到的,然后 bootstraparrow-up-right 还依赖 popper.jsarrow-up-right

先安装依赖:

接下来就比较特殊了,因为 webpackarrow-up-right 走的是和 node.js 一样的模块隔离,像上面的这些库是需要写入全局命名空间的,所以还需要初始化的时候导入一下:

集成VSCode: monaco-editor 和 typescript 支持

我们GM工具里内嵌了VSCode的编辑器内核 monaco-editorarrow-up-right ,在通用信息查看编辑和diff上还是很有用的。然后由于 monaco-editorarrow-up-right 依赖 typescriptarrow-up-right 就顺便把 typescriptarrow-up-right 也导入进来了。

安装脚本:

规则配置:

插件配置:

最终配置和编译运行

最终的配置其实还包含一些细节的目录结构、环境信息和构建选项。我们GM工具最终的 webpack.config.js 文件如下:

typescript配置文件 tsconfig.json 的配置如下:

然后 package.json 里增加了脚本命令:

最后,编译打包的时候只要运行 npm run devnpm run build 就可以了。

Last updated

Was this helpful?