前言
博客内容的管理,与博客文章分类的管理基本上类似。都是分别有几个路由对应相应的功能,GET /admin/content 对应文章内容的首页,GET /admin/content/add 对应内容的添加,GET /admin/content/edit 是内容的修改编辑,GET /admin/content/delete 则为博客内容的删除路由。
博客内容的管理,与博客文章分类的管理基本上类似。都是分别有几个路由对应相应的功能,GET /admin/content 对应文章内容的首页,GET /admin/content/add 对应内容的添加,GET /admin/content/edit 是内容的修改编辑,GET /admin/content/delete 则为博客内容的删除路由。
模块化开发,主要是以提高代码的复用性,可维护性等。再这个博客项目中,到处体现有模块化开发的思想,如使用 MVC 的设计模式,路由的分文件处理等。在 ejs 模板引擎中,类似 jsp 一般可以将里面的各个内容分成不同的模块,然后再分别引入相关模块组成页面,这样一来就可以做到了代码的复用性,同时维护起来的成本也降低。
学习 Node.js 也有一段时间了,整个过程断断续续的,在学习过程中感觉内心还有点浮躁,所以就准备写一个 Node.js 的实战系列,让自己静下心来,同时这个过程也不断的巩固自己之前所学的知识,之后也方便自己进行知识回顾。
使用原生来写 POST 的处理, 比较复杂, 而且文件上传业务比较的难写, 所以肯定有人造好了相关的轮子, 也就是 Node.js 的第三方模块 formidable , 使用 formidable 当做中间件用来处理文件上传非常方便, 而且可以配合其他模块对文件进行相应的命名。
不过在对 formidable 学习过程中出现了一个问题, 就是上传文件时, form.parse() 回调函数中 files 对象是个空对象。 就排查了挺久, 然后就以为问题是出在服务器端的代码上, 百度上关于这个问题也是寥寥无几, 众说纷纭。 没想到最后是前台页面 form 表单的问题, 也就是在 <\form> 标签中我少写了一个 enctype 属性, 在使用包含文件上传控件的表单时,必须使用 enctype=”multipart/form-data” 也就是不对字符进行编码。
flex 是 css3 中新增的一种布局方式,也就是弹性盒模型布局。弹性盒子中子元素可以在各个方向上进行布局,并且能以弹性尺寸来适应空间。
而之前 css 标准中为我们提供了 3 中布局方案,也就是标准文档流布局、浮动布局、和定位布局。这几种布局方式搭配,可以搞定布局上常见的需求,但比如水平居中,和垂直居中,采用定位布局的方式,它不够语义化,并且不够灵活。所以在这种情况下,第 4 种布局方式:flex 布局就诞生了。它可以设置一个属性就能实现居中,并且可以随着窗口的缩放自适应。
使用 flex 布局的话,首先需要设置父元素的 display 的值为 flex 或 inline-flex,也就是定义一个弹性容器。flex 的核心概念就是 容器 和 轴,容器包含外层的父容器和内层的子容器,轴包括主轴和交叉轴,可以说 flex 布局的特性全都构建在这两个概念上。flex 布局涉及的 css 属性除了 display 的值为 flex 和 inline-flex 外,共有 12 个属性,其中,父容器和子容器各 6 个。不过,常用的属性只有 4 个,子容器和父容器各 2 个。
由于 JavaScript 并不是那些“传统意义上”的面向对象的语言, 它在 ES5 中并没有类的概念, 没有真正意义上的继承, 但我们去可以进行模拟, 来实现所谓的继承。
在 JavaScript 中, 实现继承的过程中总感觉很有趣, 至少在 ES5 中是这样的, ES5 中自己亲自要通过原型链去实现继承, 而在 ES6 中则将这些需要自己写的封装成了一个接口, 其本质上还是一样, 都是通过原型链实现继承。
Update your browser to view this website correctly. Update my browser now