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 相关文章推荐
关于Aptana Studio生成自动备份文件的解决办法
Dec 23 Javascript
同时使用n个window onload加载实例介绍
Apr 25 Javascript
javascript中使用正则计算中文长度的例子
Apr 29 Javascript
jQuery中:selected选择器用法实例
Jan 04 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
Feb 25 Javascript
JavaScript中将数组进行合并的基本方法讲解
Mar 07 Javascript
纯js实现瀑布流布局及ajax动态新增数据
Apr 07 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
Jul 27 Javascript
JavaScript实现垂直向上无缝滚动特效代码
Nov 23 Javascript
javascript实现一个网页加载进度loading
Jan 04 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
vue使用require.context实现动态注册路由
Dec 25 Vue.js
浅析四种常见的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 setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
php常用文件操作函数汇总
2014/11/22 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
javascript 播放器 控制
2007/01/22 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
script标签属性用type还是language
2015/01/21 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
对python判断是否回文数的实例详解
2019/02/08 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Python全栈之列表数据类型详解
2019/10/01 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
PyQt实现计数器的方法示例
2021/01/18 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
建筑公司文秘岗位职责
2013/11/29 职场文书
奥运会口号
2014/06/13 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
2014年少先队工作总结
2014/12/03 职场文书
创卫工作总结2015
2015/04/22 职场文书
2015年行政部工作总结
2015/04/28 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
起诉书范文
2015/05/20 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python