添砖加瓦 - 手把手教你快速构建网站布局
本文为方便讲述重构去除了 Element、vux 库,用了最近比较火的 bulma 轻量、快捷、易读。
项目截屏
Layout and Components
Layout
首先,似上图,我们思考把一个小型网站拆成三部分:页头(Header)、内容(Content)、页脚(Footer) 这几乎每个网站内都必须有的,通常把万年不变的:页头(Header)、页脚(Footer) 制作成 Layout 方便通用。
Components
再把内容(Content)根据业务进行拆分成 组件(Components)
如上图:Header 和 Content :Header其实没有拆分的必要,没有可以重用的组件,而 Conntent 是必须要拆分的布局元素。因为动态网站 Conntent 随着内容的变化而变化,内容多,可重用的东西的概率越高,需要把能重用的东西提炼出来
1、节省代码、提高代码阅读性
2、便于修改 (比如更新广告)
开始写代码
接着我们的 开始,基于它继续完善小网站布局和组件化。
值得一提的是:本系列教程一章跟随一章并且每一章可以独立运行,章与章之间完美衔接,没有 “突然出现” 的代码段。不会给新手无从下手的感觉,如果那你对代码陌生,那你该认真翻翻往期文章了。你可以基于上一章逐步写代码,也可以下载本章简单预览代码。
- 引入 bulma 样式 CDN
vim new-bee/index.html复制代码
复制代码
- 新建 Layout 目录
vim new-bee/src/renderer/components/layout复制代码
- Layout 目录下建立 Header.vue 模板组件
这个组件专门写头部的内容,最好配合栅格尽可能写出简单的响应式组件
复制代码< img src="https://img.actd.tw/images/2018/11/17/ezgif-4-05f4bba41fef.gif" style="width: 300px" alt="">
什么样式可以写在 .vue 文件中
上文的比较熟悉的代码是让我们的头像变圆的代码段
- 效果
这里我偷了个懒,刚好可以说一说,对于如此通用的样式,局限在 .vue文件中,并且以 scoped 标示,宣判了它无法复用的事实,任何模块想用这个样式,都需要复制一份,显然是不规范的,我们通常还会建立通用的 css 文件进行管理,大型项目 css 管理规范将更加严格、规范的树级结构,具体就看 CTO 的想法了。
根据喜好选择如何布局
按需引入
vim new-bee/src/renderer/components/HelloWorld.vue复制代码
复制代码
缺点是要一个一个引入,但优点是代码可读性高
全局引入
- App 主入口
vim new-bee/src/renderer/App.vue复制代码
- 引入
复制代码
- 查看效果
基于 webpack 爸爸的热部署,我们无需刷新浏览器,webpack 偷偷用 ws 更新了我们的内容。似乎很完美,但是也许大家发现了一个问题,我们通过浏览器渲染出来的 dom 就可以看到::
我们在主 APP 入口引入了头部布局, App.vue 是紧临 元素的正文元素,而这个程序所有页面、子路由全部都是 App.vue 入口的子集,说明全局引入布局会存在如下问题:
1、这个项目所有的项目都一定会带上 Header 组件渲染的内容 2、而且会影响在下期 《性能优化》中讲的 webpack 按需加载的性能。
当然可以再 Header 组件上书写逻辑条件,过滤指定的路由,但会破坏项目的易读性,难以维护
我个人是比较推荐第一种:按需引入的方式。
继续布局
- 照猫画虎写好 Footer
vim new-bee/src/renderer/components/layout/Footer.vue复制代码
复制代码
别忘了在 HelloWorld 引入一下
- 看看效果
- 看起来效果还不错,接下来是 Content(正文)部分
vim new-bee/src/renderer/components/layout/Content.vue复制代码
复制代码
-
看看效果
-
HelloWorld.vue 代码看起来是这样的
还算看得过去,我们继续参照图二
为 Content 制定 AD(广告) 组件。
vim new-bee/src/renderer/components/common/AD.vue复制代码
复制代码澳门皇家赌场上线啦
- 别忘了在 Content.vue 引入一下
......import AD from "@/components/common/AD";export default { name: "Content", components: { AD }, ... }复制代码
- 看下效果
- 对比一下我们之前 sketch 画的草图
差不多完成了我们初步的构思
总结
至此页面布局和组件的引用大概讲述完了,相信大家可以举一反三,写好自己的小网站,其中更复杂的嵌套方式不再讲了,大家直接去看项目吧。
作者的话
其实这个项目老早就是今天这个样子了,只是一直在下班后写教程,耽误了进度,写教程也不是复制粘贴,首先要保障准确性,而不是删删改改草草了事,想写出好的教程只能换位思考,以小白的身份,从 CLI 、头到尾一行代码一行代码堆上去。相信写到现在一部分人对前端也有了一些新的认识,前端已经不是引入一个 JQuery.js、Vue.js 去写脚本的时代了 (Angular 已经有 IOC 了),作为一个后端,前端初步就带大家玩到这里了,Electron 以后大家直接去看项目吧,没什么好讲的,下一章会单独讲解一章终章《前端性能优化》大概涉及: webpack按需加载 、gZip、CDN、没钱买服务器如何调试小程序等 Tips ,本教程全栈方向的,下一步还有后端微服务、消息队列、docker、docker-compose/rancher 模拟集群、运维 等几个点,以后会加快进度的,尽量新年之前写完全部内容。
关于回复
新发布的文章前两天其实我都会去掘金大家的评论我都会看,但是你能想象得到吗,掘金消息提醒没有分类 :点赞 | 回复 |
大家的消息就是在无尽的滚动条中石沉大海了,之后也就懒得看了,评论找不到我可以去 各个文章下面留言提问,或者勘误,为后人铺路,新文章也会先发到这里一天请大家勘误,star 不 star 无所谓了,谢谢大家。