前段时间公司决定重构电商业务系统,主要缘由是但愿把后端语言 .Net 重构成 Java 以方便招聘,同时从新设计了 UI。而我被临时调到MRO架构业务组重写电商官网前端界面。在完成了 电商主页 - 商品列表页 - 商品详情页后 又被原项目组老大调回去,写了项目组内部使用的微前端框架 Vue-MFE,先把连接放出来,等万事具有了开源以后就能够直接访问了(鸡贼。。。)。css
可是,既然要重写电商官网,就必定要秀。不秀,怎么对得起重写和KPI,对吗?因而,我开始思考怎么重写?在写以前,我看了下目前国内主流电商官网和它们的前端技术解决方案。那就在这里作个小小的概览吧:html
PS: 能力有限,若是错误,烦请指证。前端
因为最近两年一直使用 React\Vue 这样的前端框架,对于写 JS 代码的语法已经习惯了 ES6/7,爱上了 Component 和 Webpack,不想再回到刀耕火种的年代。vue
而电商又比较在乎SEO,而架构团队又并不太愿意使用 node-SSR,所以使用 next(React)/nuxt(Vue) 的建议被闲置(未被否也未被采用)。尽管后来仍是上了 VueJS,可是使用的方式倒是浏览器原生的方式,没有任何构建工具。对后端工程师而言,真是挺苦逼的。最终问过当时团队 leader 对于前端技术栈的选择方面的要求时,他的答复是:十个前端九个能上手。因而最后将技术栈改为了 webpack + jQuery + pug(模版引擎)。node
这一套就达到了愉快的开发体验。python
用了一天的时间编写 webpack 的配置和调试构建工具。jquery
项目结构变成了这样:webpack
/build # 构件脚本内容 /rollup /webpack /public # 静态依赖 - favicon.ico - index.html /src /assets # 项目中用到的资源 /images /style /components /lib /mixin - pageA.scss - pageB.scss /includes # 项目中各类能复用的模版/js / components # 纯组件 /FooterSiteNav - index.pug /HeaderHomeNav - index.pug ... /mixins # JS组件 /Tab - index.js - index.pug ... -layout.pug # 基础布局模版 /pages # 页面相关内容 /index # 最终会被打包成 index.html - index.js - index.pug - index.scss /detail - index.js - index.pug - index.scss /plugins # 项目中使用到的 jQuery 插件 - jquery.inview.js /template # 被懒渲染的各类模版文件 - AdBanner.js # 广告横幅 - Floor.js # 每一个楼层区块 - HomeTab.js # 主页特定的 tab /utils # 工具方法 /api - common.js - index,js - LazyloadModule.js - DataUtil.js - Observer.js - ScrollObserver.js - Template.js common.js theme.scss # 各类配置文件 .editorconfig .eslintignore .eslintrc .prettierrc .stylelintrc.json babel.config.js
PS: 须要构件系统代码?我以为照着 CRA 或者 VUE-CLI 源码中的 webpack 配置根据本身需求作下微调便可。git
由于用 jQuery 历史悠久,社区有许多沉淀。可是仍是有不少特定业务的组件,也本身实现了一把:github
PS: *
开头表示还未上传最终代码。并且在后续的需求中,根据业务调用及其余组使用的细节也更改了一些部分,没法作到实时更新。
在调研和编码完成后,在前端上新的按需加载电商官网固然比原先加载全部DOM的官网使用性能和流畅度好得多。不管是跑分、性能、应用大小、Code Coverage 都是很是巨大的提高。具体数据和什么网站?由于如今还在内测中。并且我在写完主要三个界面后被原组长调回,有机会在后续贴图。
对于后端工程师而言,用 HTML template 的方式写着 Vue 的确慢且痛苦。并且各类特效各类库梭哈的作法,也的确没法保证 用户体验 和 开发体验。然后续维护和代码质量,以及公司是否在乎又另当别论了。
echo 'So, Do u have freestyle?'