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 相关文章推荐
网站接入QQ登录的两种方法
Jul 22 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
Oct 10 Javascript
javascript文本框内输入文字倒计数的方法
Feb 24 Javascript
四种参数传递的形式——URL,超链接,js,form表单
Jul 24 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
Dec 29 Javascript
图片懒加载插件实例分享(含解析)
Jan 09 Javascript
利用Javascript实现简单的转盘抽奖
Feb 13 Javascript
WebSocket实现简单客服聊天系统
May 12 Javascript
angularjs实现table增加tr的方法
Feb 27 Javascript
详解Vue template 如何支持多个根结点
Feb 10 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
Jul 27 Javascript
Swiper实现导航栏滚动效果
Oct 16 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
一家之言的经验之谈php+mysql扎实个人基本功
2008/03/27 PHP
php异常处理技术,顶级异常处理器
2012/06/13 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
php生成动态验证码gif图片
2015/10/19 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
javascript引用对象的方法代码
2007/08/13 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
简单实现js倒计时功能
2017/02/13 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
Python 调用DLL操作抄表机
2009/01/12 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
Python中 map()函数的用法详解
2018/07/10 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
python中自带的三个装饰器的实现
2019/11/08 Python
iPython pylab模式启动方式
2020/04/24 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
幼儿园元旦活动感言
2014/03/02 职场文书
青春演讲稿范文
2014/05/08 职场文书
红楼梦读书笔记
2015/06/25 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
Pandas数据结构之Series的使用
2022/03/31 Python