老莫的笔记本  
  
请选择 进入手机版 | 继续访问电脑版
查看: 790|回复: 0

Express使用心得

[复制链接]

584

主题

782

帖子

3743

积分

超级版主

Rank: 8Rank: 8

积分
3743
发表于 2018-4-27 15:02:05 | 显示全部楼层 |阅读模式
在学习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
·  nunjunks
    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键,而不能用空格代替,不然会一直报错。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表