在学习Express框架之前,只知道Express是基于nodejs的web开发框架,相关的还有Koa框架等其他一些基于nodejs的框架。通过这几天的学习,对它有了一定的了解。下面是我的一些感想:
第一天学习的时候,先进入nodejs官网,下载一个nodejs,然后按照Express的官网,完整的过了一遍,但是对Express是做什么的,怎么用,还存在疑问,通过威哥的引导和浏览网上相关的文章,终于对它有了一些了解。下面是一个Express自动生成的架构目录,从目录大致可以看出:Express核心概念在于路由,中间件以及模板引擎,只要摸清楚了他们的原理,以及是做什么的,我觉得应该就差不多了。 express-demo tree ├── app.js # 应用的主入口 ├── bin # 启动脚本 ├── node_modules # 依赖的模块 ├── package.json # node模块的配置文件 ├── public # 静态资源,如css、js,img等存放的目录 ├── routes # 路由规则存放的目录 └── views # 模板文件存放的目录(模板引擎) 中间件:可以毫不夸张的说,在express应用中,一切皆中间件。各种应用逻辑,如cookie解析、会话处理、日志记录、权限校验等,都是通过中间件来完成的。 路由:负责寻址的。比如用户发送了个http请求,该定位到哪个资源,就是路由说了算。 模板引擎:负责视图动态渲染。 1. 路由,express主要支持四种类型的路由,字符串类型,字符串模式类型,正则表达式类型,参数类型,利于:
路由也可拆分,由于当路由规则复杂的时候,拆分就显得比较有好处了。 路由拆分前:
路由拆分后:
可以看出通过express.Router()进行了路由拆分,新增,修改路由都变得极为便利。 2. 中间件,分为两大类,应用级中间件和路由级中间件,两者的区别不容易说清楚,因为从本质来讲,两类中间件是完全等同的,只是使用场景不同。 应用级中间件:app.use()、app.METHODS()接口中使用的中间件。 路由级中间件:router.use()、router.METHODS()接口中使用的中间件。
3.模板引擎,这个概览,其实在学习express之前,完全不知道是什么。模板引擎其实蛮多的,例如下面一些: · jade · ejs · dust.js · dot · mustache · handlerbar Express默认是用的jade,除了jade,我还看了下ejs,对其他的一些模板并不是很清楚,个人觉得jade还是较好的,代码量较少,没有闭合标签,而且也比较直观,通过类似sass的tab行缩进来区分。而ejs是类似html的写法,只是传值用了《%,<%_ …等等一些标签。 在app.js中添加如下代码进行配置:
views:模板文件存放的位置,默认是在项目根目录下。 Viewengine:使用什么模板引擎,默认jade. 其实在项目中,一般一个页面都会拆分成n个部分,所以,一个页面并不是一个模板就搞定的,他可能需要多个,所以,就涉及到模板组合(include),模板继承(extends)以及模板扩展(block),后面两个一般都一起用。 在学习express中我遇到了,一些问题: 1. 启动express后,如何停掉? 通过ctrl+c 组合件停掉。 2. 当我改了js的时候,按F5页面没起作用? 原来改js后,必须重启,才起作用,而改css,模板文件的时候,直接手动刷新浏览器就起作用。 3. 再试着用jade写页面的时候,一直报错? 原来jade的行缩进展示,只能用tab键,而不能用空格代替,不然会一直报错。
|