Node.js与Sails ~项目结构与Mvc实现及日志机制


Posted in Javascript onOctober 14, 2015

本文首先从sails的安装讲起接下来介绍node.js与Sails的日志机制,小伙伴们已经迫不及待要看下文了吧,好吧。

Sails是一个Node.js的中间件架构,帮助我们很方便的构建WEB应用程序,网址:http://www.sailsjs.org/,它主要是在Express框架的基础上发展起来的,扩展了新的功能组件,下面我们来看一下安装方法

一 安装Sails

npm -g install sails

二 建立一个Sails的项目

sails new testProject

三 启动项目

cd testProject
sails lift

四 项目的结构,基于MVC理念

Node.js与Sails ~项目结构与Mvc实现及日志机制

我们可以看到它与是由model,view,controller组成,它们之间的调用关系与.net mvc十分类似,只不过.net mvc里的model主要是指viewmodel,而在sails里model主要是数据模型,即.net里的Entity,它是数据表的一种抽象,对于数据的持久化,sails提供了很多种,如本地文件,mysql,mongodb,redis等,对于sqlserver我们也可以找到第三方的组件。

五 通过controller的action来渲染视图

我们在.net mvc里,大家都知道视图是通过action的render方法进行渲染的,其时sails也是这样的,可以使用原生的render,也可以使用封装好的view方法,而在视图上直接使用你的action返回的对象即可。

controller/action的内容

module.exports={
  index: function (req, res){
    return res.view("test/index",{title:"大叔",engTitle:"Lind"});
    //return res.view("view_name",data)//view_name参数为空表示用当前的action
  }
};

view-ejs的内容

<p>从action返回的对象-title:<%=title%></p>
<p>从action返回的对象-engTitle:<%=engTitle%></p>

调用的结果如下

Node.js与Sails ~项目结构与Mvc实现及日志机制

如果进入index页面可以直接写控制器名称

Node.js与Sails ~项目结构与Mvc实现及日志机制

如果其它action希望走/test这样的路由,需要在config/route.js里进行配置,如为add这个action添加路由为/user,它的设置如

'get /user': {view: 'user/add',locals: {layout: null}},
'get /test':{view:'test/index',locals:{layout:null}}

好了,到这样一个最简单的MVC的DEMO就做好了,下一节我们将引用Model,即数据持久化的机制,进行对数据表的curd操作,敬请期待...

ps:Node.js与Sails~日志机制

看到Sails的日志就会想起来log4net,确实它们在很多地方是相似的,都是采用分级别记录的方式,而sails我觉得在使用上更加方便,它不需要我们做多于的事情,直接sails.log.级别("你的日志内容")就搞定了,你不需要关心什么单例,或者持久化方式,Sails的日志只是对console.log的一种补充,可以理解为分了类之后的console.log,并有颜色的区分,呵呵。

一 我们来看一下sails.log的日志级别

Priority level Log fns visible
0 silent N/A
1 error .error()
2 warn .warn(), .error()
3 debug .debug(), .warn(), .error()
4 info .info(), .debug(), .warn(), .error()
5 verbose .verbose(), .info(), .debug(), .warn(), .error()
6 silly .silly(), .verbose(), .info(), .debug(), .warn(), .error()

二 开始测试我们的日志

        sails.log('debug日志!');//sails.log.debug("debug")
        sails.log.error('error日志!');
        sails.log.warn('warn日志!','request aborted.');
        sails.log.info('info日志!');
        sails.log.verbose('verbose日志!');
        sails.log.silly('silly日志!');

三 配置项目的日志级别,位于config/log.js

module.exports.log = {
   level: 'info'
};

四 从结果中看到,日志记录时,只记录比当前配置级别低的日志内容

Node.js与Sails ~项目结构与Mvc实现及日志机制

怎么样,sails的日志挺方便吧!

Javascript 相关文章推荐
推荐10个超棒的jQuery工具提示插件
Oct 11 Javascript
JS实现标签页效果(配合css)
Apr 03 Javascript
jQuery中after()方法用法实例
Dec 25 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
使用JS中的exec()方法构造正则表达式验证
Aug 01 Javascript
vue项目tween方法实现返回顶部的示例代码
Mar 02 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
vue项目前端埋点的实现
Mar 06 Javascript
layui数据表格跨行自动合并的例子
Sep 02 Javascript
微信小程序返回箭头跳转到指定页面实例解析
Oct 08 Javascript
js页面加载后执行的几种方式小结
Jan 30 Javascript
vue.config.js中配置Vue的路径别名的方法
Feb 11 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
Oct 14 #Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
Oct 14 #Javascript
JS更改select内option属性的方法
Oct 14 #Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
Oct 14 #Javascript
JS实现的最简Table选项卡效果
Oct 14 #Javascript
JS仿淘宝实现的简单滑动门效果代码
Oct 14 #Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 #Javascript
You might like
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
基于python实现微信模板消息
2015/12/21 Python
Python读取图片属性信息的实现方法
2016/09/11 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python实现数值积分方式
2019/11/20 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
python中pop()函数的语法与实例
2020/12/01 Python
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
车辆年检委托书范本
2014/10/14 职场文书
个人借条范本
2015/05/25 职场文书
课程设计感想范文
2015/08/11 职场文书