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 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
javascript中文本框中输入法切换的问题
Dec 10 Javascript
js检测网络是否具体连接功能的代码
May 23 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
Dec 08 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
Aug 27 Javascript
PHP捕捉异常中断的方法
Oct 24 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
Dec 30 Javascript
Vue代码整洁之去重方法整理
Aug 06 Javascript
微信小程序可滑动月日历组件使用详解
Oct 21 Javascript
详解react组件通讯方式(多种)
May 06 Javascript
微信小程序订阅消息(java后端实现)开发
Jun 01 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 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
一个简单的MySQL数据浏览器
2006/10/09 PHP
PHP+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
php过滤表单提交的html等危险代码
2014/11/03 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
JS的反射问题
2010/04/07 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
2016/05/30 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python import用法以及与from...import的区别
2015/05/28 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
python 安装impala包步骤
2020/03/28 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
平面设计师工作职责范文
2013/12/03 职场文书
开工庆典邀请函范文
2014/01/16 职场文书
前处理班长职位说明书
2014/03/01 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
领导新年致辞2016
2015/07/29 职场文书
岗位聘任协议书
2015/09/21 职场文书
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript