Nodejs WEB开发常用库和框架
我在Nodejs的体系里也算泡了很久了,的确非常喜欢javascript和Nodejs. 在我看来,用nodejs做web开发有以下几个优点:
- Javascript作为一个语法异常简单的脚本语言,约束较少,开发效率比较高.
- Nodejs在设计时就考虑了依赖管理,有一个成熟的npm机制,在使用过程中很少遇到版本问题.
- Javascript的语法非常灵活,而且它的基于prototype的链式集成机制,obj[property]和obj.property的混用可以创造出很多变化.
- 对于JSON的天然支持
- 原生的异步编程机制和单线程的工作方式,因此不像同步模型需要锁等机制
- javascript可以让前后端开发语言统一,现在不少框架把网络通讯层进行了封装.前后端的区别更加模糊.
特别是现在前端的逻辑越来越复杂,单页面的web app程序越来越流行. 相信Nodejs会被更多的互联网公司接受.
这篇文章简单记录下我经常用到的一些库或者框架,仅供参考.
标准LIB
path
path库最常用的就是path.join了,另外path.extname也经常能用到. path和require机制配合可以做模块的动态加载等一些功能.
fs
fs是nodejs的文件管理模块,常用的几套api有:
- readFile[Sync], writeFile[Sync]等用来读取文件内容的.
- lstat, stat和isDirectory, isFile等API结合来判断文件/文件夹结构,目录等
- createReadStream, createWriteStream获取读写流.
request
request库用来发送Http请求,Nodejs的网络lib库建议还是仔细阅读一下nodejs的官方文档.
常用LIB
Q
因为Javascript的异步机制,使得写出来的程序往往是一层一层的callback嵌套,代码的可读性和维护性都很差. 而Promise的出现使得我们可以更加直观简洁的去处理异步编程.
数据库
mongoose
mongo数据库在WEB编程里大行其道. 我喜欢用mongo的最重要原因就是sql数据库太麻烦,需要严格的设计数据库,然后所有操作都需要去拼接SQL. 而mongo的数据就是类json对象,非常适合快速开发.
mongoose是nodejs的一个mongo驱动,通过定义Schema和Model,mongoose可以帮开发者管理数据库连接,数据写入读取等. 另外结合Schema和Model可以进一步直接封装出Restful Service.
nedb
对于程序员,没有最懒,只有更懒.毕竟Mongo数据库还需要单独建立,然后去连接,在快速开发时,我偶尔会使用nedb. 这是一个nosql版的sqlite, 数据库直接以文件形式存储,非常适合快速的原型开发.
WEB Server
express
express貌似成了nodejs web项目的基准了吧,貌似也有一些类似的框架,但是express是毫无疑问的主流.
express里目前我最常用到的就是基本的router,jade渲染机制,另外还有一些辅助库.
passport
web最基本的功能就是用户登录, passport就是常用的用户登录库,另外它还提供了与各个网页的oauth对接功能.
formidable
express4已经集成了bodyparser等一些基本中间件. 不过formidable还是值得一用,专门对文件上传进行了优化.
node-restify-mongoose
随着业务逻辑很多转移到前端,后端系统往往只作为一个data server.
node-restify-mongoose使开发者仅仅通过定义数据schema就可以搭建出restful service.
winston
winston是用来做log的, 通过定义transport以及log level,可以很方便的切换不同的log等级,以及log输出方式(文件,屏幕等).
测试
mocha
karma
Nodejs WEB开发常用库和框架的更多相关文章
- iOS开发-常用第三方开源框架介绍
iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网 ...
- 10个用于Web开发的最好 Python 框架
Python 是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准 库也是值得大家称赞的,Python甚至还 ...
- web开发常用图片格式
web开发常用图片格式有:gif jpg/jpeg png gif:图片压缩率高,可以显示动画,但是只能显示256色,可能造成颜色丢失. jpg:图片压缩率高(有损压缩),可以用小文件来显示 ...
- 2015年10个最佳Web开发JavaScript库
2015年10个最佳Web开发JavaScript库 现在的互联网可谓是无所不有,有大量的JavaScript项目开发工具充斥于网络中.我们可以参考网上的指导来获取构建代码项目的各种必要信息.如果你是 ...
- iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)--(转)
图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. 下 ...
- 10款Web开发最佳的Python框架
Python是跻身于当代IT世界最流行和代码最高效的编程语言之一.Python框架能帮助你快速启动Web应用. 1.CubicWeb CubicWeb的最重要的功能是其代码的可重用性,由一个个代码单元 ...
- 我在ubuntu桌面系统下进行WEB开发常用的软件
公司电脑本来是win系统的,不知道怎么突然中毒了,由于比较讨厌杀毒软件,所以之前都被我卸载掉了,所以我干脆重装了一个ubuntu系统 1.IDE vscode 各种插件,自带Git,markdo ...
- 在做java 的web开发,为什么要使用框架
现在做项目都会使用框架,现在很常见的框架就是SSH(Struts+SpringMVC+spring+hibernate),SSM(Struts/springMVC+Spring+Hibernate), ...
- Firefox上Web开发工具库一览
Firefox的目标之一就是尽可能地使web开发者的生活更简单高效,并通过提供工具和具有很强扩展性的浏览器使人们创造出神奇的东西.使web开发者使用Firefox的时候,浏览器可以提供大量开发工具和选 ...
随机推荐
- Java Base64解析
最近在业务场景中,需要对第三方传递进来的字符进行base64解密,根据第三方文档提供的解析工具,对数据进行了解析,关于Base64的解析方式如下: String sign = "xxxxxx ...
- cxGrid 循环选择条目
Delphi DevExpress CxGrid 循环选择条目 整理出来的,直接复制粘贴即可使用 以下是从网络上复制粘帖到的,实践证明,利用以下代码进行获取选择行是错误的. 当我们利用 CxGrid进 ...
- DB2 SQL方式查看版本
SELECT service_level, fixpack_num FROM TABLE (sysproc.env_get_inst_info()) as INSTANCEINFO
- 【BZOJ4773】负环 倍增Floyd
[BZOJ4773]负环 Description 在忘记考虑负环之后,黎瑟的算法又出错了.对于边带权的有向图 G = (V, E),请找出一个点数最小的环,使得 环上的边权和为负数.保证图中不包含重边 ...
- CodeForces 670C Cinema(排序,离散化)
C. Cinema time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...
- mysql_表内容_操作
1.增 语法:insert into 表 (列名,列名...) values (值,值...) # 插入单条数据 insert into 表 (列名,列名...) values (值,值...) # ...
- 洛谷 P4451 [国家集训队]整数的lqp拆分
洛谷 这个题目是黑题,本来想打表的,但是表调不出来(我逊毙了)! 然后随便打了一个递推,凑出了样例, 竟然. 竟然.. 竟然... A了!!!!!!! 直接:\(f[i]=f[i-1]*2+f[i-2 ...
- Hibernate简单配置
1.配置构建路径,加载用户库,hibernate4.3.8 MySQL-Driver 2.写User.java 纯POJO+持久化注解=PO @Entity @Table(name=&quo ...
- 安全技能树简版 正式发布——BY 余弦(知道创宇)
之前留意到知道创宇发布的<知道创宇研发技能表>,对自己有很大的启发,最近听说知道创宇的余弦大神创业了(题外话),还发布了<安全技能树简版V1>,仔细研读之后总体感觉不那么复杂了 ...
- android studio中取消关联git
Android studio取消关联Git 步骤如下 settings->version control 这里是已经取消关联的 如果关联 按住减号即可